7. Confidential & Proprietary
スケーラビリティ - データベース
ID User Lvl
1 Sam 99
2 Leo 30
3 Dan 10
4 Pat 40
ID User Lvl
1 Sam 99
2 Leo 30
3 Dan 10
4 Pat 40
ID User Lvl
1 Sam 99
2 Leo 30
3 Dan 10
4 Pat 40
シングル RDB
シャードされた
RDB NoSQL DB
13. Confidential & Proprietary
API Server
Cache KVS (Sessions, DB
Caching)
Database (User data,
Master data,
Transaction data)
Game Score
Queue
Cache KVS
(Leaderboard)
Object Storage
(Static assets,
binary data)
Game Score
Process
①
②
③
ソーシャルゲームのバックエンド
14. Confidential & Proprietary
1. プレイヤーは新しいパズルを開始し、 API サーバと通信する
2. データベースの負荷を抑えるために、 API サーバはまずキャッシュ用の KVS を参照して、データが存在
しなければ、データベースにアクセスする
3. パズルが終了したら、データベースに格納されたプレイヤーデータの更新が行われ、平行に API サーバ
は新しいスコアを Game Score 用の Queue に入れます
What’s happening here?
24. Confidential & Proprietary
What is Cloud Spanner?
Google のマネージド?スケーラブル?リレーショナルデータベース?サービス
完全マネージドのグローバルスケールで DB サービス1
2
3
4
ゾーン間?リージョン間の自動 synchronous レプリケーション
スキーマ、ACID トランザクション、SQL
Google 内部では、既に5年以上の運用経験
(Google 広告, Google Play…)
32. Confidential & Proprietary
Matchmaker
Server Manager
API Server
Cache KVS (Matchmaking)
Database (User data,
Master data)
Dedicated Game Servers
Game Score
Queue
Cache KVS
(Leaderboard)
Object Storage
(Static asserts)
Game Score
Process
Cache KVS (DGS list)
①
②
③
④
⑤
⑥
⑦
⑧ ⑨
⑩
⑧
33. Confidential & Proprietary
1. クライアントが対戦をリクエスト
2. リクエストは KVS にキャッシュされて、 Matchmaker は他のプレイヤーとマッチする
3. Server Manager から Matchmaker は DGS を依頼し、Server Manager は KVS にアクセスしDGS
の情報を取得
4. 空いてる DGS がなければ、Server Manager は新しい DGS をプロビジョンする
5. Matchmaker は Server Manager から取得した DGS の IP/Port をクライアントに返す
6. クライアントは DGS の IP/Port と通信する(TCP か UDP)
7. マッチが完了すると、 DGS は API Server に結果を返す
8. プレイヤーデータは Database と Game Score Queue に同時に更新される
9. Game Score Process はマッチの結果を Leaderboard 用の KVS に Insert する
10. クライアントが Leaderboard をアクセスする際には API Server 経由で KVS からランキングを取得す
る
What’s happening here?
36. Confidential & Proprietary
Clients
Matchmaker
Server Manager
Cloud Memorystore for
Redis
Cloud Spanner (User
data, Master data)
Dedicated Game Servers
Game Score
Queue
Cloud Memorystore for
Redis (Leaderboard)
Cloud Storage
(Static asserts)
Game Score
Process
Cloud Memorystore for
Redis (DGS list)
TCP/UDP
LB
LB
Leaderboard
API Server
37. - API Server
- Matchmaker
- Server
Manager
- Leaderboard
- Database
ゲームサーバ