ZeroMQ与Crossroads I/O的比较

48

我正在研究在一个相当大的分布式系统中使用ZeroMQ作为消息/传输层,主要针对监控和数据收集(多个生产者,少量消费者)。

据我所知,目前有两种不同的实现,ZeroMQ和Crossroads I/O,后者是ZeroMQ的一个分支(在2012年?)。

我试图弄清楚该使用哪一个,并想知道它们之间的区别,但到目前为止还没有找到太多相关信息。

例如:

  • 它们是否在传输过程中兼容?
  • 它们是否具有API兼容性,即某种通用的基础API,可能带有不同的附加组件?
  • 它们是否都实现了对ZMTP(ZeroMQ消息传输协议)的支持?
  • 它们是否共享一种关于未来发展的共同理解,或者它们将继续朝着两个不同的方向发展?
  • 与另外一种方式相比,它们各自的利弊是什么?

基本上,如何选择其中之一?

1个回答

83

Crossroads.io自从Martin Sustrik开始开发一种名为Nano的C语言新堆栈后,就相当沉寂。链接在此:https://github.com/250bpm/nanomsg

据我所知,Crossroads.io没有实现ZMTP/1.0或ZMTP/2.0,而是使用了自己版本的协议。

Nano具有可插拔传输功能,我们可能会为其创建一个ZMTP传输。Nano非常不错,它重新思考了原始的libzmq库,如果成功的话,将成为一个很好的新内核。

理想情况下,Nano应该可以在API和协议级别上互操作,因此可以作为libzmq的可插拔替代品。然而,它还有很长的路要走。

请注意,现在出现了几个重写libzmq的库,包括JeroMQ(Java)和NetMQ(C#)。这两个都正确地实现了ZMTP/1.0和ZMTP/2.0。还有其他受0MQ强烈启发但不兼容的库,如Axon(https://github.com/visionmedia/axon)。

基于经验,用户更看重互操作性,几乎胜过任何其他方面,因此不同的0MQ类堆栈最终可能会使用相同的协议。


2
谢谢,看起来ZeroMQ现在是前进的道路。了解到其他兼容的实现正在出现是很好的 - 这对未来看起来非常有前途! - Jakob Möllås
4
我认为关键是提供许多使用相同协议、提供类似API和消息模式的替代方案。 - Pieter Hintjens
3
用户确实重视互操作性,但更看重稳定性、可靠性和长期支持。如果我们看看从AMQP到ZeroMQ再到Crossroads.IO再到Nano的发展历程,我不会押注Nano会是最终稳定版本。 - MSalters

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