なぜTwitterは低遅延のままスケールできたのか

秒間120万つぶやきを処理、Twitterシステムの“今”

2010/04/19

photo01.jpg Twitterのシステム・アーキテクト、Nick Kallen氏

 14020Twitter10Twitter1200.1Web15ms

 TwitterNick Kallen20104192QCon Tokyo 2010調Data Architecture at Twitter ScaleTwitter
twitter01.jpg Twitterが配信するメッセージは秒間120万にも達するという

単純なパーティショニングでは解決しない

 サービスの構造がシンプルなTwitterは、サービス開始当初には実装もシンプルだったようだ。各つぶやきのIDをプライマリキーとして、ユーザーIDやテキスト、時刻などを1つのテーブルに保存。これをマスター・スレーブ構成とすることで、readの性能を上げるというストレートなスケーリングを行っていたという。

twitter02.png もともとのTwitterのDBスキーマ

 memcached30800GB9800GBKallenWeb

 ID2DBIDDB11DB

 IDIDIDDB
twitter03.png パーティショニングの1つの方法。つぶやきのIDを元に分けることが考えられるが、この分割方法ではユーザーIDに対応するつぶやきの検索には全パーティションに対するアクセスが発生してしまう

 IDIDIDID


 IDID

 Twitter1234沿
twitter04.png 現在のTwitterのデータのパーティショニング方法。時系列に分割しているという

 KallennOnTwitterKallentemporal locality20O1

 FacebookCassandra使IDID使

fan out


 Twitter

 SQL
twitter05.png サービス開始当初の素朴なクエリ。矢印で示した部分がメモリ上に載らなくなり、非常に遅くなったという

 1

 Twitter@someoneHadoop使50Kallenms

 Kallen2

 1fan out使fan outmemcached
twitter06.png 現在Twitterではメール配送に似た仕組みでフォロワーにつぶやきを配送しているという

 1

 

 2008Twitter302010470020001600fan out120
twitter07.png 2008年時点と現在とでのTwitterの統計情報。秒平均30だったつぶやき生成速度は700にまで上がり、その結果最大で秒間120万程度のメッセージを配送しているという

 TwitterMySQLMySQLLucene使


 Nick Kallen20089TwitterRuby on RailsRailsORMActiveRecordNamed_scopeKallenNamed_scope使Named_scopeKallenRubyArelRuby on RailsRuby on Rails 3ArelC#LINQ

 ArelKallenTwitterKallen

 Twitter

(@IT 西村賢)

情報をお寄せください:

Coding Edge フォーラム 新着記事


Linux 2017/7/20
 CHello World使printf()main()Linux

Cexit() 2017/7/13
 CHello World使printf()main()exit()

VBAFileDialog 2017/7/10
 FileDialog

 Excel VBA 2017/7/6
 稿使Microsoft Excel使VBA

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

SASのCMOが語る マーケティング部門が社内の生成AI活用のけん引役に適している理由
データとアナリティクスの世界で半世紀近くにわたり知見を培ってきたSAS。同社のCMOに、...

SALES ROBOTICSが「カスタマーサクセス支援サービス」を提供
SALES ROBOTICSは、カスタマーサクセスを実現する新サービスの提供を開始した。

「Fortnite」を活用  朝日広告社がメタバース空間制作サービスとマーケティング支援を開始
朝日広告社は、人気ゲーム「Fortnite」に新たなゲームメタバース空間を公開した。また、...