リアルタイム評価:テクニカルアーキテクチャ
リアルタイム評価は、正直さ、監査性、経済的管理性を維持しながら、数百万のゲームイベントを数百ミリ秒間で更新されたポジションに変えるサービスのバンドルです。以下は、要件から運用までの実用的なコンストラクタです。
1)要件と目標
UIへのレイテンシ:イベント到着からポジションアップデートまで200-300 ms p95を≤します。
正確さ:負荷および失敗の間の「最もよいN 「/divisions/tie-breakの正しいオフセット。
空室状況:≥ 99。トーナメント期間の9%。完全性の損失のない劣化。
Idempotency:「正確に一度」発生レベルで「、少なくとも一度」輸送中。
スケール:地域/部門/チーム(ボール上のトップK)による水平成長。
監査:ルール、イベント、料金および問題の変更できないログ。
2)システム図(10,000ftレベル)
→Event Ingest→Scoring Engine→Stream Aggregator (Top-K/Top-M)→Write-Optimized Store→Hot Cache/Edge→UI/Comms→Rewards/Claim
Фоново: Snapshotter、不正防止/RG、アナリティクス&A/B、監査/オブザビリティ。
3)イベントインジェスト
タスク:重複、バースト、ネットワーク損失に対する保護。
Idempotency:各イベントには'event_uuid'があります。「seen/accrued」チェック。
配信セマンティクス:トランスポート-少なくとも1回、ポイント会計-正確に1回。
Backpressure:動的バッチを持つキュー;過負荷で-「アクティブ」ツアーの優先順位付け。
時間ウィンドウ:遅延イベントを許可する(例えば、最大90秒)-「再計算ウィンドウ」にルーティングします。
時間:クライアント上のサーバUTC-ロケールマッピングのみ。
4)スコアリングエンジン
原則:バージョン管理されたルール、アンチペイツーウィン、簡単なロールバック。
バージョン管理:'rule_set_id'+feature-flags per-region/division。
モデル:multiplier ('Score=round (100log2 (Win/Bet+1))')、 win-based with log-curve、 wager-based (background metaのみ)。
オフセット「最高のN「:プレーヤー/日/ツアーあたりのトップN構造を維持します。summation/medianをフォーマットで指定します。
例外:ボーナスファンドのcoef_bonus ≤ 0。5'または'0';スピン/日あたりのキャップ。プロバイダごとのクォータ。
タイブレーク:1)最終的な速度の以前の達成;2)より大きな多様性;3)決定論的な種。
5)ストリームアグリゲーションとトップK
目標:セット全体をスキャンせずに位置を素早く再計算すること。
6)貯蔵: write対read
書き込み最適化ストア:累積ログ、ベストN状態、タイブレーク、メタデータ(レコード/更新のみ)。
Read-optimized store (Query): UIの「showcases」を非正規化:トップ100、 「my position」、 「top of the day/division」、チームへの貢献。
スナップショット:リーダーボードの1時間ごとの「スナップショット」;速いロールバック/再生、レポートおよび監査。
一貫性:広範なリストのための最終的な、「私の位置」のための読書あなたの書き込み。
7)現金とエッジ
ホットキャッシュ:最後のポジションとシャード上のプレイヤーのスコア。TTL 1-5秒;イベントによる障害。
Edge layer/CDN:静的ブロック、「cold」結果ページ、accrual logic。
フォールバック:劣化中-「ブロンズモード」:UIはX秒ごとに更新+重いウィジェットブロック。
8)時間、窓およびタイムゾーン
単一の「true」時間:サービスのUTC;UTCの締め切り。
ローカリゼーション-クライアント上の時間変換(ユーザーのタイムゾーン)。
境界:「ソフトウィンドウ」閉じる1-3ネットワークラグの分(T&C)。
私たちはワードクラスに行きます:クロックスキュー監視、NTPアラート、ドリフト測定。
9)遅延や重複したイベントへの対応
遅いイベント:「和解ウィンドウ」を維持します。ローカルで再計算+通知フィードからの位置の「落ち着いた」調整。
ダブルス:'event_uuid'+(プレイヤー、ゲーム、ベット、ts)狭いウィンドウで;雑誌「見た」。
Accrual idempotence-イベント→applied/rolled_backステータスでトランザクションを変更
10)不正防止およびRG(パイプラインに組み込まれている)
行動スコアリング:均一な間隔、超高速、「ノイズなし」-フラグ。
接続グラフ:一般的なデバイス/IP/支払い→クラスタ;表彰、手作業による検証を行います。
クォータとキャップ:N最高の試行/日、1スロット/プロバイダのクォータ、1スピン/日のキャップポイント。
ボーナス資金:オッズ/排除。
RG:ポイントは任意の限度内でのみ付与されます(時間/預金/損失)。ブレーク・リマインダー。
11)複数の地域および欠陥の許容
地域ごとの資産-資産:地域の破片+グローバル金庫;近接ルーティング。
RTO/RPO: RTO <15分(スナップショットでのフォールバック)、RPO=0(偶発的ログ再生)。
パーティション公差:ネットワークギャップの場合-ローカルリーダーボード、その後の統合とソフトポジション補正。
FXと通貨:賞品が異なる通貨の場合、変換の瞬間、FXバッファ1-3%を修正します。
12)セキュリティとプライバシー
データ:最小化(仮名、アグリゲーターのPIIなし)、暗号化「飛行中」および「休憩中」。
アクセス:最小権限の原則、KMSの秘密、アクセス監査。
T&C/管轄:ルール/バージョンログ、ジオブロック、年齢制限。
13)観測可能性とSREの実践
SLO: UI lag ≤ 300 ms p95、要求時間≤ 10分p95、稼働時間≥ 99。9%.
メトリクス:イベント/秒、テイク/拒否の割合、レイトレート、トップKヒープ成長、ストリームラグ、発生エラー、クレーム率。
トレース:ingest→scoring→cache→UI。
アラート:停止ボタン(重い実験を無効にする/Nを最良に減らす)、自動劣化。
Post-mortem: 24-48時間のRCA、アクションアイテムリスト、エラー予算ポリシー。
14)報酬と請求
自動賞:クローズイベントの場合-ポジションの計算、発行、領収書。
請求ウィンドウ:≤ 72時間、配達の再試行、支払いの決定的な順序。
透明性:プロファイル内の賞の履歴:ルール、時間、金額、ソース。
開催:KYC/AML前の希少/貴重な賞品。
15) A/B実験と回路の進化
テスト対象:N best (10/20)、1スピンあたりのキャップ(on/off)、多様性ボーナス(0/50/100)、集計タイプ(amount/median)。
ランダム化:region/channel/cluster-オーバーフローを避けます。
ガードレール:RTP、 苦情/10k、 RG信号-劣化しません。
マイグレーション:ストレージスキームの互換性、マイグレーション期間中のデュアルライト。
16) UXパターンのリアルタイム評価
評価センター:勝利のルール、タイマー、あなたのスコア、残りの試み、次の報酬。
ライブフィードバック:「x3のための+40ポイント」、「20のうち2つの試みは残った」、「あなたは3つの場所に登った」。
ショーケース:全体のトップ100、「私の位置」、「日/部門のトップ」、チームへの貢献。
A11y:コントラスト、多数、焦点状態、音声進行。
ローカライズ:ローカルTZの締め切り/タイマー、多言語主義。
17)頻繁な障害および劣化シナリオ
18)チェックリストの起動リアルタイム評価
ルール/経済学
- 式、トップN、タイブレーカー、分割
- RewardRate、 payout width、 wagers、 claim ≤ 72 h
設備・設備
- Idempotent Ingest、 Late-window、 Sharding
- Stream-Aggregator、スナップショット
- ホットキャッシュ/エッジ、ヘルス/ステータスAPI、停止ボタン
安全/RG
- 行動スコアリング、連動グラフ、マウスガード/クォータ
- RG制限、リマインダー、大賞品のKYC/AML
データ/A/B
- ダッシュボード:遅延、遅延率、倍率、公平性の指標
- 実験的な設計とガードレール、移行中の二重書き込み
UXについて
- 評価センター、マイクロフィードバック、A11y、ローカリゼーション
- 1画面+フルT&Cの短いルール
信頼できるリアルタイム評価は1つのサービスではなく、規律あるエコシステムです。idempotent受信、バージョン管理、トップKストリーム集計、高速キャッシュ、ステータススナップショット、組み込みの不正防止/RGメカニズムです。厳格なSLO/SLA、わかりやすいUX、 A/Bによる変更検証を追加すると、プレイヤーが信頼するリーダーボードが表示され、製品はRetention、 Stickiness、 LTVの予測可能な成長を実現します。