3

私は、初日から単一のサーバーが処理できる限界に達する Web アプリケーションを構築しています。そのため、いくつかの同一ノードを持つ分散アーキテクチャを採用することを検討しています。目標は、スケーラビリティ (より多くのユーザーに対応するためにサーバーを追加する) とフォールト トレランスを提供することです。ノードはノード間で何らかの状態を共有する必要があるため、ノード間の通信が必要です。この通信をJavaで実装するには、次の代替手段があると思います。

  • ソケットとカスタム プロトコルを使用して実装します。
  • RMI を使用する
  • Web サービスを使用します (各ノードは HTTP 要求を送受信/解析できます)。
  • JMS を使用する
  • Terracottahazelcastなどの別の高レベル フレームワークを使用する

これらのテクノロジーが互いにどのように比較されるかを知りたいです。

  • ノード数が増えると
  • ノード間の通信量が増加した場合 (1 秒あたり数千のメッセージおよび/または最大 100KB のメッセージなど)
  • 実用的なレベル (例: 実装の容易さ、利用可能なドキュメント、ライセンスの問題など)
  • また、実験的または学術的なプロジェクトとは対照的に、実際の生産プロジェクトで人々がどのようなテクノロジーを使用しているかを知りたいと思っています。
4

1 に答える 1

1

ジニを忘れないで。

自動サービス検出、サービス リース、およびダウンロード可能なプロキシを提供するため、実際のクライアント/サーバー通信プロトコルはフレームワークによって強制されるのではなく、ユーザー次第です (たとえば、HTTP/RMI などを選択できます)。

このフレームワークは、分散コンピューティングと回復指向コンピューティングの8 つの誤りの認識に基づいて構築されています。つまり、ネットワークの問題発生し、アーキテクチャはサービスの回復と維持に役立つように構築されています。

Javaspaceも使用する場合、ワークフローとコンシューマ/プロデューサー アーキテクチャを実装するのは簡単です。プロデューサが Javaspace に書き込み、1 つまたは複数のコンシューマが (トランザクションの下で) スペースからその作業を取得し、それを操作します。したがって、より多くのコンシューマーを提供するだけで、それをスケーリングできます。

于 2009-07-21T10:10:39.783 に答える