1

我有以下问题:

云中有一组基于 ZMQ 的代理。这些将在 Amazon VPC 中运行,使用特定的 IP 范围。

还有客户端应用程序,这些应用程序在所有主机上运行,​​并且可以位于世界任何地方。

我希望这些客户自动发现可用的经纪人。:

Broker1: 172.44.22.33
Broker2: 172.44.22.34
Broker3: 172.44.22.35
Broker4: 172.44.22.36
....

Client: 82.34.55.12

...当这个客户端启动时,它应该获取上面的代理 IP 列表。

我的问题是最好的方法是什么?

当然,客户端可以使用蛮力方法,尝试连接到范围内的所有 IP,但这不是一个好的或有效的解决方案。

我猜,VPC 可以支持多播(通过 n2n),在这种情况下,客户端将发送多播消息,可用的代理将使用发送方 IP“回复”该消息,这始终是多播数据的一部分(就我知道)。

但是没有更好的方法来做到这一点吗?我需要客户端自动发现,因为这必须是一个零配置系统。

我知道可以使用多播/广播或 bonjure/zeroconf 之类的东西在 LAN 上轻松完成发现。但是客户端不是我网络的一部分,它们可以位于任何地方。

提前致谢!

编辑:

我知道这也可以通过其他方式解决,例如添加“配置服务器”来存储有关可用代理的信息,但我更喜欢分散的解决方案。

编辑2:

看来 DNS-SD 可用于此目的,因为支持广域发现。如我所见,我甚至可以手动将一些特殊的 DNS 条目添加到我的 DNS 服务器。

客户端只需要知道其 DNS 记录存储广告服务数据的域名。

我想,客户端需要集成 bonjur / avahi 库或其他一些 DNS-SD 实现来执行这些查询,对吧?avahi,最好的免费图书馆是什么?

4

1 回答 1

0

您将拥有多快和多少组件?

所以这是一种使用配置服务器的方式,但有一点不同,你需要一个种子列表,你知道将永远存在的组件列表。

这些组件中的每一个都应该是一个配置服务器或运行一个发现服务,当一个组件启动它时,它会向种子列表中的所有发现服务注册并订阅来自所有的更改,然后在内部管理来自所有发现的更新的所有组件的列表服务。

如果您计划拥有超过 20 个左右的组件,我建议您使用 gossip 协议,但是在您识别所有组件之前,这会比较慢。

于 2015-01-06T12:08:23.650 回答