我有很多服务连接到zookeeper,我希望服务A可以获得服务B的IP,当服务B连接到zookeeper时,是否有任何API可以做到这一点?或者我必须使用其他配置文件来记下所有服务的IP?
答案 0 :(得分:2)
看看这是否解决了您的问题: http://curator.apache.org/curator-x-discovery/
Zookeeper没有提供开箱即用的服务发现,但很容易自己实现。
您无法直接从Zookeeper API获取其他连接客户端(在您的情况下为服务)的IP地址。为了获得连接到集群的其他服务,每个服务必须在特定路径下单独创建短暂的znode,例如, / services,并将必要的寻址和命名信息设置为znode的数据(IP,端口等)。这样,您可以列出该路径并发现活动服务,或者查看/ services路径以了解服务配置中的任何更改。
由于服务正在创建临时节点,因此一旦断开连接并且会话过期,它们将自动被删除。当然,一旦你开始做这样的事情,你会发现你必须做出许多小细节和设计决定,而不是已经提到的策展人食谱。