群集中2个节点之间的通信

时间:2011-02-12 21:15:10

标签: java cluster-computing distributed-computing apache-mina jgroups

我想弄清楚这会如何解决:

  1. 通过 NIO / BIO
  2. 进行客户端 - 服务器通信
  3. 通过 JGroups 进行服务器 - 服务器通信(复制,成员资格等)(数据复制可能很痛苦?)
  4. 你有什么建议,使用这种架构的利弊,为什么选择jgroups,有什么选择?

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

    更新

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

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您的服务器部署在亚马逊EC2实例,比我认为最好的办法是使用SQS和/或SNS服务的服务器 - 服务器通信。

您可以使用Terracotta为您的服务器的状态复制(我依然会建议你让你的服务器,无状态越好)。

但是,这真的很难,因为您还没有描述既不系统,也不要求它劝告什么更具体。我认为这会非常有帮助!