tumblr の dashboard / twitter の timeline がどのように構築されるのか
tumblr の dashboard / twitter の timeline がどのように構築されるのか
https://gyazo.com/95bde19f756247f358082333d4ecba7b
そもそも、リアルタイムにフォロー/フォローイングの関係を表示していると信じて疑わなかった dashboard / timeline が、ただたんにそれっぽく表示していただけだったのかもしれない、とか思ったり思わなかったり
それが、ただたんに、あからさまになっただけ、みたいな
twitter の timeline や tumblr の dashboard のようなタイムラインの機能って何が出自なのだろうか? タイムライン 2019
結局、出自、わからず
メールの INBOX とか NetNews のスレッドっぽいような気がするんだけど
Ajax の夜明けは Gmail だし
かつて tumblr には、とにかくたくさんフォローして、誰よりも流量の大きな dsbd を構築して、だれよりも速く深く潜ることが良いリブログを生むのだ、というマッチョな共感があった
時系列な dashboard を自らの手でランダムな並びに変えるという行為
tumblr の場合
2012
あと内部用に Firehose があってね、という紹介。 Firehose って Twitter の限定された API のことかと思ってたけど、 Twitter 特有のものではなかったのね。こいつがリアルタイムなデータ配信のキモになっているらしいがこの次の Cell Design がこの記事のハイライトともいうべき一番面白い部分なので前座は省く。
Cell Design For Dashboard Inbox
まず前提として、現状の Dashboard は scatter-gather モデルで作られている。これは「データをばらまいて」から「かき集める」ということで、データつまり post は sharding されて保存され(ばらまく)、ユーザーの Dashboard を組み立てるために shard から都度取得される(かき集める)。このモデルは非常に限られた間しかうまく稼働しないと見ていて、もう長くないかもね、と言っている。
そこでどうするかというと、 inbox モデルへ移行するらしい。 inbox モデルとはどういうことか、という説明もこのあと出てくるのだけど、先に触れておくと、各ユーザーは自分の Dashborad にどの post が表示されるべきか、 post ID が記録された inbox を持っていて、だれかが何かを post するとその post を購読しているユーザー全員の inbox に post ID が書き込まれる、という仕組み。まぁ名前の通りメールの inbox なのだけど、 post そのものではなく post ID だけが記録されるのでストレージ容量を相当節約できるんだとか。これのいいところは、 Dashboard を組み立てるときにいちいち following/followers の関係を user ID から引っ張ってきて、それで得られたすべての user の post ID を集めて・・・という、検索処理が重い問題を解決できる点にある。で、それを Cell Based Architecture で実装していて、それは Facebook Messages のやり方に似てるんだそうで。
2012
https://gyazo.com/d2da8dbc8e02fe60473e455bdc0ce6a0
2021
2019
twitter の場合
2010
2013
https://gyazo.com/69d5cf5e865da4a91dab3d80f915fd02
Twitter now has 150M world wide active users, handles 300K QPS to generate timelines, and a firehose that churns out 22 MB/sec. 400 million tweets a day flow through the system and it can take up to 5 minutes for a tweet to flow from Lady Gaga’s fingers to her 31 million followers.