3

Pinterest がこのビデオに従ってシャーディングを行う方法を理解したいのですが、その方法を完全には理解できないようです。同じ戦略を自分のアプリに適用し、Amazon RDS の上に自分でシャーディングを構築したいので、興味があります。

私の理解から:

  • 彼らは 4096 個の仮想シャードを作成することを決定しました
  • 複数のシャードを 1 つ以上の物理サーバーにマップできます。たとえば、開始したばかりのときに、すべてのシャードを 1 つのサーバーにマップできます。

次のマッピングテーブルを想定すると:

仮想シャード 1 -> 127.0.0.1

仮想シャード 2 -> 127.0.0.1

....

彼らが独自の ID (シャード ID + タイプ + ローカル自動インクリメント) をどのように構築したかを見て、127.0.0.1 のデータ容量がかなり大きくなり、さらにマシンを追加したいので、別のサーバー 12.0.0.2 を追加することにした場合はどうなるでしょうか。容量を増やす?

シャードを新しいサーバーに正確にマッピングするにはどうすればよいですか? 講義に従ってデータが動かないことは理解していますが、どうしてホットスポットがないのでしょうか。それがどのように行われたか本当に理解できません。誰かが私に段階的な説明をしてもらえますか?ありがとう

4

2 に答える 2

1

Tumblr には、シャーディングのニーズを処理するJetpantsというオープン ソース ライブラリがあります。彼らがこれらすべてをどのように処理するかを見ることができます。私の知る限り、Pinterest は特定の実装をリリースしていません。

ただし、私のコメントで述べたように、ほとんどの場合、「どのようにシャードするべきか」に対する答えは「シャードしないでください。事実上すべてのサイトに適したオプションがあります」です。

于 2012-10-25T21:27:01.223 に答える
1

pinterest エンジニアリング ブログ descirbe it

「容量を増やす

当社のシステムでは、容量を追加する主な方法が 3 つあります。最も簡単な方法は、マシンをアップグレードすることです (ボトルネックが何であれ、スペースを増やし、ハード ドライブを高速化し、RAM を増やします)。

容量を追加する次の方法は、新しい範囲を開くことです。最初は、シャード ID が 16 ビット (合計 64k シャード) であるにもかかわらず、4,096 個のシャードしか作成しませんでした。新しいオブジェクトは、これらの最初の 4k シャードでのみ作成できました。ある時点で、シャード 4,096 から 8,191 で新しい MySQL サーバーを作成することを決定し、それらを埋め始めました。

容量を追加する最後の方法は、一部のシャードを新しいマシンに移動することです。MySQL001A (シャード 0 ~ 511 を持つ) にさらに容量を追加する場合は、次に大きい名前 (MySQL009A と B など) で新しいマスターとマスターのペアを作成し、MySQL001A から複製を開始します。"

于 2016-01-26T06:16:08.490 に答える