底线:有没有办法在 Zookeeper 中支持非 Java 发现客户端制作的实例,同时提供自定义元数据。
我正在构建一个 Spring Cloud API 网关。我们对大部分路由和 Spring Cloud Load Balancer 使用 Zookeeper 发现。它适用于 Java 微服务。除了正常的发现和负载均衡,我想使用元数据来指定自定义属性;像安全和速率限制参数。
我需要介绍一些用 Python 编写的非 Java 服务,所以我想为这些服务使用发现,因为它们托管在动态集群中。在这种情况下,如果我能让 Zookeeper 做我需要的事情,那么继续使用 Zookeeper 对我们来说意义重大。
我检查了 Zookeeper /services 节点的内容,看看发生了什么,我能够复制其中的大部分内容,并实际让发现和负载平衡工作,但元数据更深一层,我无法理解工作,因为它嵌入在策展人/动物园管理员特定的对象中。
我想我知道的足够多,可以编写自己的实现DiscoveryClient并返回自己的ServiceInstances,但如果我几乎可以使用我已经拥有的东西,那似乎需要做很多工作。我还必须为此编写 Python 客户端。