1

背景:ステートフルオブジェクトインスタンスをホストするアプリケーションサーバーロジックがあります。複数のサーバーを計画しています。各サーバーはステートフルオブジェクトインスタンスをホストしています。注:これは、同じオブジェクトがミラーリングされたクラスターではなく、より多くのフェデレーションモデルです。

私のアプリケーションサーバーの各インスタンスはNettyを使用しており、HTTPとWebSocketをサポートしています。

Netty WebSocket配管を、server_1 / server_2だけでなく、server_2/object_Xと通信するserver_1/object_Aの通信レイヤーとして使用したいと思います。

例えば:

  • Server_1にはオブジェクト{OA、OB、OC}があり、Server_2にはオブジェクト{OX、OY、OZ}があります。
  • S1:OAはS2:OXと通信できます
  • S1:OBはS2:OXとも通信できます

質問:

  • 1)Nettyを使用して異なるサーバーで実行されているオブジェクト間で通信するための推奨されるアプローチはありますか?例はありますか?
  • 2)サーバー間のチャネルをキャッシュし、それを介してすべてのオブジェクト-オブジェクト要求をファネルする必要がありますか?これはスレッドセーフですか?
  • 3)または、サーバーレベルとオブジェクトレベルの通信に別々のチャネルを使用する必要がありますか?必要に応じて動的にチャネルを作成/破棄しますか?

ネットワーク使用率の観点から、Server_1とServer_2の間のすべての双方向通信にはオプション#2が優先されると思います。

説明や詳細が必要な場合は、遠慮なくお問い合わせください。

4

1 に答える 1

1

Javaクラスを送信する場合は、Netty[1]に付属のマーシャリングエンコーダー/デコーダーを使用することをお勧めします。

他の質問に対して、チャネルでのすべての操作はスレッドセーフです。

[1] https://github.com/netty/netty/tree/3/src/main/java/org/jboss/netty/handler/codec/marshalling

于 2012-10-25T05:32:35.727 に答える