Live betting — тысячи событий в секунду, latency <300ms на accept bet. Архитектура: ingest → normalize → cache → push → bet service with snapshot odds.

Ingestion
- Provider feed (TCP/AMQP)
- Dedup by event version
- Stale odds rejection
Fan-out
Redis pub/sub or dedicated odds service. WebSocket gateway horizontal scale.
Bet accept
- Snapshot odds at bet time stored immutably
- Risk limits per event/market
- Graceful degrade if feed lag > N sec

Чеклист
- Load test peak match
- Circuit breaker on feed
- Monitoring feed delay
Degrade mode
При lag feed > N секунд: suspend accept на affected markets, показывать stale badge, не принимать in-play до recovery.
Load test сценарий
Симулируйте финал ЛЧ: 50k concurrent WS, 2k bets/sec на топ-матч. Проверьте odds snapshot immutability и что risk limits не дают принять bet после suspend.
Capacity plan обновляйте после каждого пикового события и храните baseline метрик feed delay и accept latency.
Odds snapshot при accept
Bet payload хранит marketId, selectionId, price, feedVersion, timestamp. Accept отклоняется если feedVersion устарел или price drift > tolerance. Immutable storage для dispute с игроком и регулятором.
Horizontal scale: odds service stateless, Redis cluster для hot markets, WS gateway с sticky или pub/sub fan-out. Load test перед Champions League обязателен, не опционален.
Risk limits per market
Trading desk задаёт max liability per selection; bet service проверяет cumulative exposure до accept. При превышении — auto suspend market или partial accept до лимита, с алертом trading.
Перед пиковым событием
- Load test: WS connections + bet accept RPS
- Мониторинг feed delay и stale odds reject rate
- Degrade mode: suspend in-play при lag > N sec
- Immutable odds snapshot в каждом accepted bet