JackCode ナビゲーションiGaming 製品を構築、ローンチ、拡張します。
言語を変更
実践ガイド

キャッシュとメッセージブローカー

ベッティングプラットフォームがRedis、 Kafka、 RabbitMQを使用する方法:加速、ストリーミング、スケーリング、フォールトトレランス。
専門家 ヒョードル・コロレフ

ベッティングシステムは高負荷で動作し、インスタントデータ処理が必要です。ライブベット、ストリーミングイベント、計算、インターフェイスをリアルタイムで同期する必要があります。そのため、キャッシングシステム(Redis)とメッセージブローカー(Kafka、 RabbitMQ)がアーキテクチャにおいて重要な役割を果たしています。ゲームプレイに不可欠な速度、安定性、スケーラビリティを提供します。

なぜ賭けにキャッシュが必要なのか

Redisは、以下のための高性能インメモリストレージとして使用されます:
  • キャッシュ一致、係数、イベントステータス
  • TTLデータストレージ(ベットタイマー、ライブアップデート)
  • ユーザーセッション、ショッピングカート、ストーリーへの迅速なアクセス
  • レート制限、賭け制限、不正防止
  • スローベースとインターフェイス間のバッファ

Redisは、マイクロサービス間のインスタントアラートのパブ/サブモードで使用されます。

メッセージブローカーが行うこと

KafkaとRabbitMQは、マイクロサービスと外部プロバイダ間のデータフローを管理します:
ユースケース カフカ(Kafka) RabbitMQ
スポーツイベントの流れ 高いスループット ボリュームによって制限されています
係数の更新 素晴らしいフィット感 キューに適しています
通知、アラート 過度に過剰に シンプルなシナリオで完璧
アナリティクスとロギング ClickHouseでのストリーミング より良いカフカまたはログコレクター

Kafka vs RabbitMQ-選択はタスクに依存します

[基準] カフカ(Kafka RabbitMQ
スループット 非常に高い(mln msg/sec) 平均(Average)
注文と注文 保証された サポートされています
メッセージストレージ 長期(ディスク上) 短期(メモリ/ディスク)
負荷管理 完全に拡張可能 インストールと構成が簡単
パーフェクトのために スレッド、ログ、リアルタイムAPI バックエンド、通知、キュー

建築ソリューションの例

Redis+PostgreSQL: データベースへのバックアップによるマッチの迅速な配信

Kafka+Goサービス: イベント受信と係数ストリーミング

RabbitMQ+ノード。js: ボーナス、フラフ、電子メールイベントの処理

Kafka→ClickHouse: ストリーミング分析、ライブベッティングトラッキング

それがプラットフォームに与えるもの

イベント応答-ミリ秒以内

キャッシュとキューを使用してDBとAPIをアンロードする

堅い結合なしのマイクロサービスのスケーラビリティ

信頼性向上: 障害はシステム全体に影響しません

リアルタイム分析とアラートを構築する機能


キャッシュとブローカーは、ベッティングシステムのリアルタイムコアです。Redisは、高速なデータアクセスを提供し、KafkaとRabbitMQがイベントフローを管理し、ライブロードでスケーラブルでフォールトトレラントで安定したプラットフォーム動作を可能にします。それらがなければ、今日、単一の深刻な賭けの製品を構築することはできません。