同一台计算机上的对等体的UDP自动发现

时间:2013-03-25 20:34:09

标签: network-programming autodiscovery

我正在考虑ZeroMQ Realtime Exchange Protocol (ZRE)作为在分布式应用程序中构建对等方自动发现的灵感。

我在这个模型之后使用Python在Python中构建了一个简单的原型应用程序。它似乎具有(显而易见的,回想起来)限制,它只适用于检测对等体,如果所有对等体都在其他机器上。这是由于发现端口上的套接字绑定操作。

阅读SO_REUSEADDR and SO_REUSEPORT告诉我,我无法使用ZRE中描述的UDP广播方案完全做到这一点。

如果您需要为分布式应用程序构建自动发现机制,以便多个应用程序实例(可能具有不同的versioN)可以在同一台机器上运行,那么您将如何构建它?

1 个答案:

答案 0 :(得分: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 &