distributed-computing - AMQP 和 ZeroMQ 的区别

标签 distributed-computing actor amqp zeromq

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

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

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

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

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

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

最佳答案

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

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

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

关于distributed-computing - AMQP 和 ZeroMQ 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634965/

相关文章:

algorithm - 银行交易是如何工作的 "under the hood"- 可能很详细

scala - 如何使用 Guice in Play 注入(inject)的组件测试 actors!斯卡拉 2.5

node.js - AMQPlib Nodejs 消费者任务并发

macos - PHP 和 AMQP RabbitMQ 消费者

algorithm - 领导人选择

mapreduce - MPI标准与Mapreduce编程模型的比较?

scala - 在测试中获取用于在 Akka 中创建 actor 的类实例

java - spring-amqp- 较新的调用监听器

terminology - 分布式计算、微服务和并行计算有什么区别

scala - 为什么 scala actor 消息队列没有边界(大小)