web-dev-qa-db-ja.com

ZeroMQとWebSocketの違い

ZeroMQWebSocketsprotocolsの違いを教えてください。

WebSocketsがWebブラウザクライアント用に設計されていることは知っていますが、サーバー間でも使用できると思います。

そして、その場合、_リアルタイムメッセージングWebSocketsなどの代わりにZeroMQを使用するのが良いのではないかと思います。

具体的には、一時的なネットワーク障害が発生した場合のreliabilityおよびmissing messagesが心配です。

32
repalviglator

A:リアルタイムメッセージングは​​素晴らしいタグですが

Real-Timeの領域に入ると、メッセージをXHTMLにラップするのにクロックサイクルを費やすことは正当化されないことにすぐに気付くでしょう-Matrjoska-in-Another-Matrjoska-inside-another-Matrjoska同様のエンベロープ-inside-envelopesおよび関連する非効率性。

リアルタイムはリアルタイムで操作するのに苦労しているため、の処理に必要な最小達成可能時間を費やす/失うtaskUnit

同様の* ML-"sexy"方法で物事を再ラップする試みがありますが、結果としてパフォーマンスが低下し、代わりにリアルタイム領域の「外側」になりますそこでのパフォーマンス向上に重要な助けとなります。

これの非常に良い例は、XHTMLエンコードされたペイロードに対する金融市場の標準のFIX-プロトコル「拡張」を行う "quasi-IT-guru-crowd"の取り組みに関連するナンセンスです、高頻度トレーディングR&Dにおけるクレームアラクラームの取り組みは、関連するナノ秒を削る方法に莫大な資金/時間/労力を費やしています各IPパケットのワイヤアンロードと、待機中のリアルタイムdata要素の可能な最速のデマッピング/デコーディング_prefixTag:value_の元の仕様の最小限の設計に含まれていました。

A:プロトコルの違いが主です

WebSocketsは_port:80 HTML/XHTML_と同様のラッピングと高レベルのペイロードコンテンツのフレーミングに重点を置いていますが、ZeroMQ反対方向に進みます。トランスポートの低レベルの詳細からコードを「非表示」および「オフロード」します(したがって、INPROC/IPC/TCP/PGM/EPGM/UDP/VMCI/...ローカル、クラウド全体、または両方の混合のトランスポートクラス)

WebSocketプロトコルには、固定のクライアントとサーバーの役割とHTTPスタイルのハンドシェイクがあります。

WebSocketフォーカスは、UTF-8/CRLFコンテンツのフォーマットで終了し、のペアの間のフレーミング_0×00__0xff_バイトで、ブラウザが実行できるように設計された、このようなバッファされたメッセージを解析するWebBrowsersの機能に基づいています。

ZeroMQを使用したことがない場合は、
"ZeroMQPrinciplesin less than 5秒 " 詳細に入る前


ZeroMQは、特定の方法で連携するように作成された、ビルディングブロック上に構築するためのオープンアーキテクチャを提供します- -はい、彼らはBEHAVIOURを持っています-これは、デザインがより複雑なメッセージングパターンに使用していることです。これにより、無制限の上位層の抽象化が可能になり、一連の実績のあるビルディングブロックに基づいて構築されます-_ZMQ.PUBLISHER_は、すべての_ZMQ.SUBSCRIBER_- sにメッセージを送信します。公開されているニュースの一部。他のZMQプリミティブは、ラウンドロビンベースのロードバランサーの作成に役立ちます。追加の手順により、フェイルセーフアーキテクチャおよび同様の高度なソリューションを構築できます。

enter image description here

A:プロトコル機能

プロトコルの信頼性について尋ねましたが、プロトコルレベルにはより重要な属性があります-アセンブリ/再構成/分解のオーバーヘッド、パフォーマンスのスケーラビリティ、APIからワイヤーへのアクセスのレイテンシ、スレッドセーフ、および成長中のパフォーマンス属性の緩和ワークロードのレベル。

WebSocket port:80通信は、WebSocket以外の侵入に対して「オープン」ですが、ZeroMQ低レベルプロトコルは、高速で効率的な排他的なZMQ-2-ZMQ用に設計されています、ピアハンドシェイクおよびすべての設計作業は、より高い抽象化APIレベルから構築されており、そこからアプリケーションベースのソフトシグナリングを追加できます。これにより、要求された missing-messageの問題は、アプリケーションの状態に悪影響を及ぼしません。

enter image description here


勤勉な並行システムのプログラマー

threadingzero-copyに関するいくつかの高度なボーナスポイントも必要です&zero-latencyinternalities from this piece of indepth insightMartin SUSTRIKから、両方の共同父親ZeroMQ&少し若いPOSIX準拠の姉妹nanomsg

33
user3666197

あなたの質問は「ApacheとHTTPの違いは何ですか」のように聞こえます

WebSocketは単なるプロトコル(httpに類似)ですが、ZeroMQはプロトコルとサーバーであり、メッセージを受信して​​から消費されるまで、メッセージのライフサイクルを担当します。

1
Andrey Sidorov