0

底线:有没有办法在 Zookeeper 中支持非 Java 发现客户端制作的实例,同时提供自定义元数据。

我正在构建一个 Spring Cloud API 网关。我们对大部分路由和 Spring Cloud Load Balancer 使用 Zookeeper 发现。它适用于 Java 微服务。除了正常的发现和负载均衡,我想使用元数据来指定自定义属性;像安全和速率限制参数。

我需要介绍一些用 Python 编写的非 Java 服务,所以我想为这些服务使用发现,因为它们托管在动态集群中。在这种情况下,如果我能让 Zookeeper 做我需要的事情,那么继续使用 Zookeeper 对我们来说意义重大。

我检查了 Zookeeper /services 节点的内容,看看发生了什么,我能够复制其中的大部分内容,并实际让发现和负载平衡工作,但元数据更深一层,我无法理解工作,因为它嵌入在策展人/动物园管理员特定的对象中。

我想我知道的足够多,可以编写自己的实现DiscoveryClient并返回自己的ServiceInstances,但如果我几乎可以使用我已经拥有的东西,那似乎需要做很多工作。我还必须为此编写 Python 客户端。

4

1 回答 1

0

如果无法自动识别,我通过重新实现InstanceSerializer手动构建来解决这个问题。ZookeeperInstanceObjectMapperZookeeperInstance

于 2020-10-30T16:02:44.513 回答