背景:我有托管有状态对象实例的应用程序服务器逻辑。我计划拥有多个服务器——每个服务器都托管有状态的对象实例。注意:这不是具有相同对象镜像的集群,而是更多的联合模型。
我的应用程序服务器的每个实例都使用 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 将是首选。
如果您需要任何说明或更多详细信息,请随时询问。