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