如何获取znode ip

How to get znode ip

我有很多服务连接到zookeeper,我希望服务A可以获取服务B的IP,当服务B连接到zookeeper时,有没有API可以做到的?或者我必须使用其他配置文件来记下所有服务的 IP?

看看这是否解决了您的问题: http://curator.apache.org/curator-x-discovery/

Zookeeper 不提供开箱即用的服务发现,但您自己很容易实现。

您将无法直接从 Zookeeper API 获取其他已连接客户端(在您的情况下为服务)的 IP 地址。为了让其他服务连接到集群,每个服务都必须在特定路径下单独创建一个临时 znode,例如/services,并将必要的寻址和命名信息设置为 znode 的数据(IP、端口等)。这样,您可以列出该路径并发现活动服务,或观察 /services 路径以了解服务配置中的任何更改。

由于服务正在创建临时节点,一旦它们断开连接并且它们的会话过期,它们将被自动删除。当然,一旦你开始做这样的事情,你就会发现你必须做出许多小细节和设计决定,因此已经提到了策展人的秘诀。