ZeroMQ生产准备好了吗?

时间:2011-02-02 04:34:37

标签: messaging zeromq

您将ZeroMQ作为通用消息传递中间件的经验是什么?

  1. 您是否遇到任何显示停止错误或非显而易见的“功能”?例如。 2.0没有正确地刷新消息,the troubleshooting guide似乎给出了最可怕的解决方法:“sleep(1)退出之前”。
  2. API是否降低了应用程序的复杂性,还是证明它很麻烦?
  3. 向后兼容性经常被破坏吗?

3 个答案:

答案 0 :(得分:30)

我用它进行研究,所以“半生产”。这是一个很棒的框架,一旦你完全了解它,事物的架构方式肯定是有意义的。但是,考虑到生产就绪,我遇到了太多问题。我正在使用jzmq,所以其中一些可能是特定的。

  1. 在OS X / Eclipse上设置jzmq是......不愉快。
  2. 启动应用程序偶尔会导致ZeroMQ C代码中的断言失败,因此我需要将我的应用程序包装在检查此异常状态的内容中。
  3. 错误往往是非常不合理的。我有太多的非法状态异常,没有解释性消息。
  4. 不支持TLS。这对我来说几乎是一个交易破坏者,我可以很容易地看到它排除了它在许多应用程序中的可用性。
  5. 文档已“关闭”。 official guide很不错,但如果您遇到特定问题,通常没有帮助。当谷歌搜索时,我需要比平时更长的时间来找到答案。但邮件列表非常活跃。
  6. 但是,这是一个很大但是,我无法计算它为我节省了多少工时。 This post总结了一些让生活更愉快的方式。

答案 1 :(得分:14)

我也在“半生产”环境中使用ZeroMQ(DARPA的原型设计)。到目前为止,它已经非常适合“将猫绑在一起”,特别是当这些猫用不同语言编写并生活在不同的机器上时。可用的套接字习惯使思考关于分布式计算问题非常简单。 ZeroMQ的优势在于人体工程学:坚实的心理模型和丰富的语言绑定。

但是,如果您遇到严格的性能限制,请谨慎行事。我正在研究一个实时系统,并发现虽然ZeroMQ的目标是成为一个高性能解决方案,但它尚未准备好迎接黄金时段。我认为现有的架构具有巨大的潜力;它似乎被一些琐碎的错误所阻碍。我可能应该期望从一个发展如此迅速的图书馆,在相对较短的时间内从0.0到3.0。尽管如此,我还是认为我可以直接替换自己的手工协议栈并立即打击一些交易破坏者。如果您决定使用ZeroMQ,请记住您在传输层之上工作得很好,如果性能不太理想,那么您就无法做到这一点。

话虽如此,邮件列表和IRC频道上的聊天非常棒。开发人员似乎真正对构建完全最先进的东西感兴趣。他们喜欢他们的图书馆有嗡嗡声,并且习惯于认真,有趣的事情。他们是忙碌的人,所以不要指望大量的手持。但是,如果你遇到了真正的问题,他们很想知道发生了什么。

底线:一款出色的瑞士军刀,适用于日常分布式计算问题。如果你正在寻找最前沿的表现,要小心;它至少有一个主要的释放。尽管如此,未来对于这个项目看起来很棒,所以请使用它并支持它。

答案 2 :(得分:0)

免责声明:这来自于之前从未使用过AMQP或任何其他类似产品的人。

错误的文档很糟糕。(如果没有.Net和C#的文档,C#会很糟糕)所以如果你知道如何使用它,ZMQ可能是最好的东西,但是存在的文档(不是很多)非常糟糕(我们非常聪明,这很好,Erlang,等等等等,而不是指南中的单个n-to-n示例。)。
你这么说,大多数操作系统项目都有错误的文档或没有。是的但是对于很少的OS项目你可以谷歌大量的东西(教程,例子......)。 使用ZMQ,它是:零用于文档。 因为我是一个C ++开发人员说它像这样。在尝试使用ZMQ之前,我认为在网络上提供了糟糕的文档和相对较少的示例。但与ZMQ Boost相比,文档非常好,而且示例很丰富。

编辑:让事情变得更有趣(内战:P): http://www.infoq.com/news/2012/03/Crossroads-IO

  

Martin Sustrik和Martin Lucina,原始ZeroMQ的创造者,   决定通过分叉来重新获得对项目的控制权。新的   这个名为Crossroads I / O的项目正在筹备中   商业生态系统能够更好地满足其长期需求   财务需求。

EDIT2:复制并运行指南中的示例(“请求 - 回复代理”的cpp版本) 不起作用。 您可以通过他们没有将其示例作为测试这一事实来了解库开发过程有多好。 :P
编辑3:一些例子在v2。*中,ofc最新版本是v3.2。所以这又闻起来像一个腐烂的无维护的OS项目。