2

質問は、Web アプリケーションで行うさまざまなことの設計アプローチ全体を検討することでした。これにより、Twitter で何百万人もの人々をフォローしていて、最新の 20 個のツイートをチェックするときに、最短時間で最小の負荷でそれを見つけることができます。資力。これは、スタック全体に関するオープンエンドの設計上の問題でした。

私の回答は不完全です(私はこれに完全に答えることができなかったので)

  1. 何百万人ものユーザーについて話しているので、ユーザーの地理的な場所に応じてデータベースを分割する必要があります。Twitterでは同じ場所にいる人を実際にフォローしていないため、この回答は受け入れられませんでした。これを達成するためのより良い方法は何ですか?

  2. ほとんどの場合、最新の 20 個のツイートが最も重要であるため、各ユーザーは、到着時刻に応じて最新のツイートを含むキャッシュ (リンクされたリスト) を維持します。これも認められませんでした。

一般的に、私はこの種の設計上の問題が苦手なのですが、どのように解決すればよいか知りたいです。

4

1 に答える 1

0

Twitter は数年間進化してきましたが、最も洗練された設計のデータ システムの 1 つだと思います。このような洗練されたシステムでは、さまざまなタイプのユーザーに対して多くの最適化が行われている可能性があります (ツイートの頻度、フォロー数、フォロワー数に応じて)。

何百万人もの人々をフォローしているユーザーは、間違いなく非常に特別な種類であり、それほど多くはないかもしれません. これらのユーザーにとって賢明な設計は、フォロワーがツイートを投稿するたびにキャッシュ内のタイムライン データを更新し、非常に古いものをアーカイブすることだと思います。そのため、タイムラインをリクエストするたびに即座にキャッシュが返されます。

上記は、システムを機能させるための最も単純で直接的な方法にすぎません。実際には、何百万人もの人々をフォローしているユーザーの数、これらのユーザーが更新する頻度など、より多くの対策を設計で考慮する必要があります。

于 2012-09-02T12:30:48.253 に答える