Corosync、ZeroMQ和Spread的CPG在消息传递方面有什么区别?

5

我感兴趣的内容:

  • 性能
    • 延迟
    • 吞吐量
    • 资源使用(CPU、内存等)
  • 高可用性
    • 无单点故障
  • 功能
    • 传输选项
    • 路由选项
  • 稳定性
  • 社区
    • 积极开发
    • 广泛使用
    • 有帮助的邮件列表、论坛、IRC频道等
  • 易于与我的当前代码库集成
  • 可能需要注意的问题
  • 您认为我遗漏了什么其他事项

我已经阅读了相关信息,但是我找不到一个好的比较。特别是我对它们之间的性能基准测试很感兴趣。(也许我应该自己做一个!但愿不用。)

1个回答

8

嗯,我没有使用另外两个工具,但我可以分享一下我对ZeroMQ的经验。我认为它在所有方面都表现得很出色。

速度和吞吐量

它和TCP一样快,不会占用太多CPU或内存。它可以非常快地推送大量消息,而不费吹灰之力。它将占满您的网络通道,远远超过您用尽内存(我怀疑您永远也无法达到最大CPU利用率)。有一个比较数据显示,它比RabbitMQ快2倍。从我在网络上看到的信息来看,它被用于高速交易中。

RabbitMQ也是一个非常好的工具。你可以看一看,它可能是你正在寻找的合适工具。

SPOF

如果您正确设计应用程序,则可以避免单点故障。将两个套接字连接到另一个套接字非常容易。因此,如果其中一个失败,另一个将处理工作。还有像高水位线之类的东西可以帮助您实现这一目标。阅读 ZeroMQ指南以了解如何设计无SPoF的应用程序。

传输和路由

关于传输选项(如果我理解正确),由您定义协议。ZeroMQ基本上承诺将向另一端传递此数据块。使用JSON、协议缓冲区、摩尔斯电码或任何您喜欢的内容。
与AMQP中内置的路由不同,在ZeroMQ中没有内置的路由。同样,由您指定哪个ZeroMQ套接字连接到哪个套接字,但这很容易实现。

稳定性

我已经使用它进行了几个月的开发(使用Python),并且没有发现任何稳定性问题。即使我试图以错误的方式使用它,它也会抛出一个良好的错误提示我不要那样做。即使重新启动/杀死一些服务并将它们重新启动,也不会引起任何问题。我认为这是非常稳定的软件。
作为说明:始终使用最新版本-2.1版本非常稳定,因此许多稳定性问题都得到解决。
社区
超过20种语言的绑定,活跃的邮件列表,非常好的文档,频繁的发布。还有其他吗?
集成
因为它被设计为库,所以你需要设计你的应用程序(不像框架的情况),它几乎不会妨碍你。它感觉有点像普通TCP套接字,更强大,更易于使用(它保证消息将作为整体传递,而不仅仅是前128个字节,其余稍后)。
注意事项

有一些问题,但它们都在指南中有记录。(例如:当你连接(SUB)到PUB套接字时,你可能会错过前几条消息。指南中有解释和处理方法的示例)

总体

我认为这是设计最好的软件之一 - 稳定、代码编写良好、文档详尽且不会妨碍我的工作。

我建议您全面阅读指南。它写得很好,包括许多语言的示例(包括C++),并描述了许多边缘情况和痛点。


通过传输选项,我指的是较低层协议选项,例如TCP、UDP等。感谢您详尽的回答 :) - Ebrahim Mohammadi

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