在微服务架构中,配置中心是个必不可少的基础服务。应用部署到生产环境后,由于各种原因,需要调整一些配置。如果每次修改配置都需要经过修改代码、重新打包、重新部署等过程,为了避免重新部署造成请求错误,还需要将应用从负载均衡中下线,部署成功后再重新上线,当部署的实例比较多的情况下,那就会严重影响投产效率,如果是为了解决生产上的问题而调整配置,那么这个过程耗时越多,带来的风险也就越大。所以我们需要在不停机、不重新打包、不重新部署的情况下,可以动态修改配置(比如:功能开关、性能参数等)。为了方便动态更新应用配置,需要把配置放到应用执行包之外的配置中心。配置文件不需要打进应用执行包中后,可以带来以下几个好处:一个可执行包就可以在不同的环境下运行,可以降低包的版本管理成本,也可以降低docker镜像的版本管理成本。
Spring Cloud 虽然已经为我们提供了基于git或mongodb等实现的配置中心,但是这些方案实现都过于简单,没有达到实际可用的标准,比如:没有提供统一的管理页面,不便于操作和使用;没有权限管理功能;没有数据验证功能等等。但Spring Cloud Config的核心技术还是可以为我们所有,没有必要重新造轮子。
ConfigKeeper 是由随行付架构部基于Spring Cloud研发的分布式配置中心。基于Spring Cloud开发。与Spring Boot、Spring Cloud应用无缝兼容。
市面上已经有几款比较成型的配置中心,大家耳熟能详的携程Apollo和百度Disconf,而我们的配置中心底层是基于Spring Cloud Config模块进行扩展的,首先来看看Apollo、Spring Cloud Config、ConfigKeeper的功能差异:
除了上述之外,还有以下其他功能特性:
开发人员最习惯的就是在文件中修改配置,管理页面上提供「舒适」的富文本编辑框;
全局配置约定,比如多个项目共享的配置,比如短信地址等采取约定大于配置。全局配置<应用配置;
配置校验,文本修改高亮对比修改内容,防止低级错误等;
Spring Cloud、Spring Boot、React、Gradle/Maven、Node.js、Yarn
1、任意版本对比功能(包括应用配置和全局配置),一键回滚指定配置文件版本
2、兼容Spring Boot 2,因Spring Boot 1与Spring Boot 2新增特性比较多,单独发布 V2.0.0
3、优化前端页面,简化前端部署,升级Node、Yarn版本
4、created_date等增加默认值
5、应用名称增加验证规则:只能输入英文大小写,下划线,中划线和数字
1、优化空串判断
2、同环境同ip同端口实例,更改managerPath,managerPath不更新
3、解决前端页面打包至Server,刷新页面404。当404时跳转到首页
4、修复Spring Boot 2项目中包含多个module,Gradle Build时出现异常问题(找不到依赖类等)
5、客户端抓取实例刷新端点路径覆盖server.context-path有值的情况
6、suixingpay-config-server/pom.xml增加前端构建功能;增加批量刷新使用说明;删除没有用的配置文件
7、修改InetUtils过期方法
8、优化参数校验