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

Ebr*_*adi 5 performance messaging high-availability zeromq spread-toolkit

我对......感兴趣:

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

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

Emi*_*nov 7

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

速度和吞吐量

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

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

SPOF

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

运输和路线

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

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

稳定性

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

作为一个注释:始终使用最新版本 - 2.1版本非常注重稳定性,因此许多稳定性问题得到解决.

社区

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

积分

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

陷阱

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

总体

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

我建议你阅读端到端的指南.它编写得很好,有很多语言(包括C++)的例子,它描述了许多边缘情况和痛点.