3

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

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

我想知道这些技术之间的比较:

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

1 回答 1

1

别忘了吉妮

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

该框架是围绕承认分布式计算的 8 个谬误面向恢复的计算而构建的。即您遇到网络问题,并且该体系结构旨在帮助您恢复和维护服务。

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

于 2009-07-21T10:10:39.783 回答