1

背景:我有托管有状态对象实例的应用程序服务器逻辑。我计划拥有多个服务器——每个服务器都托管有状态的对象实例。注意:这不是具有相同对象镜像的集群,而是更多的联合模型。

我的应用程序服务器的每个实例都使用 Netty 并支持 HTTP 和 WebSockets。

我希望使用 Netty WebSocket 管道作为通信层,不仅用于 server_1/server_2,还用于 server_1/object_A 与 server_2/object_X 的通信。

例如:

  • 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 回答