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