松本克彦 ピグにおけるリアルタイムランキングの導入
DESCRIPTION
real time ranking systemTRANSCRIPT
背景
ピグでリアルタイムランキングを導入する案が持ち上がった。
• ユーザのサービスモチベーション向上• 継続率向上• コミュニティ活性化
実際に2010年12月~2011年4月にわたって技術調査、開発を行い、サービスに投入された
サーバスペック
• Webサーバ(4台)機種 :R310CPU :Quad Core(x3430) 2.4GHzメモリ:8GBHDD :250GB * 2 SATAIICentOS release 5.4Apache Tomcat/6.0.20
• DB(マスタ2台、スレーブ4台)機種 :R410CPU :Octal Core(L5520) 2.26GHzメモリ:8GB(Slaveは16GB)HDD :3.5inch SAS 146GB * 4(RAID10)CentOS release 5.4MySQL 5.1
ランキングアルゴリズム
• RDBを使用し、ランキングレコード全体から順位を計算せずに、ランキングレコードをいくつかのパーティションにわけて計算。
(例)
自分より上のパーティションの人数(count数)+同一パーティション内で順位を計算
※アメーバ他サービスでも採用しているアルゴリズム
ランキングの追加、DBの追加
• ランキングクライアントデータベースごとのテーブル情報を持つ
→テーブル追加のときのみ修正
(WAPを修正する必要が無い)
• WAP接続先DBサーバ情報を持つ
→DBサーバ増設の時のみ修正
性能検証
3600 request/sec順位範囲取得
3200 request/sec順位取得
5500 reqeust/sec更新
データ更新、自分の順位取得、順位の範囲取得を同時に実行したときの性能
負荷状況
10~20万人参加のイベント(釣り、カジノ)ランキング1~2本
ピグイベントランキング(年代別系、月間、週間)6本
→合計でピーク時で約200~300req/secまだ余裕あり
※イベント参加者のみのランキング
※全員無条件参加のランキングは打っていない