mixi Engineers’ Blog ≫ Tokyo Tyrantによる耐高負荷DBの構築(情報元のブックマーク数)

やっぱり、mixiの中のシステムはすごい。。。すごすぎる・・・

Tokyo Tyrant
そこでTokyo Tyrant(TT)の登場です。TTはmemcached並に高速でありながらファイル上にデータを記録して永続化することができ、さらにレプリケーションによってHA(High Availability)を実現しています。mixiの最終ログイン時刻を扱うのにもってこいの技術じゃないですか。TTはmemcachedプロトコルも実装しているので、既存のmemcachedクライアントの機構をそのまま用いることができます。
今回はTTを採用するのみならず、アクティブマスタ1台+スタンバイマスタ1台の2台構成に集約させてしまおうという野心的な方針にしました。ということは、10000以上のクライアントから投げられる、更新クエリのみで10000QPSを越える負荷を、1台のアクティブマスタが処理しないといけないということです。なぜそこまでして1台にしたいのかというと、クライアントがmemcachedのget_multiメソッド(複数レコードの一括取得)を処理する際には、接続対象のサーバが少なければ少ないほど性能が良くなるからです。もちろん、利用するマシンを減らして運用コストを下げられるのも嬉しいことです。
以前の記事にも書いたように、TTは、Tokyo Cabinet(TC)をベースとしてマイクロ秒単位の応答を可能にするとともに、epollやスレッドプールによって10000同時接続(c10k問題)にも対処できる並列処理性能を実現しています。負荷テストをしてみたところ20000QPS強は達成したので、本番の負荷でも多分大丈夫でしょう。

mixi engineer blog

screenshot