私は、初日から単一のサーバーが処理できる限界に達する Web アプリケーションを構築しています。そのため、いくつかの同一ノードを持つ分散アーキテクチャを採用することを検討しています。目標は、スケーラビリティ (より多くのユーザーに対応するためにサーバーを追加する) とフォールト トレランスを提供することです。ノードはノード間で何らかの状態を共有する必要があるため、ノード間の通信が必要です。この通信をJavaで実装するには、次の代替手段があると思います。
- ソケットとカスタム プロトコルを使用して実装します。
- RMI を使用する
- Web サービスを使用します (各ノードは HTTP 要求を送受信/解析できます)。
- JMS を使用する
- Terracottaやhazelcastなどの別の高レベル フレームワークを使用する
これらのテクノロジーが互いにどのように比較されるかを知りたいです。
- ノード数が増えると
- ノード間の通信量が増加した場合 (1 秒あたり数千のメッセージおよび/または最大 100KB のメッセージなど)
- 実用的なレベル (例: 実装の容易さ、利用可能なドキュメント、ライセンスの問題など)
- また、実験的または学術的なプロジェクトとは対照的に、実際の生産プロジェクトで人々がどのようなテクノロジーを使用しているかを知りたいと思っています。