| 開発者 | アイマティクス |
|---|---|
| 安定リリース | 4.3.5 [1]
/ 2023年10月9日 |
| リポジトリ |
|
| 書かれた | C++ |
| プラットフォーム | クロスプラットフォーム |
| タイプ | メッセージキュー、並行処理フレームワーク |
| ライセンス | MPL-2.0 [2] |
| Webサイト | ゼロムク |
ZeroMQ(ØMQ、0MQ、ZMQとも表記される)は、分散型または並行型のアプリケーションでの使用を目的とした非同期メッセージングライブラリです。メッセージキューを提供しますが、メッセージ指向ミドルウェアとは異なり、ZeroMQシステムは専用のメッセージブローカーなしで実行できます。名前のゼロはゼロブローカーを意味します。[3]ライブラリのAPIは、バークレーソケットに似せて設計されています。
ZeroMQ は、ドメイン名と商標を保有する iMatix によって設立された、大規模な貢献者コミュニティによって開発されています。多くの一般的なプログラミング言語用のサードパーティ バインディングがあります。
テクノロジー
ZeroMQ API はソケット(従来のIPおよびUnix ドメイン ソケットの一種の一般化) を提供します。各ソケットはエンドポイント間の多対多の接続を表すことができます。メッセージ単位の粒度で動作するには、メッセージング パターンを使用する必要があり、その種類のパターンに特に最適化されています。
基本的な ZeroMQ パターンは次のとおりです。
- リクエストと返信
- 一連のクライアントを一連のサービスに接続します。これは、リモート プロシージャ コールとタスク分散パターンです。
- 公開・購読
- パブリッシャーのセットをサブスクライバーのセットに接続します。これはデータ配布パターンです。
- プッシュプル(パイプライン)
- 複数のステップとループを持つことができるファンアウト/ファンイン パターンでノードを接続します。これは、並列タスクの分散および収集パターンです。
- 限定ペア
- 排他的なペアで 2 つのソケットを接続します。(これは、特定のユース ケース向けの高度な低レベル パターンです。)
各パターンは特定のネットワーク トポロジを定義します。リクエスト応答はいわゆる「サービス バス」を定義し、パブリッシュ サブスクライブは「データ配布ツリー」を定義し、プッシュ プルは「並列パイプライン」を定義します。すべてのパターンは、無限にスケーラブルでインターネット規模で使用できるように意図的に設計されています。[4]
ソケットを経由するメッセージはすべて、不透明なデータブロブとして扱われます。サブスクライバーへの配信は、ブロブの先頭の文字列によって自動的にフィルタリングされます。使用可能なメッセージ トランスポートには、TCP、PGM (信頼性の高いマルチキャスト)、プロセス間通信 ( IPC )、およびスレッド間通信 (ITC) があります。
ZeroMQコアライブラリは、内部スレッドモデルのおかげで非常に優れたパフォーマンスを発揮し、自動メッセージバッチ処理技術を利用することで、スループットの点で従来のTCPアプリケーションを上回ることができます。[5] [6]
ZeroMQはZMTP(ZeroMQメッセージ転送プロトコル)を実装しています。[7] ZMTPは、後方相互運用性、拡張可能なセキュリティメカニズム、コマンドとメッセージのフレーミング、接続メタデータ、およびその他のトランスポートレベルの機能に関するルールを定義します。完全なZeroMQ実装を使用する代わりに、ZMTPを直接実装するプロジェクトが増えています。[8]
歴史
iMatix の CEO であるPieter Hintjens氏は、2007 年 5 月に zeromq.org ドメインを登録し、2011 年 12 月まで同プロジェクトの設計者および主任開発者を務めた Martin Sustrik 氏とともに ZeroMQ プロジェクトを開始しました。
2010年3月30日、Hintjensは、iMatix( Advanced Message Queuing Protocolの元の設計者)がAMQPワークグループを離れ、AMQP/1.0をサポートする予定はなく、よりシンプルで高速なZeroMQを採用すると発表した。[9] [10]
2011年、CERNはCERNの加速器を操作するために使用されるミドルウェアソリューションを統合する方法を調査していました。CERNの研究では、CORBA、Ice、Thrift、ZeroMQ、YAMI4、[11] RTI、Qpid (AMQP)の2つのオープンソース実装を比較し、 LynxOSへの容易な適応性を含む汎用性によりZeroMQに最高のスコアを付けました。[6]
2012年の初めに、元の開発者のうち2人がZeroMQをCrossroads I/Oとしてフォークしました。 [12] [13] Martin SustrikはZeroMQコアライブラリの書き直しであるnanomsg [14]を開始しました。[15]
2012年8月、Dongmin YuはZeroMQの純粋なJava版であるJeroMQを発表しました。[16]これは、C#用のNetMQ [17]やRust用のzmq.rs [18]など、ZeroMQのさらなる完全ネイティブ移植に影響を与えました。
2013年3月、ピーター・ヒントェンスは、ZeroMQに拡張可能なセキュリティメカニズムをもたらすZMTPワイヤレベルプロトコルの新しいドラフトを発表しました。[19]マーティン・ハートンは、その後すぐにコアライブラリに CurveZMQ認証および暗号化メカニズム[20]を実装しました。
2016年、長年ZeroMQの開発に携わってきたギャレット・ダモーレは、NanomsgをフォークしてNNG(Nanomsg Next Generation)プロジェクトを立ち上げた。[21]
開発プロセス
ZeroMQコミュニティは、開発契約としてCollective Code Construction Contract(C4)[22]を主に使用しています。C4は、 WikipediaのプロセスとGitHubのフォーク+プルリクエストモデルに触発されており、新しい貢献者が参加しやすくし、古い貢献者への依存を減らすことに重点を置いています。
参照
参考文献
- ^ “リリース 4.3.5”. 2023年10月9日. 2023年10月20日閲覧。
- ^ 「ØMQライセンス」 。 2023年6月8日閲覧。
- ^ 「始めましょう」。
- ^ 「スケーラビリティ レイヤーがインターネット スタックに登場」。2019 年 5 月 28 日時点のオリジナルよりアーカイブ。2013年 9 月 4 日閲覧。
- ^ 「ØMQ は TCP 上に構築されているのに、なぜ TCP よりもスループットが高いのですか?」ZeroMQ FAQ。2013年6 月 8 日閲覧。
- ^ ab 「ミドルウェアのトレンドとマーケットリーダー 2011」 。2013年6 月 8 日閲覧。
- ^ 「ZeroMQ メッセージ転送プロトコル」 。2013年6 月 8 日閲覧。
- ^ 「GitHub Search: ZMTP」。GitHub 。 2013年6月8日閲覧。
- ^ 「iMatix は 2011 年までに OpenAMQ のサポートを終了します」。openamq-dev メーリングリスト。2016 年 3 月 5 日時点のオリジナルよりアーカイブ。2018年9 月 5 日閲覧。
- ^ 「AMQP の問題点 (およびその修正方法)」。iMatix Corporation。2012年7 月 14 日閲覧。
- ^ 「Inspirel YAMI4」 。 2012年7月14日閲覧。
- ^ 「ZeroMQ と Crossroads I/O: 商標の譲渡」LWN.net 。2012 年7 月 14 日閲覧。
- ^ 「Crossroads I/O」 。 2012年7月14日閲覧。
- ^ "nanomsg" . 2013年6月8日閲覧。
- ^ 「なぜ ZeroMQ を C++ ではなく C で書くべきだったのか」
- ^ "jeromq - java pojo zeromq". zeromq-dev メーリングリスト。 2013年7月31日時点のオリジナルよりアーカイブ。2013年5月23日閲覧。
- ^ "NetMQ". GitHub . 2013年5月23日閲覧。
- ^ "zmq.rs". GitHub . 2020年10月24日閲覧。
- ^ 「ZeroMQのセキュリティ確保:ZMTP v3.0プロトコル草案」 Hintjens.com . 2013年5月23日閲覧。
- ^ カーブズムク
- ^ “NNG: Nanomsg-NG”. nanomsg.org 。2023 年8 月 4 日に取得。
- ^ 「Collective Code Construction Contract (C4.1)」。ZeroMQ RFC 。 2013年5月23日閲覧。
外部リンク
- 公式サイト
- GitHub の ØMQ コミュニティ
- Martin Sustrik、Martin Lucina (2010 年 1 月 20 日)。0MQ: メッセージングへの新しいアプローチ – LWN.net
- ZeroMQ が答えです (PHP UK カンファレンス 2012 での講演)
- ZeroMQ の紹介 2010-07-08 にWayback Machineでアーカイブされました
- ZeroMQ を選ぶ理由 (紹介ビデオ)
- ZeroMQ: 最新かつ高速なネットワーク スタック (Ruby の例による概要)
- ØMQ: 理論的基礎 2020-06-30 にWayback Machineにアーカイブされました
