私は、分散アプリケーションでピアの自動検出を構築するためのインスピレーションとして、 ZeroMQ Realtime Exchange Protocol(ZRE)を見ています。
このモデルに従って、PythonでUDPを使用して簡単なプロトタイプアプリケーションを作成しました。すべてのピアが他のマシン上にある場合にのみピアを検出するために機能するという(明らかな、振り返ってみると)制限があるようです。これは、検出ポートでのソケットバインド操作が原因です。
読んで、ZREで説明されているUDPブロードキャストスキームではこれを正確に行うことはできないSO_REUSEADDR
とSO_REUSEPORT
教えてくれました。
複数のアプリケーションインスタンス(おそらく異なるバージョン)を同じマシンで実行できるように、分散アプリケーションの自動検出メカニズムを構築する必要がある場合、どのように構築しますか?