首页 > 解决方案 > 在 Curator 中使用带有缓存的选择策略

问题描述

使用 apache curator 的服务发现页面 ( https://github.com/Netflix/curator/wiki/Service-Discovery ) 介绍了以下概念:

  1. 主要的抽象类是ServiceProvider。它封装了特定命名服务的发现服务以及提供者策略。提供者策略是一种从给定服务的一组实例中选择一个实例的方案。共有三种捆绑策略:Round Robin、Random 和 Sticky(总是选择同一个)。ServiceProviders 是使用 ServiceProviderBuilder 分配的。

  2. 上述每个查询方法都直接调用 ZooKeeper。如果您需要的不仅仅是偶尔查询服务,您可以使用 ServiceCache。它将特定服务的实例列表缓存在内存中。它使用 Watcher 使列表保持最新。您通过 ServiceDiscovery.serviceCacheBuilder() 返回的构建器分配 ServiceCache。

我可以看到如何使用 Provider 策略ServiceProviderBuilder,但是在 上没有等效的方法,并且类本身ServiceCacheBuilder上唯一可用的相关方法是,它获取所有实例。ServiceCachegetInstances()

如何将提供者策略与ServiceCache?

标签: apache-curator

解决方案


坦率地说,这方面的文档真的很糟糕。如果有人可以用更好的文档提出拉取请求,那就太好了……

请注意,ServiceCache实现InstanceProvider. 还要注意ProviderStrategy.getInstance()has 作为它的论点InstanceProvider。因此,您可以将 ServiceCache 实例传递给您想要使用的任何 ProviderStrategy。

我希望这有帮助。


推荐阅读