如何将Corosync,ZeroMQ和Spread的CPG与消息进行比较?

时间:2010-07-01 10:40:50

标签: performance messaging high-availability zeromq spread-toolkit

我对以下内容感兴趣:

  • 性能
    • 延迟
    • 吞吐量
    • 资源使用情况(CPU,内存,......)
  • 高可用性
    • 没有单点故障
  • 特性
    • 运输选项
    • 路由选项
  • 稳定性
  • 社区
    • 积极发展
    • 广泛使用
    • 有用的邮件列表,论坛,IRC频道,......
  • 易于与我当前的代码库集成
  • 可能是
  • 您认为我省略的任何其他事情

我已经读过他们,但我找不到好的比较。特别是我对比较它们的性能基准感兴趣。 (也许我应该自己做一个!我希望不要。)

1 个答案:

答案 0 :(得分:7)

好吧,我没有使用其他两个,但可以与ZeroMQ分享我的经验。在我看来,它擅长你们所有人。

速度和吞吐量

它与TCP一样快,不使用CPU或大量内存。它可以非常快速地推送大量消息。在内存不足之前它会使你的网络通道畅通(我怀疑你是否能够最大化CPU)。在某个地方与RabbitMQ进行了比较,ZMQ的表现比它高出2倍。从我在网上看到的内容来看,它正在高速交易中使用。

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

SPOF

如果您正确设计了应用程序,那么您就没有单点故障。将两个插座连接到另一个插座非常容易。因此,如果其中一个失败 - 另一个是处理工作。有一些像水印这样的东西可以帮助你。阅读ZeroMQ Guide,了解如何在没有SPOF的情况下设计应用。

传输和路由

关于传输选项(如果我理解正确的话) - 由您来定义协议。 ZeroMQ基本上承诺,它会将这一团数据提供给另一端。使用JSON,协议缓冲区,摩尔斯电码,无论你喜欢什么。

AMQP中没有内置路由。同样,由您来指定哪个ZeroMQ套接字连接到哪个,但这很容易。

稳定性

我用它开发了几个月(使用Python)并没有发现它的稳定性问题。即使我尝试以错误的方式使用它,它只会抛出一个很好的错误,告诉我不要这样做。即使重新启动/杀死某些服务并将其重新启动也不会造成任何问题。我会说这是一个非常稳定的软件。

作为一个注释:始终使用最新版本 - 2.1版本非常注重稳定性,因此很多稳定性问题都在其中解决

社区

超过20种语言的绑定,活动邮件列表,非常好的文档,频繁发布。还有什么吗?

集成

因为它是作为一个库设计的,所以你可以自己设计应用程序(与框架的情况不同),它几乎可以帮助你。它感觉有点像普通的TCP套接字,功能更强大,更易于使用(它保证了一条消息将作为一个整体传递,不仅仅是前128个字节,其余的就像普通套接字一样)。

陷阱

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

总体

我发现这是一款设计最好的软件 - 稳定,写得很好,文档齐全,并不妨碍我。

我建议您先阅读the guide端到端。它编写得很好,有很多语言(包括C ++)的例子,它描述了许多边缘案例和痛点。