秒間120万つぶやきを処理、Twitterシステムの“今” - @IT
1つは「fan out」と呼ぶメール配送に似たアーキテクチャを使うこと(fan outは漢字で書くと“扇出”か。風で一気にまき散らすようなイメージ)。各ユーザーのタイムラインをメールの受信箱のように見立てて、そこにメッセージを配信する。つぶやきはいったんmemcachedに保存され、それが各受信箱(タイムライン)に送られるが、その配送処理は非同期のオフライン処理だという。ただ、オフラインといっても夜間バッチのような半日単位というものではなく、秒単位の遅延を上限としたものであるという。
現在Twitterではメール配送に似た仕組みでフォロワーにつぶやきを配送しているという
もう1つの工夫は、フォローと被フォローの関係をそれぞれ別にデータに持つこと。論理的には片方向のグラフだけ持っておけば十分だが、あえて「誰をフォローしているか」「誰にフォローされているか」に分けてデータ化しておく。データの整合性に気を付ける必要はあるものの、こうしておけばクエリは特定パーティションへのアクセスで完結するため、メモリに乗り切らないという問題も解消するのだという。
こうした仕組みにより、書き込み側のデッドロック(すべてのつぶやきは巨大な単一のデータセットに放り込まれる)を解消しつつソーシャル・グラフがメモリに乗り切らないという課題を乗り越えて、リアルタイム性の高いサービスを実現できている。
via atmarkit.co.jp