如何使用Netty服务器到服务器二进制websocket通信?

时间:2012-10-24 21:36:03

标签: netty

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

我的应用服务器的每个实例都使用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)我是否应该在服务器之间缓存Channel并将所有对象 - 对象请求汇总到那个?这是线程安全的吗?
  • 3)或者,我是否应该使用单独的通道进行服务器和对象级通信 - 根据需要动态创建/销毁它们?

从网络利用率的角度来看,我认为选项#2对于Server_1和Server_2之间的所有双向通信都是首选。

如果您需要任何澄清或更多细节,请不要犹豫。

1 个答案:

答案 0 :(得分:1)

如果你想通过Java类发送,我建议使用Netty [1]附带的编组编码器/解码器。

对于另一个问题,频道上的所有操作都是线程安全的。

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