Tcp 为分布式应用程序选择通信库

Tcp 为分布式应用程序选择通信库,tcp,cluster-computing,distributed-computing,multicast,Tcp,Cluster Computing,Distributed Computing,Multicast,我开始开发一个分布式应用程序,我们遇到了一个大难题!我们需要一个易于使用且具有以下功能的通信库: 可靠通信 小组/频道 单播 多播 自动发现 保安 支持多种编程语言 支持多种操作系统 支持地理分布优先 关于此应用程序的几句话 这个分布式项目背后的主要思想是拥有一个前端、一个后端(处理应用程序)和数百个代理,这些代理将从一些数据中心收集数据。代理和后端之间的通信应该尽可能简单,我们应该有可能推送配置或从代理中提取实时数据。代理和后端之间的传输需要最低限度的安全性。此外,我们还可以在后端集群li

我开始开发一个分布式应用程序,我们遇到了一个大难题!我们需要一个易于使用且具有以下功能的通信库:

  • 可靠通信
  • 小组/频道
  • 单播
  • 多播
  • 自动发现
  • 保安
  • 支持多种编程语言
  • 支持多种操作系统
  • 支持地理分布优先
关于此应用程序的几句话

这个分布式项目背后的主要思想是拥有一个前端、一个后端(处理应用程序)和数百个代理,这些代理将从一些数据中心收集数据。代理和后端之间的通信应该尽可能简单,我们应该有可能推送配置或从代理中提取实时数据。代理和后端之间的传输需要最低限度的安全性。此外,我们还可以在后端集群live中添加/删除新节点。如果后端集群的节点数正在改变,代理应该重新分配它们的负载(可能这应该由后端通过过滤实现)。通常(代理和后端之间的)消息不会超过1500字节,但我们应该能够不时发送大数据包(必须进行良好的碎片管理)

到目前为止,我们发现:

  • JGroup
  • 散布
  • openpgm
  • zeromq
  • 黑兹卡斯特

如果您有开发集群应用程序的经验,请让我知道上面哪些框架适合我的项目?此外,如果你知道其他免费图书馆是适合我的项目,并没有列出以上请让我知道

我在这方面没有直接的工作经验,所以如果我的建议有点愚蠢,请原谅我

我遇到了一个免费的图书馆,它似乎对你有用,它是由谷歌制作的,名为。它专门设计用于语言无关、平台无关的环境和通信协议的生成

还有许多使用协议缓冲区格式的方法


我希望这会有所帮助。

我强烈推荐ZeroMQ。还可以看看Heartbeat,Linux HA中的集群消息传递层

这是我最近看到的关于该主题的综合评估。请查看

更多细节,请参阅我的博客文章,但请在这里对StAcExpRoad进行评论。请看AKKA,它具有您正在寻找的大部分特征。AKKA没有C++绑定。回到2012,选择的解决方案很少。现在,有Kafka、RocketMQ、RabbitMQ等等。当您想编写自己的网络协议时,协议缓冲区非常好,但在这种情况下就不行了。我想要一个免费的库,而不是编写我自己的协议:)。谢谢你的建议。你有使用zmq的经验吗?请解释为什么您“强烈推荐”。我为我们正在构建的集群应用程序评估了它,它看起来非常有前途:易于使用,性能优异。。。最后,我们采用了一种使用PostgreSQL数据库发布消息的黑客解决方案,这主要是因为我们已经知道pg是可以信任的,并且为了消除复杂性(pg已经用于数据存储,不需要点对点通信)。使用sql数据库进行消息传递感觉有点不对,我希望我们使用zmq来代替。这并不是我所期望的,但直到现在才是最好的答案。这对于消息队列来说非常全面,但我需要一个支持C++/Java/Python的通信库。到目前为止,只有0mq知道即使不是真正的“消息队列”。