我正在构建一个 Web 应用程序,从第一天开始,它就会受到单个服务器可以处理的限制。所以我正在考虑采用具有多个相同节点的分布式架构。目标是提供可扩展性(添加服务器以容纳更多用户)和容错。节点需要在它们之间共享一些状态,因此它们之间需要一些通信。我相信我有以下替代方法可以在 Java 中实现这种通信:
- 使用套接字和自定义协议实现它。
- 使用 RMI
- 使用 Web 服务(每个节点都可以发送和接收/解析 HTTP 请求)。
- 使用 JMS
- 使用另一个高级框架,如Terracotta或hazelcast
我想知道这些技术之间的比较:
- 当节点数增加时
- 当节点之间的通信量增加时(每秒 1000 条消息和/或高达 100KB 的消息等)
- 在实际层面上(例如易于实施、可用文档、许可证问题等)
- 我也很想知道人们在实际生产项目中使用了哪些技术(而不是实验或学术项目)。