我应该在什么级别实现分布式系统上的节点之间的通信?

时间:2009-07-21 10:08:07

标签: distributed

我正在构建一个Web应用程序,从第一天起,它将处于单个服务器可以处理的范围内。所以我正在考虑采用具有多个相同节点的分布式架构。目标是提供可扩展性(添加服务器以容纳更多用户)和容错。节点需要在它们之间共享某些状态,因此需要它们之间的某些通信。我相信我有以下替代方法在Java中实现这种通信:

  • 使用套接字和自定义协议实现它。
  • 使用RMI
  • 使用Web服务(每个节点都可以发送和接收/解析HTTP请求)。
  • 使用JMS
  • 使用其他高级框架,例如Terracottahazelcast

我想知道这些技术如何相互比较:

  • 当节点数增加时
  • 当节点之间的通信量增加时(每秒1000条消息和/或高达100KB的消息等)
  • 在实际层面(例如易于实施,可用文档,许可证问题等)
  • 我也很想知道人们在实际生产项目中使用了哪些技术(而不是实验项目或学术项目)。

1 个答案:

答案 0 :(得分:1)

不要忘记Jini

它为您提供自动服务发现,服务租赁和可下载代理,以便实际的客户端/服务器通信协议由您决定,而不是由框架强制执行(例如,您可以选择HTTP / RMI /无论如何)。

该框架围绕对8 Fallacies of Distributed Computingrecovery-oriented computing的确认而构建。即存在网络问题,并且该体系结构旨在帮助您恢复和维护服务。

如果您还使用Javaspaces,那么实现工作流程和消费者 - 生产者体系结构是微不足道的。生产者将写入Javaspaces,一个或多个消费者将从空间(在交易下)从事该工作并使用它。因此,您只需提供更多消费者即可扩展它。