自动发现ZMQ经纪人

时间:2015-01-05 18:08:53

标签: zeromq multicast discovery dns-sd

我有以下问题:

云中有一组基于ZMQ的经纪人。这些将使用某个IP范围在Amazon VPC中运行。

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

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

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“回复”该发送方IP,这始终是多播数据的一部分(据我所知)。

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

我知道可以在局域网上轻松完成发现,无论是使用多播/广播还是像bonjure / zeroconf这样的东西。但客户不是我的网络的一部分,他们可以位于任何地方。

提前致谢!

编辑:

我知道这也可以通过其他方式解决,例如添加“配置服务器”来存储有关可用经纪人的信息,但我更倾向于采用分散式解决方案。

EDIT2:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

所以它有点使用配置服务器,但有一个扭曲,你需要一个种子列表,你知道将永远在那里的组件列表。

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

如果您计划拥有超过20个组件,我建议使用八卦协议,但在您识别所有组件之前,这将会更慢。