マッチメイキングが負荷下でスケーリングする仕組み
概要
キューが大量のチケットを受け取ると、サービスは低いマッチ レイテンシを維持するために処理を自動的にスケーリングします。負荷が増えるにつれ、キューで構成されたルールを使用してチケットがグルーピングされ、類似するチケット (互換性がある可能性が高いチケット) が一緒に評価されます。負荷が減ると、これらのグループが統合され、サービスはより大きなチケットのプールから選択できるようになり、マッチの品質が向上します。 このスケーリングはプレイヤーには透過的ですが、キューに構成するルールは、サービスが作業をどれだけ効果的に分散できるかに影響します。このプロセスを理解することで、効率的にスケーリングするキュー構成を設計するのに役立ちます。ルールがうまくスケールする条件
サービスがチケットを処理容量全体に分散する必要がある場合、チケットをほぼ均等なグループに自然に分割するルール属性を探します。異なる値の範囲が広いルールが最適です。負荷を均等にバランスするためのオプションがより多く提供されるためです。 適切な分散を提供するルールがない場合、サービスは、ルール属性に依存せずに負荷をバランスする汎用の分散にフォールバックします。たとえば、これはほとんどのチケットが同一の属性値を共有している場合に発生します。パーティション化に適したルール
- 多様な値を持つ String Equality ルール — プレイヤー母集団全体で複数の異なる値を持つ
GameModeやRegionのようなルールは、自然なパーティション境界を作成します。サービスは同じ値を共有するグループにチケットをきれいに分割できます。 - 必須ルール — マッチング全体でずっと (拡張なしで) 適用され続けるルールは、ハード制約を表すため、パーティション化に好まれます。これらのルールで分割することで、パーティション境界が最も強いマッチ要件と一致することが保証されます。
- 重みの高いルール — 重み がより大きいルールは、パーティション化で優先されます。このアプローチは、マッチ品質にとって最も重要と考えるルールが、チケットの分散方法もガイドすることを意味します。
- 値の分散が広い Difference ルール — スキル レーティングのような数値ルールは、プレイヤーの値が範囲全体に分散している場合にうまく機能し、サービスは類似する値を持つグループにチケットを分割できます。
パーティション化にあまり効果的でないルール
- ほとんどのチケットが同じ値を共有するルール — ほぼすべてのプレイヤーがルールに対して同じ属性値を送信する場合、サービスはそのルールを使って意味のある分割を作成できません。
- ワイルドカード使用が多いルール — チケットの大部分がルールに対してワイルドカード (すべてに一致) 値を使用している場合、そのルールはチケットを別々のグループに分割するのにあまり有用ではなくなります。
- 拡張のあるルール — 時間経過とともに任意になるルールは、チケットの生存期間中は成立しない可能性のある、より緩やかな制約を表すため、パーティション化で優先度が下がります。
設計上の考慮事項
大量のチケットを経験する可能性のあるゲーム向けにマッチメイキング キューを設計する際は、以下の考慮事項を念頭に置いてください。- 属性値を分散させる — プレイヤー母集団全体で属性値が多様なルールは、より良いパーティション分割を生み出します。ほとんどのプレイヤーがルールに対して同じ値を共有すると、パーティション全体で負荷をバランスするのに役立ちません。
- 重要なルールにより高い重みを与える — ルールの 重み は、マッチ ソートの優先度とパーティション分割の優先度の両方に影響します。マッチ品質にとって最も重要なルールにより高い重みを割り当てることで、それらのルールがチケットの分散方法もガイドすることが保証されます。
- 不要なワイルドカードを避ける — チケットの大部分がルールに対してワイルドカード値を使用する場合、そのルールはパーティション化にあまり有用ではなくなります。ゲーム デザインにワイルドカード動作が必要かどうかを検討してください。
- パーティション変更中の再試行は正常 — 分割やマージによるパーティション レイアウトの変更時に、一部のチケットが再試行シグナル付きで一時的にキャンセルされる場合があります。マッチメイキング SDK はこれを自動的に処理するため、プレイヤーはほんの一時的な遅延のみを体験します。
