48

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

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

我试图找出使用哪一个并想知道它们之间的差异,但到目前为止还没有找到太多关于此的信息。

例如:

  • 它们在电线上兼容吗?
  • 它们是否与 API 兼容,即某种通用的基础 API,可能带有不同的附加组件?
  • 它们是否都实现了对 ZMTP(ZeroMQ 消息传输协议)的支持?
  • 他们是否对未来的发展有某种共同的理解,还是会继续朝着两个不同的、可能不同的方向发展?
  • 相对于其他的优点/缺点是什么?

基本上,一个人如何选择一个而不是另一个?

4

1 回答 1

83

Crossroads.io 已经死了,因为 Martin Sustrik 已经开始使用 C 语言的新堆栈,称为 nano:https ://github.com/250bpm/nanomsg

Crossroads.io 没有,afaik,实现 ZMTP/1.0 或 ZMTP/2.0,但它自己的协议版本。

Nano 具有可插拔传输,我们可能会为此制作 ZMTP 传输。Nano 真的很不错,是对原始 libzmq 库的重新思考,如果它成功,将制作一个很好的新内核。

理想情况下,Nano 将在 API 和协议级别进行互操作,因此成为 libzmq 的可插拔替代品。不过,它确实还有很长的路要走。

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

根据经验,用户最看重互操作性比其他任何东西都重要,因此不同的类似 0MQ 的堆栈很可能最终会使用相同的协议。

于 2012-11-22T04:25:23.113 回答