GH GambleHub

イベントストリーミングとリアルタイムデータ

(セクション: 技術とインフラ)

概要

イベントストリーミングは、それらが表示された時点でのイベントの処理と配信です。iGamingの場合、これはベット、預金、不正防止信号、責任あるゲーム制限、トーナメント表、個人オファーに対する即座の反応を意味します。ベースレンガ: イベントバス(Kafka/Pulsar)、ストリーミングエンジン(Flink/ksqlDB/Spark Structured Streaming)、トランザクションデータベース(Debezium)のCDC、 オンラインMLおよびリアルタイム分析のための機能ストア(materializalized viewビュー、outビュー、outview)

iGamingで重要なのはどこですか

不正防止とリスク:100〜300ミリ秒を超えるトランザクションのスコアリング、行動パターンの相関、ブロックとエスカレーション。
責任あるゲーム:制限制御、損失率、異常な動作-アラートとリアルタイムの自動制限。
支払い:ステータスバルブ、webhooks PSP、スマートリトライ、バランスプロジェクション、SLA 「time-to-wallet」。
ゲームイベント:トーナメントリーダーの計算(スライディングウィンドウ)、ライブゲームのラウンド、CRM/マーケティングのリアルタイムフィード。
パーソナライズ:オンライン機能(RFM、傾向)→トリガーキャンペーン、数秒以内にプッシュ/メール。
運用分析:p95/p99レイテンシ、ファネルステップ変換、プラットフォームの健康信号。

建築模型

ラムダvsカッパ

ラムダ:バッチ(DWH/ETL)+ストリーミング(操作)。プラス-柔軟性と「安い」bech;マイナスはダブルロジックです。
河童:雑誌(カフカ)の流れのようなものです。プラス-単一のコード、イベントリプレイ。マイナス-より厳しいインフラストラクチャ要件。

練習:重要なリアルタイム輪郭のために-Kappa;レポート/MLトレーニング-追加のバッチ回路。

イベントパイプライン(参考)

1.メーカー:賭け/決済サービスは、ドメインイベント(アウトボックス→カフカ)を公開します。
2.バス:Kafkaとキーによる部品('player_id'、 'bet_id')。
3.CDC: DebeziumはOLTP(バランス、制限)からストリームへの変更をプルします。
4.ストリーミング:Flink/ksqlDB/Spark-集計、ウィンドウ、CEP、 join's。
5.投影:実体化テーブル(Kafka Streams state store/ksqlDB tables/Redis)、 OLAP (ClickHouse/Druid)。
6.消費者:不正防止、CRM、通知、ダッシュボード、トリガーワークフロー。

データ契約とスキーマ

Avro/Protobuf+スキーマレジストリ:厳格な契約、下位互換性のある移行。
バージョン管理:'ドメイン。イベント。v {n}';変更を破ることを禁止します。
PII:トークン化/暗号化、マスキング、目的制限(GDPR)。

配信セマンティクスとidempotency

少なくとも1回は事実上の標準(重複は可能です)→idempotent-handlingが必要です。
正確に一度ストリーミング:Flink/StreamsのKafka+EOSトランザクションプロデューサー;より高価な、ポイント(お金/バランス)を適用します。
Outbox+CDC:サービスデータベースからの真実の単一のソース、二重書き込み保護。
Dedup: key ('idempotency_key')、 TTLによる重複除外テーブル、upsert/merge。

タイムウィンドウと「遅い」データ

Windows:
  • タンブリング-固定スロット(例えば、1分の革命)。
  • ホッピング-増分でスライド(例えば、1分単位で5分単位のウィンドウ)。
  • セッション-非アクティブ(プレイヤーセッション)。
  • 透かし:イベント時の処理、遅延、DLQ/サイド出力の避難。
  • CEP(複雑なイベント処理):パターン「3分でAからB」、 「M秒でNイベント」、「キャンセル/補償」。

ステータスとスケーリング

ステートフル演算子:aggregations/joynes hold state (RocksDBステートバックエンド)。
Changelogトピック:信頼性と状態回復。
背圧:自動速度制御、システムsink/外の限界。
キー分布:ヘビーヒッター→キー塩化、スキュー緩和。

モニタリングとSLO

ストリームSLO: p99エンドツーエンドのレイテンシー(例:≤ 2秒)、有効なコンシューマラグ、可用性≥ 99。9%.

メトリクス:スループット、パーティ別遅延、透かし遅延、ドロップ/レイトレシオ、バックプレッシャー、ビジータイムオペレータ、GC/JVM。
アラート:DLQの成長、透かしの遅れ、EOSチェックポイントの障害、オンライン/オフラインのrassinh機能。
トレース:producer-stream-consumerを介したcorelational ID ('trace_id'、 'message_id')。

安全性とコンプライアンス

TLS/MTLS、トピック/テーブルに関するACL/RBAC、機密ドメインのセグメンテーション(payment/CCM)。
トランジット/ディスク上のPII暗号化。Vault/SOPSの秘密。
データ保存と地域性:地域別ストレージ(EU、トルコ、LatAm)、削除ポリシー。
監査:公開/読み取り、スクリプトの再現性。

高可用性とDR

カフカ: '複製。factor ≥ 3'、'min。insync。replicas'、'acks=all'、 DRRのクロスリージョンレプリケーション(MM2)

Flink/Streams:コントロールリリースの定期チェックポイント+セーブポイント;HA-JobManager。
OLAP:セグメントレプリケーション、読み取りレプリカ;フェイルオーバー(ゲーム日)テスト。

パフォーマンスとチューニング

生産者:butching ('linger。ms'、'バッチ。サイズ')、圧縮(lz4/zstd)。
消費者:正しい'最高。投票。「インターバル」、バックオフ中のパーティーの一時停止。
パーティショニング:ターゲットTPSと並列性からパーティーをカウントします。
状態:RocksDBオプション(ブロックキャッシュ/書き込みバッファ)、NVMe/IOPS、ピン留め。
ネットワーク:10/25G、 TCPチューニング、n+1シンク要求封じ込め。

実装: キーテクノロジー

Shina: Apache Kafka (Pulsar、 Redpanda)。

ストリーミング: Apache Flink、 Kafkaストリーム、ksqlDB、スパーク構造ストリーミング

CDC: Debezium (MySQL/Postgres)、 Outboxコネクタ。
投影リポジトリ:ksqlDBテーブル、Kafka Streamsステートストア、低遅延のためのRedis、 OLAP用のClickHouse/Druid/Pinot。
Fichestor:ごちそうまたは自分の-オンライン(Redis)+オフライン(Parquet/BigQuery)、一貫性の保証。

デザインパターン

Outbox→Kafka: DBトランザクションからの各ドメインイベント。
Sagas:イベントによる補償;ストリームによるオーケストレーション。
ファンアウト:1つのイベント→不正防止、CRM、分析、通知。
実体化ビュー:リーダーボード、バランス、制限-ストリームから更新されるテーブルの形で。
再処理:集計/レトロ分析の再計算のためのトピカルの再現。

例(コンセプト)

ksqlDB: トーナメントリーダー(スライディングウィンドウ)

sql
CREATE STREAM bets_src (
bet_id VARCHAR KEY,
player_id VARCHAR,
amount DOUBLE,
ts BIGINT
) WITH (KAFKA_TOPIC='bets. placed. v1', VALUE_FORMAT='AVRO', TIMESTAMP='ts');

CREATE TABLE leaderboard AS
SELECT player_id,
SUM(amount) AS total_stake,
WINDOWSTART AS win_start,
WINDOWEND  AS win_end
FROM bets_src
WINDOW HOPPING (SIZE 10 MINUTES, ADVANCE BY 1 MINUTE)
GROUP BY player_id
EMIT CHANGES;

Flink(疑似コード): 遅延イベントによる不正防止スコア

java stream
.assignTimestampsAndWatermarks(WatermarkStrategy. forBoundedOutOfOrderness(Duration. ofSeconds(10)))
.keyBy(e -> e. playerId)
.window(SlidingEventTimeWindows. of(Time. minutes(5), Time. minutes(1)))
.aggregate(scoreFunction, processWindow)
.sideOutputLateData(lateTag)
.addSink(riskTopic);

スレッド品質テスト

スキームと進化の契約テスト(スキーマレジストリ)。
ロード:ターゲットTPS、 p99、シンク劣化挙動。
失敗/カオス:ブローカー/ノードのドロップ、ネットワーク遅延、スプリットブレイン。
決定論的なリプレイ-トピック→同じ結果を再実行します。
カナリアストリーム:遅延と整合性をチェックするためのループ。

実装チェックリスト

1.SLO (p99 E2E ≤ X c、 lag ≤ Y、 availability ≥ Z)を定義します。
2.スキームとキーを標準化する(player_id/bet_id)。
3.[アーキテクチャ](クリティカルループのKappa)を選択します。
4.outbox+CDCを設定し、PIIを分離します。
5.ウィンドウ、ウォーターマーク、レイトポリシー、DLQ/サイド出力を設定します。
6.マネーパスでEOS/idempotencyを有効にします。
7.遅延、透かし、DLQの監視とアラートを紹介します。
8.HA/DRおよび再処理のプロシージャを提供して下さい。
9.Feature Storeを展開し、オンライン/オフラインで同期します。
10.ゲームデーを過ごす:失敗と回復を解決する。

アンチパターン

意識のないイベントタイムと処理時間を混在させる。
スキーマガバナンス→「breaking」リリースの欠如。
後半のデータとホットキーを無視します。
リプレイ戦略の欠如とトピックのバージョニング。
idempotencyおよびEOSのない料金/支払。

概要

リアルタイムストリーミングは「別のトランスポート」ではなく、ドメインイベント、明確なSLO、データ契約、ウィンドウとステータス、セキュリティと観測性などの考え方です。iGamingの場合、持続可能なセットはKafka+Flink/ksqlDB+Debezium+Materialized Views+Feature Storeです。これは、負荷が増加するにつれて、ミリ秒の反応、オンライン/オフラインの分析の一貫性、制御された複雑さをもたらします。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。