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



我开始开发一个分布式应用程序,我们有一个很大的困境!我们需要一个易于使用并具有以下特性的通信库:

  • 可靠通信
  • 组/频道
  • 单播
  • 多播
  • 自动发现
  • 安全
  • 多种编程语言支持的
  • 支持多个操作系统
  • 支持地理分布是加分项

关于这个应用程序的几句话

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

到目前为止我们发现了什么:

  • jGroups
  • openpgm
  • zeromq
  • Hazelcast

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

我强烈推荐ZeroMQ。还要了解一下Heartbeat,它是Linux-HA中的集群消息传递层。http://linux-ha.org/wiki/Heartbeat

这篇文章是我最近看到的关于这个话题的全面评价。还可以查看hurricane

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

我遇到了一个免费的库,似乎它可能对你有用,它是由谷歌生产的,被称为协议缓冲区。它是专门设计用于语言无关、平台无关的环境和通信协议的生成。

也有许多第三方RPC实现使用协议缓冲区格式。

最新更新