配置中心

配置中心

基于Git的配置中心

在Spring Cloud中,配置中心是基于Git实现的。config-server是配置服务器,会将配置的相关操作以http的形式暴露出去。client是应用服务器,对于config-server来说,它是client。client在启动时会从config-server加载数据。

图1是较为简单的配置中心,这个配置中心有一个问题:client端的配置不能动态更新。因为client只会在启动时加载配置,后续如果修改了git中的内容,client中的内容不会变。如果期望client获取最新数据,需要按如下步骤:
  1. 使用git push修改配置;
  2. 手动调用client的/bus/refresh接口主动更新配置;
  3. client请求server获取配置;
  4. server请求git获取配置。

图2是改进版的配置中心,能够做到client端配置的动态更新。

  1. 使用git push修改配置;
  2. git服务器发现有push事件,于是调用server的/bus/refresh接口(这项功能需要依赖git hook);
  3. server将更新消息发送给MQ;
  4. client监听MQ,发现有更新消息;
  5. client请求server获取配置;
  6. server请求git获取配置。

基于Zookeeper的配置中心

zookeeper可以理解为文件系统+监听机制,client监听zk上的节点,若节点数据发生变化,会通知client更新配置。

基于Http长轮询的配置中心

client使用http长轮询连接上server,若配置有变化,可通过http形式推送至client。