システム設計インタビュー:フィードシステムを設計する方法(例えば、ツイッター、InstagramのやFacebookのニュースフィード)

システム設計インタビュー:チャットシステムを設計する方法(例えば、メッセンジャー、微信かのWhatsApp)

方法論:READ MF!

この使用してください「READ MFを!」フレームワークソフトウェアエンジニア、システムのインタビューの目的のために。

 

主なデザインと用語 

 

 

 

  • これまでのところさえずりを設計する上で最高の詳細な説明はからですラフィのQConに(TwitterでのVPにするために使用します)。プレゼンテーションスライド [すべてのクレジットに行くのQCon)。ラフィは非常にスマートと歯切れ、本当に固体男です!
  • ユーザーのタイムライン用に最適化された重いシステムではなく、書き込み重いが、読んでください。明確にするために、2つのタイムラインがあり、一つは、ユーザー自身のツイートは(簡単に行うには)、他のユーザーが次のことを人々からのすべてのつぶやきの集合体であるメインタイムラインです。 
  • すべてのタイムラインを事前に計算します。これはMySQLを使用し、スケーラブルではないでしょうリアルタイムでクエリにインデックスを持つVSデザインの興味深い部分です。つぶやきが投稿され、ツイートはサービスです
    • メモリ内のこのつぶやきを保存し、後でメインDBにフラッシュされることを
    • この特定のユーザに続くすべてのユーザーのタイムラインにこのツイートを公開するサービスを提供するファンアウトを呼び出します。それは単につぶやきのIDを格納することができ(以降内容がツイートキャッシュから取得することができる)、またはテキスト全体の内容を水和すると罰金もある(注我々は、Twitterは、おそらく、削除はできません、eidtを処理または削除する方法)
    • インデックスへのコール検索サービス(Luceneの)。検索インデックスも、Redisの上のメモリにホストされています。注検索はここですべての検索クラスタにファンアウトする必要があるが、原因でにホスティングメモリ、それは許容範囲です。
  • 常にディスクアクセスはメモリアクセス、例えばよりも少なくとも100倍遅くなり覚えて、ディスクは、メモリ上の100nsの対は10msです。https://gist.github.com/jboner/2841832
  • 有名人(信者数百万の人々が)回答でお互いに話を開始したときに、プリcaculateタイムラインの設計では、競合条件があるかもしれません。例えば、有名人Aつぶやき何かが、前仕上げを実現し、すべての信者に配信する有名人Bの応答を30秒を要し、一部の信者は、AとBの両方がAのオリジナルのポストの前に最初にBの応答が表示される場合があります従ってください。一つのチート問題を回避するには、タイムスタンプやつぶやきのIDでソートすることですが、リアルタイム有名人のつぶやきを取得、タイムラインを生成するとき、彼らはまた、唯一の事前計算非有名人のつぶやきを試して、とされています。それは、より良いともユーザーエクスペリエンスである方法により異なります。これはトレードオフについての現実の世界であなたの面接に話をするのは良い停止点です。
  • さえずりが大きくキャッシュに頼っているので、あなたは彼らがしてキャッシュを最適化する方法チェックアウトする場合がありますtwemproxy

包子YouTubeのビデオ

おすすめ

転載: www.cnblogs.com/baozitraining/p/12110690.html