Rely on ticker and TTL instead of KeepAlive
CI / test (push) Successful in 1m32s
Details
CI / test (push) Successful in 1m32s
Details
This commit is contained in:
parent
67d48b11d3
commit
82fb1027f3
|
|
@ -260,10 +260,10 @@ Solution — **`server/Vanguard.slnx`**, не `.sln`.
|
|||
Включённый режим поднимает silo с localhost-clustering в том же процессе
|
||||
(`Orleans:SiloPort` / `GatewayPort`, по умолчанию 11111/30000);
|
||||
`MatchActorGrain` держит доменный `MatchGrain`, `IMatchConnectionRegistry`
|
||||
остаётся в процессе. Граны `[KeepAlive]`: WebSocket нельзя потерять при
|
||||
выгрузке; завершённые матчи выгружаются после `CompletedMatchTtlSeconds`.
|
||||
Один silo на инстанс; для нескольких реплик нужен настоящий кластер и
|
||||
внешний реестр соединений. Тест кластера — `OrleansMatchTests`.
|
||||
остаётся в процессе. Активный матч держится тикером, завершённые матчи
|
||||
выгружаются после `CompletedMatchTtlSeconds`; страховочный CollectionAge
|
||||
12 часов. Один silo на инстанс; для нескольких реплик нужен настоящий
|
||||
кластер и внешний реестр соединений. Тест кластера — `OrleansMatchTests`.
|
||||
- **Docker**: `Dockerfile` + `docker-compose.yml` поднимают postgres, redis
|
||||
(AOF) и сервер; `/health` на `http://localhost:8080` (порт меняется
|
||||
через `VANGUARD_PORT`, адрес WebSocket — `VANGUARD_WS_URL`).
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using Microsoft.Extensions.Logging;
|
||||
using Orleans;
|
||||
using Orleans.Concurrency;
|
||||
using Vanguard.Rules.Cards;
|
||||
using Vanguard.Server.Configuration;
|
||||
using Vanguard.Server.Storage;
|
||||
|
|
@ -13,11 +12,9 @@ namespace Vanguard.Server.Matches.Orleans;
|
|||
/// <see cref="MatchGrain"/>; этот класс отвечает за активацию, восстановление
|
||||
/// из хранилища и сериализуемую границу Orleans.
|
||||
///
|
||||
/// [KeepAlive] важен: если Orleans выгрузит грана, живые WebSocket-соединения
|
||||
/// останутся в реестре без владельца. Долгоживущие матчи и так ограничены TTL,
|
||||
/// а после рестарта сервера поднимаются из снапшота.
|
||||
/// Активный матч держится тикером (раз в секунду), а завершённый явно
|
||||
/// выгружается после TTL. Страховочный CollectionAge — 12 часов.
|
||||
/// </summary>
|
||||
[KeepAlive]
|
||||
public sealed class MatchActorGrain : Grain, IMatchActor
|
||||
{
|
||||
private readonly CardCatalog _catalog;
|
||||
|
|
|
|||
Loading…
Reference in New Issue