2013-03-25 2 views
3

Я ищу ZeroMQ Realtime Exchange Protocol (ZRE) как вдохновение для создания автоматического обнаружения сверстников в распределенном приложении.Автоматическое обнаружение UDP для одноранговых узлов на той же машине

Я создал простую прототипную программу, использующую UDP в Python после этой модели. Кажется, у него есть (по-видимому, в ретроспективе) ограничение, что оно работает только для обнаружения сверстников, если все сверстники находятся на других машинах. Это связано с операцией привязки сокета на порт обнаружения.

Чтение на SO_REUSEADDR and SO_REUSEPORT говорит мне, что я не могу сделать это с помощью широковещательной схемы UDP, как описано в ZRE.

Если вам нужно создать механизм автоматического обнаружения для распределенных приложений, чтобы на одном компьютере можно было запускать несколько экземпляров приложения (возможно, с другим versioN), как бы вы его построили?

ответ

0

Вы должны иметь возможность привязывать каждый экземпляр сервера к другому адресу. Вся подсеть 127.0.0.0/8 должна быть разрешена для вашего локального хоста, поэтому вы можете настроить, например, одну услугу, прослушивающую 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 & 
+0

Ничего себе, аккуратный! Даже не осознавал, что это возможно. Нужно попробовать! –

Смежные вопросы