Consul Config 使用Git做版本控制的实现

Spring Cloud Config 原理

我们通过git 把配置文件推送到远程仓库做版本控制,当版本发生变化的时候,远程仓库通过webhook机制推送消息给 Config Server,Config Server 将修改通知发送到消息总线,然后所有的Config Client 进行配置刷新。 非常巧妙的借助了Git来做配置文件修改的版本控制。

Consul Config 的FILES 机制

public enum Format {
	/**
	 * Indicates that the configuration specified in consul is of type native key values.
	 */
	KEY_VALUE,

	/**
	 * Indicates that the configuration specified in consul is of property style i.e.,
	 * value of the consul key would be a list of key=value pairs separated by new lines.
	 */
	PROPERTIES,

	/**
	 * Indicates that the configuration specified in consul is of YAML style i.e., value
	 * of the consul key would be YAML format
	 */
	YAML,

	/**
	 * Indicates that the configuration specified in consul uses keys as files.
	 * This is useful for tools like git2consul.
	 */
	FILES,

}

Consul 提供以上的策略,key/value、yaml、properties,可以很简单的通过Consule Config 的管理台进行配置,我们主要来看FILES,就是我们也是Cloud Config 一样,通过Git 来做版本控制,只是用Consul 做配置的分发和修改的通知。 原生的Consul不支持Git来做,需要借助Consul 社区提供的另外一个工程 git2consul 非常简单就下载就安装好了。 主要来讲一下初始化脚本的 git2consul.json

{
    "version":"1.0",
    "local_store": "本地仓库备份地址",
    "logger":{
        "name":"git2consul",
        "streams":[
            {
                "level":"trace",
                "type":"rotating-file",
                "path":"生成日志路径/git2consul.log"
            }
        ]
    },
    "repos":[
        {
            "name":"pig-config",
            "url":"远程仓库地址",
            "include_branch_name" : true,  //分支信息是否包含到请求中,建议使用
            "branches":[
                "dev"
            ],
            "hooks":[  
                {
                  "type" : "polling", //更新策略定时刷新的
                  "interval" : "1"   //1分钟
                }
            ]
        }
    ]
}

启动时候指定上边的脚本

./git2consul --config-file git2consul.json

bootstarp.yml配置

spring:
  application:
    name: pig-auth
  cloud:
    consul:
      host: localhost
      port: 8500
      config:
        enabled: true
        format: FILES
        watch:
          enabled: true
        prefix: ${spring.application}/${spring.profiles.active}
  profiles:
    active: dev

OK 已经可以使用了 git2consul 来同步你的配置文件啦。

配置细节

如上图,我配置文件的例子。

FILES机制和Spring Cloud Config加载类似,application.yml 会被所有微服务模块加载公用,对应的application-name.yml 会被对应的微服务加载。

总结

  1. 经过整合Consul Config 已经完成了和Spring Cloud Config 相同的功能,Spring Cloud 微服务使用配置文件过程中并没有太大区别。
  2. 实时刷新机制和前文《Consul微服务的配置中心体验篇》提到的KEY-VALUE模式没有什么区别,git2consul 不仅支持webhook 的push,而且可以轮询pull,类似于 Apollo 配置中心的部分功能
  3. 关于pig:基于Spring Cloud、oAuth2.0开发基于Vue前后分离的开发平台,支持账号、短信、SSO等多种登录,提供配套视频开发教程

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序猿DD

Spring Security入门(三):密码加密

前文导读 - Spring Security入门(一):登录与退出 - Spring Security入门(二):基于数据库验证 ? Github 地址 ht...

57760
来自专栏CSDN技术头条

从原理到实例,他用区块链技术做一了个COIN 客户端

本文来自作者 Lijia 在 GitChat 上分享 「手动做一个自己的 COIN 客户端:附区块链核心代码解读」 ? 基本原理和设计 2008年初,中本聪团队...

1K30
来自专栏沃趣科技

Gitlab删库事件回顾,备份手段还停留在“原始社会”?

作者简介:孙朝阳 沃趣科技高级产品经理。 Gitlab简介 Gitlab是大家很熟悉的开源Git代码托管工具,国内公司大多使用社区版自行搭建私有化的内部代码托...

43560
来自专栏Golang语言社区

Go包管理的探索与实践

引言:刚学Go没多久,但是很快我就发现了Go的一个特别坑爹的地方 —— 包管理。当然不只是GFW的问题,更多的是有的时候,每个项目使用的包的版本并不是完全一致的...

426100
来自专栏ml

HDUOJ1060Leftmost Digit

Leftmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/327...

33380
来自专栏CSDN技术头条

互联网中小型企业的持续集成CICD

本文来自作者 SoftwareLuke 在 GitChat 上分享 「互联网中小型企业的持续集成CICD」 互联网研发的世界里唯快不破、迭代速度往往很快。在快速...

3.7K90
来自专栏草根专栏

Git -- 分支与合并 (命令行+可视化工具p4merge)

把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面.

68680
来自专栏量子位

伯克利用120万美元设备24分钟训练ImageNet,刷新Facebook成绩

李林 编译整理 量子位 报道 | 公众号 QbitAI 最近,加州大学伯克利分校的研究人员用120万美元的设备,24分钟完成了ImageNet的训练。 ? 在最...

35840
来自专栏张戈的专栏

CVE-2015-0235:Linux glibc高危漏洞的检测及修复方法

这几天复习运维知识,也没怎么关注业界新闻,可等我一关注,又“捅娄子”了,Linux 继上次CVE-2014-6271漏洞爆发以来,再次爆发一个严重漏洞:CVE-...

46640
来自专栏Golang语言社区

微服务架构:敏捷软件架构的实际体现

正如敏捷开发能够解决工程技术瓶颈,微服务则能够解决架构层面的瓶颈。 2014年出现的“微服务”理念仿佛一道闪电,让技术人员意识到这一全新架构风格的重要意义。面向...

36950

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励