web-dev-qa-db-ja.com

ZeroMQ対Crossroads I / O

ZeroMQをかなり大規模な分散システムのメッセージング/トランスポート層として使用することを検討しています。主に監視とデータ収集(多くのプロデューサー、少数のコンシューマー)を対象としています。

私が見る限り、現在、同じ概念の2つの異なる実装があります。 ZeroMQとCrossroads I/O。後者はZeroMQの分岐点です(2012年?)。

私はどちらを使用するかを考え、それらの違いについて疑問に思っていますが、これまでのところこれに関する多くの情報を見つけていません。

例:

  • ワイヤ上で互換性がありますか?
  • API互換性がありますか?
  • どちらもZMTP(ZeroMQ Message Transport Protocol)のサポートを実装していますか?
  • 彼らは将来の開発について何らかの共通の理解を共有していますか、それとも2つの別々の可能な異なる方向に進みますか?
  • 他との関係で賛否両論は何ですか?

基本的に、どのように他の1つを選択するのですか?

46
Jakob Möllås

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のプラガブルな代替品となります。とはいえ、かなり長い道のりがあります。

JeroMQ(Java)やNetMQ(C#)など、libzmqの書き直しがいくつか行われていることに注意してください。これら2つは、ZMTP/1.0およびZMTP/2.0を適切に実装します。 Axon(https://github.com/visionmedia/axon)のような他のライブラリもあります。これらは0MQに大きく影響を受けていますが、互換性はありません。

経験に基づいて、ユーザーは他のものよりも相互運用性を重視しているため、異なる0MQのようなスタックが同じプロトコルを話すようになる可能性が非常に高くなります。

79
Pieter Hintjens