apache-curator - 在 Curator 中使用带有缓存的选择策略
问题描述
使用 apache curator 的服务发现页面 ( https://github.com/Netflix/curator/wiki/Service-Discovery ) 介绍了以下概念:
主要的抽象类是ServiceProvider。它封装了特定命名服务的发现服务以及提供者策略。提供者策略是一种从给定服务的一组实例中选择一个实例的方案。共有三种捆绑策略:Round Robin、Random 和 Sticky(总是选择同一个)。ServiceProviders 是使用 ServiceProviderBuilder 分配的。
上述每个查询方法都直接调用 ZooKeeper。如果您需要的不仅仅是偶尔查询服务,您可以使用 ServiceCache。它将特定服务的实例列表缓存在内存中。它使用 Watcher 使列表保持最新。您通过 ServiceDiscovery.serviceCacheBuilder() 返回的构建器分配 ServiceCache。
我可以看到如何使用 Provider 策略ServiceProviderBuilder
,但是在 上没有等效的方法,并且类本身ServiceCacheBuilder
上唯一可用的相关方法是,它获取所有实例。ServiceCache
getInstances()
如何将提供者策略与ServiceCache
?
解决方案
坦率地说,这方面的文档真的很糟糕。如果有人可以用更好的文档提出拉取请求,那就太好了……
请注意,ServiceCache
实现InstanceProvider
. 还要注意ProviderStrategy.getInstance()
has 作为它的论点InstanceProvider
。因此,您可以将 ServiceCache 实例传递给您想要使用的任何 ProviderStrategy。
我希望这有帮助。
推荐阅读
- java - 没有 else 语句的中断
- javascript - 有没有办法解构传递给函数 onClick 的数据属性?
- swift - 表格视图高度未正确设置动画
- azure - 迁移到 Azure VM 时在 IIS 上启用 NUMA
- c# - 如何从模型列表中删除特定字段
- prometheus - Prometheus Query - irate() 中使用的数字范围是否有限制?
- javascript - Highcharts - 桑基图 - 如何将一些系列数据标签名称显示为图标或其他名称
- ios - 具有透明背景的 SwiftUI NavigationView
- c# - EF Core:AutoMapper ProjectTo ToListAsync 抛出“对象引用未设置为对象的实例”
- oracle - 如何在 oracle sql developer 中为 oracle e 业务套件表设置模式