ZeroMQをかなり大規模な分散システムのメッセージング/トランスポート層として使用することを検討しています。主に監視とデータ収集(多くのプロデューサー、少数のコンシューマー)を対象としています。
私が見る限り、現在、同じ概念の2つの異なる実装があります。 ZeroMQとCrossroads I/O。後者はZeroMQの分岐点です(2012年?)。
私はどちらを使用するかを考え、それらの違いについて疑問に思っていますが、これまでのところこれに関する多くの情報を見つけていません。
例:
基本的に、どのように他の1つを選択するのですか?
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のようなスタックが同じプロトコルを話すようになる可能性が非常に高くなります。