大規模にスケーラブルな分散共有メモリ (DSM) アプリのプロトタイプを作成するタスクがあります。プロトタイプは概念実証としてのみ機能しますが、後で実際のソリューションで使用されるコンポーネントを選択することにより、最も効率的に時間を費やしたいと考えています.
このソリューションの目的は、外部ソースからデータ入力を取得し、それをチャーンして、結果を多くのフロントエンドで利用できるようにすることです。これらの「フロントエンド」は、キャッシュからデータを取得し、追加の処理なしで提供します。このデータに対するフロントエンド ヒットの量は、文字通り 1 秒あたり数百万になる可能性があります。
データ自体は非常に不安定です。それは非常に急速に変化する可能性があります(実際に変化します)。ただし、最新のデータが処理されてキャッシュされるまで、フロントエンドには「古い」データが表示されます。処理と書き込みは単一の (冗長) ノードによって行われ、他のノードはデータの読み取りのみを行います。つまり、リードスルー動作はありません。
memcachedのようなソリューションを検討していましたが、この特定のソリューションは、以下にリストされているすべての要件を満たしていません。
- アプリの残りの部分は Java で記述されており、私たちは経験豊富な Java 開発者であるため、ソリューションには少なくともJava クライアント APIが必要です。
- ソリューションは完全に柔軟でなければなりません。クラスター内の他のノードを再起動せずに新しいノードを追加できる必要があります。
- ソリューションはフェイルオーバーを処理できる必要があります。はい、これは多少のオーバーヘッドを意味することを認識していますが、提供される全体的なデータ サイズは大きくない (最大 1G) ため、これは問題にはなりません。「フェイルオーバー」とは、ノードがダウンしたときにmemcachedクライアントのようにサーバーIPアドレスをハードコーディング/変更せずにシームレスに実行することを意味します。
- 理想的には、データの重複の程度を指定できるようにする必要があります (たとえば、同じデータのコピーを DSM クラスターにいくつ保存するか)。
- すべてのデータを永続的に保存する必要はありませんが、一部のデータの後処理 (DB へのシリアル化など) が必要になる場合があります。
- 価格。もちろん、私たちは無料/オープン ソースを好みますが、解決策に価値がある場合は、妥当な金額を喜んで支払います。いずれにせよ、有償の 24 時間 1 日サポート契約は必須です。
- すべてをデータセンターでホストする必要があるため、Amazon SimpleDB などの SaaS サービスは対象外です。他に選択肢がない場合にのみ、これを検討します。
- 理想的には、ソリューションは厳密に一貫しています(CAP のように)。ただし、最終的な一貫性はオプションと見なすことができます。
アイデアをお寄せいただきありがとうございます。