2

Java と分散 noSQL DB(Cassandra) を使用してソーシャル Web アプリケーションを開発しています。 アプリケーションの新規ユーザーと投稿の ID を、それぞれ 32 ビットと 64 ビットのサイズで生成する必要があります。

分散プラットフォーム上に構築されているため、ID/キーを生成する問題はやや複雑になっています。Zookeeper/ や twitter の Snowflake など、この問題を軽減するのに役立つソリューションが登場しましたが、これらのソリューションは簡単に使用できるようには見えません。

これらのソリューションをトップ レベルの視点から見た後、最もシンプルで最も成熟したソリューションを採用していると感じました。flickr のチケット サーバーのように MySQL データベースを使用することは、最も簡単な解決策であると思われるため、最初の優先事項として思い浮かびます

http://code.flickr.com/blog/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/

分散システムの周りに SPOF が作成されることはわかっています..しかし、初期の頃 (資本と人員のリソースが少ないとき) には、これが最も簡単なソリューションであると信じています。アプリケーションが大きくなっても、重いデータを転送する必要がないため、切り替えは難しくないと思います。したがって、私のアプリケーションの初期段階では、MySQL が Id を生成するための最良かつ最も簡単な方法で役立つと思います。

この選択の主な要因:-

  1.   Easier Implementation
  2.   Easy switching anytime in the future
  3.   Mature
  4.   MySQL may be required for our other needs as well, already 

SPOF を除去するために、最初は 1 台の MySQL サーバーを使用し、後で flickr のソリューションとして 2 台のサーバーに切り替えることを考えています。

Zookeeper や Snowflake などの代替ソリューションに切り替えることを検討したときに、後でどのような問題が発生する可能性があるかを誰かが指摘できますか? または、提案されている現在のアプローチの欠点は何ですか?

ありがとうございました!

4

1 に答える 1

1

分散システムで SPOF が発生することはわかっていますが、初期の頃はこれが最も簡単な解決策だと思います。

いいえ、最も簡単な解決策は、分散 dbms が提供する識別子を使用することです。そうすれば避けられる

  • MySQL 用の別のサーバー ハードウェア
  • 別のオペレーティング システムのインストール、構成、および保護
  • 別の dbms のインストール、構成、および保護

そして、おそらく必要なシーケンシャル性は、必要な数よりもはるかに少ないでしょう。

分散システムの周りに SPOF が作成されることはわかっています。

複数の単一障害点が作成されます。おそらくディスクを除いて、サーバー ハードウェアの各部分が単一障害点になる可能性は十分にあります。(そこに何個の電源装置を配置する予定ですか? ディスク コントローラは何個ですか? NIC は何個ですか?) ソフトウェアの単一障害点も多数あります。

于 2011-03-17T22:58:19.687 に答える