Прогрессивті джекпотпен ойындарды қосу

Кіріспе

Прогрессивті джекпоттар барлық ойыншылардың ставкаларының бір бөлігін бір пулға жинайды, ол сәтті қатысушы бұзылғанға дейін өседі. Мұндай ойындарды біріктіру мөлшерлемелерді есептеудің жеке модулін, пулдың кезекті мәнін атомарлық есептеуді, провайдерлер арасындағы синхрондауды және нақты төлем логикасын талап етеді.

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. Артқы шақыру

GameService әрбір арқасында:
  • ```http
  • POST /jackpot/{jackpotId}/contribute
  • { "gameId": "...", "amount": 2. 50 }
  • ```
  • Джекпот-сервис қабылдауды растайды және пулдың жаңа өлшемін қайтарады.
  • 2. Ұтыс оқиғасы

Провайдер 'jackpotHit' оқиғасын '{playerId, jackpotId, sessionId}' деректерімен жасайды.
TournamentService немесе BetService 'POST/jackpot/{ id }/award' шақырады және транзакция жасайды.
3. Atomic payout

Jackpot Service award ішінде - транзакция және Transaction Service төлем бойынша транзакция қосарланған төлемдерді болдырмау үшін ACID-транзакцияда орындалады.

3. Есептеулер және тұтастықты бақылау

batch-job арқылы сағат сайынғы салыстыру: 'contributions' және 'awards' кестелеріндегі салымдар мен джекпот есептеулерінің сомасын салыстыру.
Lock-in snapshot: ұтыс сәтінде пул жеке 'awardedAmount' өрісіне тіркеледі, сондықтан джекпоттың өсуі есеп айырысуға кедергі келтірмейді.
Қателерді түзету: қолмен жасалған rollback award-транзакциялар admin UI арқылы, бірақ тек аудит режимінде.

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 операциясы S3 WORM-қоймасында логикаланады, реттеу бойынша кемінде 5 жыл сақталады.

6. Масштабтау және істен шығу тұрақтылығы

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

7. UI-компоненттер және хабарламалар

Frontend: ағымдағы джекпоттың динамикалық белгісі лобби мен ойын бетінде, WebSocket арнасы арқылы жаңартылады '/ws/jackpot/{ id} '.
Push-хабарламалар: шегіне жеткенде (мысалы, ағымдағы MaxValue 80%), Telegram-бот немесе WebApp ойыншыларға хабар жібереді.
Animation FX: ойын және лобби бетіндегі прогресс-бар, іске қосылған кездегі визуалды әсерлер.

Қорытынды

Прогрессивті джекпоттарды онлайн-казиноға біріктіру - жеке мөлшерлеме жинақтау микросервисін, атомарлық payout-транзакцияларды, UI-ді real-time жаңартуды, сенімді мониторинг пен масштабталатын архитектураны қамтитын кешенді міндет. Дұрыс іске асыру ең жоғары жүктемелер кезінде джекпот-механиканың адалдығын, ашықтығын және орнықтылығын қамтамасыз етеді.