DDS、AMQP和ZeroMQ的比较

14

我想知道我对评估和关注点的理解是否正确。

我已经研究了一段时间的数据传输层建设,包括Data Distribution Service、AMQP和ZeroMQ。这三个都有很好的前景,但是在一些方面遇到了一些问题。

为了说明情况,我的要求是:

  1. 支持扩展至500多个物理节点、1000多个发布者和订阅者。
  2. 支持可靠交付消息以处理失效的订阅者。
  3. 聚合吞吐量应该超过每秒100万条消息。

AMQP存在的问题:

  1. 代理架构似乎是整个部署设置中的瓶颈和单点故障。我可以通过设置联邦和集群来提高未决消息的性能和可用性,但它们似乎仍然不是无法出错的。
  2. 耐用队列的性能似乎非常低。我的示例应用程序只能以每个核心/队列/应用程序6-7K消息的速度运行。

ZeroMQ存在的问题:

  1. 文档似乎缺少深度。
  2. 系统的行为似乎会在PUB/SUB通信模式下引发未决消息的问题。请参阅:How zeromq handles slow consumers with PUB/SUB mode

OpenSplice DDS:

我在DDS协议中没有发现任何缺陷,除了在工业界的采用方面存在一些不足。希望能够获得有关该产品在稳定性、性能或限制方面的第一手评估。


我稍后会深入回答你的问题,但现在建议你将标签“data-distribution-service”添加到代码中,而不是“dds”。后者似乎已经被图形编程劫持了。 - Holger Hoffstätte
谢谢Holger,已经更新了标签。 - Kisalay
2
只是让ZeroMQ的讨论更加微妙: 对于PUB / SUB,确实存在每个订阅者可预设的消息队列大小限制,超过该限制的消息将被丢弃。但是还有ZMQ_SWAP选项,可以启用消息的磁盘交换。引用[1]“然而,有一种方法。 ØMQ提供了一种称为>>swap<<的东西,它是一个磁盘文件,保存了我们无法存储到队列中的消息”[1] http://zguide.zeromq.org/chapter:all - ron
@Kisalay 关于 ZeroMQ 中的 slow consumer 处理:最近的版本允许您配置 ZMQ_HWM: high water markZMQ_SWAP: disk offload size。请查看 http://api.zeromq.org/master:zmq-getsockopt 了解详细信息。 - Evgeniy Berezovsky
2个回答

14

我对你对OpenSplice DDS采用的担忧感到惊讶。OpenSplice DDS目前已经在多个使命和业务关键系统上部署,例如海军作战管理系统、军用车辆、空中交通控制和管理、地铁以及高频自动交易等。为了再给你提供一些信息,这也应该能够让您放心采用这项技术,OMG DDS标准(OpenSplice DDS实现的标准)已被EUROCAE推荐在全欧洲中心之间交换飞行数据计划。

如果您对采用或技术方面有任何进一步的问题,请告诉我。

-AC


4
是的,我一直在查看OpenSplice的代码,它很糟糕。此外,API非常混乱,设置过程也过于复杂。OpenSplice是由不懂软件设计原则的人编写的。虽然它可能会被许多公司采用,因为它可行,但如果您想要发展未来,那么它肯定不是正确的选择。 - fonZ

1

请查看this页面。今天许多行业和公司正在使用DDS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接