GNU/Linux >> Linux の 問題 >  >> Linux

複数の IP を持つマシンで ZeroMQ パケットの送信元 IP アドレスを制御する方法は?

まあ、ZeroMQ は socket として読むのが少し難しいです -「相手方」

なぜですか?

クラシック socket は自由に利用できるリソースです。

ZeroMQ は、アイデアのかなり複雑な階層であり、動作の原則 (より適切に分散された動作) であり、低レベルの (ZeroMQ が十分に抽象化された) 詳細に触れることなく、スマートな分散コンピューティング システムを設計するのに役立ち、嵐の中でのイベントの実際の流れを制御します。すべての分散コンピューティング システムは過酷な状況に直面する可能性があります (そして、ZeroMQ が維持することを「約束した」高レベルの抽象化が満たされ、設計者の心が自分の/彼女のコア アプリケーション部分であり、O/S リソースのひもを引っ張ったり、ほんの数種類の簡単な種類の果物を収集するためのシステム サービスを揺るがしたりして、ホイールを再設計することはありません (すべての試行錯誤を伴います)。

これらの理由から、ZeroMQ が「何かのような」であることを忘れたほうがよいでしょう。 socket "

5 秒未満で ZeroMQ 階層

1:
ZeroMQ は、いくつかの些細なスケーラブルなフォーマル コミュニケーション パターンのアーキタイプを簡単に再利用できることを約束します 特定の分散動作を提供する { PUB/SUB | PUSH/PULL | PAIR/PAIR | XPUB/XSUB | ... | REQ/REP } .

2:
デバイスレスのみを排他的に使用する場合を除く inproc:// transport-class、他のすべてのケースでは、ZeroMQ は調整可能な「エンジン」の 1 つ以上のインスタンスを必要とします " - Context( nIOthreads = N ) N >= 1 .

3:
これがあれば、任意の (将来のソケット ) アクセス ポイント インスタンス化され、誕生の瞬間から行動の原型を持つ可能性があります:

aSubscribeCHANNEL = aLocalCONTEXT.socket( zmq.SUB )      # this is NOT a <SOCKET>
#                                 ^^^^^^__________________ even it was typed in

4:
アクセス ポイントがある」 " ローカル "engine の "内部" で "インスタンスが準備完了 「、1つ以上を使用して、その具体化を外部現実に閉じ込めることができます(はい、もっと... WOW!つまり、単一のアクセスポイント「動作ノード」から吹き飛ばされる / 口笛が吹き込むことを意味します)これらのメソッドのいずれかへの呼び出し:
.bind( <transport-class>://<a-class-specific-address> )
また
.connect( <transport-class>://<a-class-specific-address> )

5:
.bind() の場合のみ -RTO 対応のアクセス ポイント A "訪問 " 初ライブ .connect() - RTO 対応のアクセス ポイント B、一致する動作のペアを持ち、ZeroMQ メッセージング/シグナリング アーキタイプが有効になります (ソケット とも呼ばれます) 説明を簡単にするために、おそらく歴史的な理由で使用されました)

( PUB/PUB PUB/SUB に対して、明らかな理由で適合しません。 そして、他の多くの振る舞いとアーキタイプのペアが素敵にマッチし、相互に「互換性のある」振る舞いを形成し、最終的にライブになり、そのまま維持されます )

では、
Python ZeroMQ ソケットで同じことを行うにはどうすればよいですか?
複数のアドレスを持つマシンを指定しますか?

への呼び出しで完全修飾仕様を使用するだけです。
.bind( "{ tcp | pgm | epgm }://<ip>:<port#>" ) メソッドで完了です。

簡単です。

いいですね。

パフォーマンスの調整、レイテンシーの削減、セキュリティの微調整など、さらに多くのうれしい驚きがあります。


Linux
  1. 複数のファイルの拡張子を変更するにはどうすればよいですか?

  2. Whoisクエリのソースアドレスを制御しますか?

  3. Python でキーボードとマウスを制御するにはどうすればよいですか?

  1. LinuxでCからIPアドレスを設定する方法

  2. 複数の Tor プロセスを異なる終了 IP で一度に実行する方法は?

  3. Ansible を使用してリモート マシンからローカルに複数のファイルをフェッチする方法

  1. 複数のホストアドレス/ポートなどで同じSshエイリアスを使用する方法は?

  2. Appindicator.indicatorで作成されたインジケーターの位置を制御する方法は?

  3. Linuxのソケットバッファサイズを見つける方法