传统的"静态"正在出现剥夺全球状态 out 的新趋势。配置管理工具,如Chef / Puppet / Ansible,而是将配置存储在某些集中/分布式工具中,其中主要参与者出现:
这些工具中的每一种都有不同的作用,但原理是相同的:
MY_APP
")和环境(" DEV
"," {{ 1}}"等等。)有一个excellent Consul Java client可以很好地解释所有这些并提供充足的代码示例。
我对这些工具的理解是它们构建在一致性算法之上,例如Zab,Paxos和Gossip,它们允许配置更新几乎以病毒式传播,在整个节点中具有最终的一致性。因此,如果你有一个PROD
应用程序有20个节点,比如说myapp
到myapp01
,如果你对其中一个进行配置更改,那么这个想法就会自然而然地#34;传播"在几秒钟/分钟的整个20个节点中。
我的问题是:这些更新实际如何部署到每个节点?在任何客户端API(我上面链接的那个,ZooKeeper API或Eureka API)中都没有看到某种回调功能,可以设置并用于在集中服务(例如领事)时通知客户端cluster)想要推送和重新加载配置更新。
所以我问:这应该如何工作(动态配置部署和客户端重装)?虽然Consul的API似乎是最先进的恕我直言,但我对任何任何<3>工具的可行答案感兴趣。
答案 0 :(得分:0)
您可以使用cfg4j。它是分布式服务的Java配置库。它支持Consul作为配置源之一。
答案 1 :(得分:0)
这是一个很好的问题。我可以告诉Consul HTTP客户端如何工作。
我最初也认为它可以在推送机制中工作,但是当我最近探索Consul时,我发现所有Consul客户端都会轮询服务器以查看他们想要监视的更改。尽管轮询机制有些不同,但是Consul支持阻止查询。这些是HTTP请求,最大超时时间为10分钟。该查询将一直等到监视的键/文件夹发生更改,然后返回最新的索引。如果索引已更改,则客户端将重新加载配置。有关更多信息:Consul Blocking Query