Підключення ігор з прогресивними джекпотами

Вступ

Прогресивні джекпоти накопичують частину ставок всіх гравців в єдиному пулі, який росте до тих пір, поки не буде зірваний щасливим учасником. Інтеграція таких ігор вимагає окремого модуля обліку ставок, атомарного розрахунку чергового значення пулу, синхронізації між провайдерами і чіткої логіки виплат.

1. Архітектура пулу прогресивного джекпоту

1. Джекпот-сервіс (Jackpot Service)

Окремий мікросервіс з REST/gRPC API:
  • 'GET/jackpot/{ id}'→ поточний розмір пулу і метадані.
  • 'POST/jackpot/{ id }/contribute'→ прийом частки ставки.
  • 'POST/jackpot/{ id }/award'→ виплатити джекпот переможцю.
  • Зберігає колекцію джекпотів в базі (PostgreSQL) і кеш в Redis для швидкого читання.
  • 2. Пул ставок

Структура таблиці'jackpot _ contributions':
  • ```sql
  • [id, jackpot_id, game_id, amount, timestamp]
  • ```
  • Агрегує «feed» вкладів в реальному часі через Kafka topic'jackpot. events`.
  • 3. Параметри розподілу

Фіксована ставка-відсоток (наприклад, 0. 5%) від кожної ставки йде в пул.
Підтримка декількох рівнів (local, shared, mega) з різними відсотками і умовами спрацьовування.

2. Інтеграція з ігровими рушіями

1. API-виклик на спин

При кожному спині GameService робить:
  • ```http
  • POST /jackpot/{jackpotId}/contribute
  • { "gameId": "...", "amount": 2. 50 }
  • ```
  • Джекпот-сервіс підтверджує прийом і повертає новий розмір пулу.
  • 2. Подія виграшу

Провайдер генерує подію'jackpotHit'з даними: `{ playerId, jackpotId, sessionId }`.
TournamentService або BetService викликає'POST/jackpot/{ id }/award'і проводить payout транзакцію.
3. Atomic payout

Всередині Jackpot Service award-операція і транзакція по виплаті в Transaction Service виконуються в ACID-транзакції для виключення подвійних виплат.

3. Розрахунки і контроль цілісності

Щогодинної звірки через batch-job: порівняння суми вкладів і нарахувань джекпоту в таблицях «contributions» і «awards».
Lock-in snapshot: на момент виграшу пул фіксується в окремому полі'awardedAmount', щоб зростання джекпоту не заважало розрахункам.
Налаштування помилок: ручний rollback award-транзакції через admin UI, але тільки в режимі audit.

4. Моніторинг та алерти

Метрики Prometheus:
  • `jackpot_contribute_total`, `jackpot_award_total`, `jackpot_current_value`.
  • `jackpot_processing_latency` (p95).
  • Дашборд Grafana: графік зростання пулів, частота спрацьовувань, топ-5 ігор за вкладами.
  • Alerting: оповіщення при

затримці обробки> 500 ms,
розбіжності batch-звірки> 0. 1 %,
різкому зростанні або падінні вкладів.

5. Безпека та відповідність

HMAC-підпис всіх запитів до Jackpot Service, nonce і timestamp для захисту від підробки.
RBAC: тільки GameService і Admin UI мають права на contribute/award, інші ролі - readonly'GET/jackpot'.
Audit Trail: кожна операція write логується в WORM-сховищі S3, зберігання мінімум 5 років за регуляціями.

6. Масштабування та відмовостійкість

Stateless сервіс: горизонтальне масштабування Jackpot Service по CPU/latency з Kubernetes HPA.
Redis Cluster Sentinel: кеш пулів і блокувань на award, автоматичне перемикання на резерв при збої.
Kafka Consumer Groups: паралельна обробка подій вкладів з гарантією «рівно-один» (exactly-once) через idempotency-ключі.

7. UI-компоненти та сповіщення

Frontend: динамічна мітка поточного джекпоту на лобі та сторінці гри, оновлюється через WebSocket канал '/ws/jackpot/{ id}'.
Push-повідомлення: при досягненні порогу (наприклад, 80% від поточного MaxValue), Telegram-бот або WebApp шле гравцям повідомлення.
Animation FX: прогрес-бар на сторінці гри і лобі, візуальні ефекти при спрацьовуванні.

Висновок

Інтеграція прогресивних джекпотів в онлайн-казино - комплексне завдання, що включає окремий мікросервіс накопичення ставок, атомарні payout-транзакції, real-time оновлення UI, надійний моніторинг і масштабовану архітектуру. Правильна реалізація забезпечує чесність, прозорість і стійкість джекпот-механіки при пікових навантаженнях.