我试图弄清楚这将如何解决:
- 通过NIO/BIO进行客户端-服务器通信
- 通过JGroups的服务器-服务器通信(复制、成员资格等)(数据复制可能很痛苦?)
你有什么建议,使用这种架构的优点/缺点,为什么选择 jgroups,还有其他选择吗?
我应该使用原生 NIO 还是使用一些像 Mina 或 Netty 这样的库?
更新
- 没有 REST,它不是 Web 服务器。我正在构建一个类似分布式数据库的发电机。
- 我认为activeMQ就像JMS,我会遇到单点故障。JGroups 解决了这个问题,对吧?
我试图弄清楚这将如何解决:
你有什么建议,使用这种架构的优点/缺点,为什么选择 jgroups,还有其他选择吗?
我应该使用原生 NIO 还是使用一些像 Mina 或 Netty 这样的库?
更新
我想知道您为什么要为客户端-服务器通信实现二进制协议?我的建议是使用 REST 或 WebServices。与专有二进制协议相比,它具有巨大的优势。
关于服务器-服务器通信...有很多选择,我想知道您为什么选择 JGroups。你能详细说明一下吗?我会建议您使用一些消息传递解决方案,例如 JMS。有很多可用的实现,例如ActiveMQ。它将很好地将服务器彼此分离。
如果需要维护共享配置信息、命名、服务器之间有分布式同步可以查看Apache ZooKeeper项目。
如果您的服务器部署在 Amazon EC2 实例上,那么我认为最好的解决方案是使用 SQS 和/或 SNS 服务进行服务器-服务器通信。
您可以使用Terracotta来复制服务器的状态(我仍然建议您使服务器尽可能无状态)。
但是真的很难给出更具体的建议,因为你既没有描述你的系统也没有描述它的要求。我认为这将非常有帮助!