3

我将ZeroMQ 实时交换协议 (ZRE)视为在分布式应用程序中构建对等点的自动发现的灵感。

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

继续阅读SO_REUSEADDRSO_REUSEPORT告诉我,我不能完全使用 ZRE 中描述的 UDP 广播方案来做到这一点。

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

4

1 回答 1

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 &
于 2016-06-01T23:42:54.353 回答