为分布式应用程序选择通信库
我开始开发一个分布式应用程序,但我们遇到了一个很大的困境!我们需要一个易于使用的通信库,并具有以下功能:
- 可靠的通信
- 组/通道
- 单播
- 多播
- 自动发现
- 安全性
- 由多种编程语言支持的
- 在多个操作系统上支持
- 支持地理分布是一个优点
关于此应用程序的几句话
主要思想这个分布式项目背后有一个前端、一个后端(处理应用程序)和数百个代理,这些代理将从某些数据中心收集数据。代理和后端之间的通信应该尽可能简单,我们应该能够推送配置或从代理中提取实时数据。代理和后端之间的传输需要最低限度的安全性。此外,我们应该能够在后端集群中实时添加/删除新节点。如果后端集群的节点数量发生变化,代理应该重新分配其负载(可能这应该由后端通过过滤来完成)。通常消息(代理和后端之间)不会超过 1500 字节,但有时我们应该能够发送大数据包(良好的碎片管理是必须的)。
到目前为止我们发现了什么:
- jGroups
- Spread
- openpgm
- Zeromq
- Hazelcast
如果您有开发集群应用程序的经验,请告诉我以上哪些框架适合我的项目?另外,如果您知道其他适合我的项目但未在上面列出的免费库,请告诉我!
I started develop a distributed application and we have a big dilemma! We need a communication library easy to use and with the following features:
- reliable communication
- groups/channels
- unicast
- multicast
- auto-discover
- security
- supported by multiple programming languages
- supported on multiple operating systems
- supporting geographical distribution is a plus
A few words about this application
The main idea behind this distributed project is to have a frontend, a backend (processing application) and hundreds of agents which will collect data from some datacenters. The communication between agents and backend should be a simple as possible, we should have possibility to push configuration or to pull real time data from agents. A minimal security of the transport between agents and backend is required. Also we should have possibility to add/delete new nodes in backend cluster live. If the number of nodes of backend cluster is changing, the agents should redistribute their load (probably this should be made by backend through filtering). Usually the messages (between agents and backend) will not exceed 1500 bytes, but from time to time we should be able to send large packets (a good fragmentation management is a must).
What we found until now:
- jGroups
- Spread
- openpgm
- zeromq
- Hazelcast
If you have experience in developing clustering applications, please let me know which of the above frameworks are suitable for my project? Also, if you know other free libraries which are suitable for my project and are not listed above please let me know!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我强烈推荐 ZeroMQ。另请查看 Heartbeat,Linux-HA 中的集群消息传递层。 http://linux-ha.org/wiki/Heartbeat
I highly recommend ZeroMQ. Also have a look at Heartbeat, the cluster messaging layer in Linux-HA. http://linux-ha.org/wiki/Heartbeat
这篇帖子是我所看到的关于该主题的最新且全面的评估。另请查看飓风
This post is the most recent and comprehensive evaluation I have seen on the topic. Also check out hurricane
我没有在这个领域工作的直接经验,所以如果我的建议有点愚蠢,请原谅我。
我遇到过一个免费的库,它似乎对您有用,它由 Google 生成,名为 协议缓冲区。它专门设计用于语言中立、平台中立的环境以及通信协议的生成。
还有许多使用 Protocol Buffers 格式的第三方 RPC 实现 。
我希望这有帮助。
I have no direct experience working in this area so please forgive me if my suggestion is somewhat stupid.
I have encountered a free library that seems like it could be useful to you, it is produced by Google and is called Protocol Buffers. It is specifically designed to be used in language-neutral, platform-neutral environments and in the production of communications protocols.
There are also numerous third party RPC implementations that work with the Protocol Buffers format.
I hope this is helpful.