5

我感兴趣的是:

  • 表现
    • 潜伏
    • 吞吐量
    • 资源使用情况(CPU、内存等)
  • 高可用性
    • 无单点故障
  • 特征
    • 交通选择
    • 路由选项
  • 稳定
  • 社区
    • 积极发展
    • 被广泛使用的
    • 有用的邮件列表、论坛、IRC 频道……
  • 易于与我当前的代码库集成
  • 可能有问题
  • 你认为我遗漏的任何其他事情

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

4

1 回答 1

8

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

速度和吞吐量

它与 TCP 一样快,不使用 CPU 或大量内存。它可以毫不费力地快速推送大量消息。它会在您耗尽内存之前使您的网络通道饱和(我怀疑您是否能够最大限度地利用 CPU)。在某处与RabbitMQ进行了比较,ZMQ 的表现比它高出 2 倍。根据我在网上阅读的内容,它在高速交易中使用。

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

单点光纤

如果您正确设计应用程序,那么您就不会出现单点故障。将两个插座连接到另一个插座非常容易。因此,如果其中一个失败 - 另一个将负责处理工作。有诸如高水位标记之类的东西可以帮助您一路走来。阅读ZeroMQ 指南,了解如何在没有 SPOF 的情况下设计您的应用程序。

传输和路由

关于传输选项(如果我理解正确的话) - 由您来定义您的协议。ZeroMQ 基本上向您保证它将把这些数据传送到另一端。使用 JSON、协议缓冲区、摩尔斯电码,随心所欲。

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

稳定

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

注意:始终使用最新版本 - 2.1 版本非常注重稳定性,因此解决了许多稳定性问题

社区

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

一体化

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

陷阱

有一些,但它们都记录在指南中。(例如:当您连接(SUB)到它时,您可能会错过来自 PUB 套接字的前几条消息。指南中有对此的解释以及如何处理它的秘诀)。

全面的

我发现这是设计最好的软件之一 - 稳定、编写良好、文档齐全并且不会妨碍我。

我建议您从头到尾阅读指南。它写得很好,有很多语言(包括 C++)的例子,它描述了很多边缘情况和痛点。

于 2011-08-25T06:39:22.270 回答