2

我试图弄清楚这将如何解决:

  1. 通过NIO/BIO进行客户端-服务器通信
  2. 通过JGroups的服务器-服务器通信(复制、成员资格等)(数据复制可能很痛苦?)

你有什么建议,使用这种架构的优点/缺点,为什么选择 jgroups,还有其他选择吗?

我应该使用原生 NIO 还是使用一些像 Mina 或 Netty 这样的库?

更新

  1. 没有 REST,它不是 Web 服务器。我正在构建一个类似分布式数据库的发电机。
  2. 我认为activeMQ就像JMS,我会遇到单点故障。JGroups 解决了这个问题,对吧?
4

1 回答 1

1

我想知道您为什么要为客户端-服务器通信实现二进制协议?我的建议是使用 REST 或 WebServices。与专有二进制协议相比,它具有巨大的优势。

关于服务器-服务器通信...有很多选择,我想知道您为什么选择 JGroups。你能详细说明一下吗?我会建议您使用一些消息传递解决方案,例如 JMS。有很多可用的实现,例如ActiveMQ。它将很好地将服务器彼此分离。

如果需要维护共享配置信息、命名、服务器之间有分布式同步可以查看Apache ZooKeeper项目。

如果您的服务器部署在 Amazon EC2 实例上,那么我认为最好的解决方案是使用 SQS 和/或 SNS 服务进行服务器-服务器通信。

您可以使用Terracotta来复制服务器的状态(我仍然建议您使服务器尽可能无状态)。

但是真的很难给出更具体的建议,因为你既没有描述你的系统也没有描述它的要求。我认为这将非常有帮助!

于 2011-02-12T23:09:18.373 回答