3

私は、分散アプリケーションでピアの自動検出を構築するためのインスピレーションとして、 ZeroMQ Realtime Exchange Protocol(ZRE)を見ています。

このモデルに従って、PythonでUDPを使用して簡単なプロトタイプアプリケーションを作成しました。すべてのピアが他のマシン上にある場合にのみピアを検出するために機能するという(明らかな、振り返ってみると)制限があるようです。これは、検出ポートでのソケットバインド操作が原因です。

読んで、ZREで説明されているUDPブロードキャストスキームではこれを正確に行うことはできないSO_REUSEADDRSO_REUSEPORT教えてくれました。

複数のアプリケーションインスタンス(おそらく異なるバージョン)を同じマシンで実行できるように、分散アプリケーションの自動検出メカニズムを構築する必要がある場合、どのように構築しますか?

4

1 に答える 1

0

各サーバーインスタンスを異なるアドレスにバインドできる必要があります。サブネット127.0.0.0/8全体がローカルホストに解決されるはずなので、たとえば、1つのサービスが127.0.0.1でリッスンし、別のサービスが127.0.0.2でリッスンするなどを設定できます。127.0.0.1から127.255.255.254までの任意のサービス。

# works as expected
nc -l 127.0.0.100 3000 &
nc -l 127.0.0.101 3000 &

# shows error "nc: Address already in use"
nc -l 127.0.0.1 3000 &
nc -l 127.0.0.1 3000 &
于 2016-06-01T23:42:54.353 に答える