配置工具如Consul" push"配置客户端更新?

时间:2015-06-18 09:19:22

标签: apache-zookeeper configuration-management netflix-eureka consul

传统的"静态"正在出现剥夺全球状态 out 的新趋势。配置管理工具,如Chef / Puppet / Ansible,而是将配置存储在某些集中/分布式工具中,其中主要参与者出现

  • ZooKeeper(Apache)
  • 领事(Hashicorp)
  • Eureka(Netflix)

这些工具中的每一种都有不同的作用,但原理是相同的:

  • 将这些工具中的环境变量和其他动态配置(即可能会发生变化的内容)存储为键/值对
  • 在启动时通过客户端连接到这些工具/服务,并下拉配置KV对。这通常要求客户提供服务名称(" MY_APP")和环境(" DEV"," {{ 1}}"等等。)

有一个excellent Consul Java client可以很好地解释所有这些并提供充足的代码示例。

我对这些工具的理解是它们构建在一致性算法之上,例如Zab,Paxos和Gossip,它们允许配置更新几乎以病毒式传播,在整个节点中具有最终的一致性。因此,如果你有一个PROD应用程序有20个节点,比如说myappmyapp01,如果你对其中一个进行配置更改,那么这个想法就会自然而然地#34;传播"在几秒钟/分钟的整个20个节点中。

我的问题是:这些更新实际如何部署到每个节点?在任何客户端API(我上面链接的那个,ZooKeeper API或Eureka API)中都没有看到某种回调功能,可以设置并用于在集中服务(例如领事)时通知客户端cluster)想要推送和重新加载配置更新。

所以我问:这应该如何工作(动态配置部署和客户端重装)?虽然Consul的API似乎是最先进的恕我直言,但我对任何任何<3>工具的可行答案感兴趣。

2 个答案:

答案 0 :(得分:0)

您可以使用cfg4j。它是分布式服务的Java配置库。它支持Consul作为配置源之一。

答案 1 :(得分:0)

这是一个很好的问题。我可以告诉Consul HTTP客户端如何工作。

我最初也认为它可以在推送机制中工作,但是当我最近探索Consul时,我发现所有Consul客户端都会轮询服务器以查看他们想要监视的更改。尽管轮询机制有些不同,但是Consul支持阻止查询。这些是HTTP请求,最大超时时间为10分钟。该查询将一直等到监视的键/文件夹发生更改,然后返回最新的索引。如果索引已更改,则客户端将重新加载配置。有关更多信息:Consul Blocking Query