27

最近开始研究这些 AMQP(RabbitMQ、ActiveMQ)和 ZeroMQ 技术,对分布式系统/计算感兴趣。一直在谷歌搜索和 StackOverflow 周围,找不到两者之间的明确比较。

我得到的最远的是两者并没有真正的可比性,但我想知道它们的区别。在我看来,ZeroMQ 更加分散(没有消息代理扮演中间人处理消息/保证传递的角色),因此速度更快,但并不意味着是一个完全成熟的系统,而是需要以编程方式处理的东西,比如 Actors。

另一方面,AMQP 似乎是一个更成熟的系统,有一个中央消息代理确保可靠的传递,但因此比 ZeroMQ 慢。但是,中央代理会产生单点故障。

也许一个比喻是客户端/服务器与 P2P?

我的发现是真的吗?另外,使用其中一种的优点、缺点或用例是什么?比较 *MQ 与 Akka Actors 之类的用途也会很好。

编辑多看看周围.. ZeroMQ 似乎是 AMQP 的新竞争者,似乎要快得多,唯一的问题是采用/实施?

4

6 回答 6

22

这是 AMQP 和 0MQ 的相当详细的比较:http ://www.zeromq.org/docs:welcome-from-amqp

请注意,0MQ 也是一种协议(ZMTP),具有多种实现方式和社区。

于 2012-10-18T06:33:04.973 回答
14

AMQP 是一种协议。ZeroMQ 是一个消息传递库。

AMQP 提供流量控制和可靠的交付。它为消息定义了标准但可扩展的元数据(例如回复、生存时间以及任何应用程序定义的标头)。ZeroMQ 只是提供消息定界(即将字节流分解为原子单元),并假设底层协议(例如 TCP)的属性是足够的,或者应用程序将在 ZeroMQ 之上为流量控制、可靠性或任何其他功能构建额外的功能.

尽管 AMQP 的早期版本是按照客户端/服务器线定义的,因此需要代理,但 AMQP 1.0 不再适用,其核心是对称的点对点协议。中间人(例如经纪人)的规则是在此之上分层的。来自 Alexis 比较中介和无中介的链接很好地描述了这些中介可以提供的好处。AMQP 定义了不同组件(客户端、“智能客户端”、代理、网桥、路由器等)之间的互操作性规则,以便可以通过选择有用的部分来组成系统。

于 2012-10-01T06:36:51.900 回答
7

在 ZeroMQ 中根本没有消息队列,因此得名。它只是提供了一种在其他普通套接字上使用消息传递语义的方法。

AMQP 是消息队列的标准协议,旨在与处理所有消息发送和接收的消息代理一起使用。它有很多可用的功能,因为它通过代理汇集所有消息流量。这听起来可能很慢,但在主机到主机延迟很小的数据中心内使用时,它实际上非常快。

于 2013-01-13T23:13:51.947 回答
2

我不太确定如何回答您的问题,这是比较很多不同的事情......但看看这可能有助于您开始深入研究这些问题:http ://www.rabbitmq.com/blog/ 2010/09/22/broker-vs-brokerless/

于 2012-09-30T21:31:01.927 回答
1

AMQP(高级消息队列协议)是一种标准的二进制线路级协议,它使符合要求的客户端应用程序能够与符合要求的消息中间件代理进行通信。AMQP 允许不同企业之间或企业内部的跨平台服务/系统轻松地在彼​​此之间交换消息,而不管消息代理供应商和平台如何。有许多代理已经实现了 AMQP 协议,例如 RabbitMQ、Apache QPid、Apache Apollo 等。

ZeroMQ 是一个高性能异步消息传递库,旨在用于可扩展的分布式或并发应用程序。它提供了一个消息队列,但与面向消息的中间件不同,ØMQ 系统可以在没有专门的消息代理的情况下运行。

于 2014-12-08T06:08:53.180 回答
1

与 ActiveMQ、QPid、Kafka 等用于简单布线的消息代理相比,无代理是用词不当。

它很有用,可以应用于热点以减少网络跃点和延迟,因为我们增加了可靠性、存储和转发功能以及高可用性要求,您可能需要一个分布式代理服务以及一个用于共享数据的队列以支持松散耦合- 及时解耦 - 这个拓扑和架构可以使用 ZeroMQ 来实现,你必须考虑你的用例,看看是否需要异步消息传递,如果需要,ZeroMQ 适合的地方,它在它出现的解决方案中具有很好的作用,并且TCP/IP 和套接字编程的合理知识将帮助您欣赏所有其他人,如 ZeroMQ、AMQP 等。

于 2016-12-15T13:42:54.950 回答