在鉴展人中将选择策略与缓存结合使用



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

  1. 主要的抽象类是 ServiceProvider。它封装了特定命名服务的发现服务以及提供程序策略。提供程序策略是从给定服务的一组实例中选择一个实例的方案。有三种捆绑策略:循环,随机和粘性(始终选择相同的策略)。服务提供程序是使用 ServiceProviderBuilder 分配的。

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

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

如何将提供商策略与ServiceCache一起使用?

@simonalexander2005我只是在查看代码,结果发现ServiceProvider内部已经使用了serviceCacheBuilder。TBH - 我要么忘记了这个,要么它被另一个提交者输入了 - 我不确定。无论如何,我对这里的跑来跑去感到非常抱歉。此外,必须更新文档以反映这一点 - 我今天将为此打开一个问题。我相信这让你很生气,再次为此感到抱歉。不过,好消息是,使用ServiceProvider,您会自动获得缓存。

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

请注意,ServiceCache实现了InstanceProvider。另请注意,ProviderStrategy.getInstance()的参数InstanceProvider。因此,您可以将 ServiceCache 实例传递给要使用的任何提供程序策略。

我希望这有所帮助。

最新更新