最終更新:
ヒョードル・コロレフ
賭けプラットフォームでキャッシュとメッセージブローカーを使用する
Click to expand / collapse

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


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

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

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


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

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

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

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

建築ソリューションの例

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

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

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

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


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

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

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

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

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

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


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

人気トピック


主なトピック