微服务必备的几样武器有了,才能独闯武林, 有哪几样呢?
- 注册中心(eureka, consul, zk, etcd)
- 配置中心 (Spring Cloud Config, disconf )
- API网关 (Spring Cloud zuul, kong)
- 熔断器 (hystrix)
- 链路追踪 (sleuth)
- 统一日志管理 (ELK)
- 自动化部署 (jenkins + Docker)
今天我们主要讲下同样是非常重要的一项,配置中心,当然官方提供的解决方案就是Spring Cloud Config
它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git,SVN等仓库中
在Spring Cloud Config组件中,分两个角色,一是config server,二是config clien
在做技术调研的时候我也研究了下Spring Cloud Config,主要有以下特性
- 配置集中管理
- 依赖于git支持版本回退
- 可以通过git 仓库的WebHook和消息队列来实现自动更新
- 配置加密解密
- 可以通过调用接口手动更新配置
还有就是国内的disconf, disconf 可以为各种业务平台提供统一的配置管理服务。
- 支持配置(配置项+配置文件)的分布式化管理
- 配置发布统一化
- 极简的使用方式(注解式编程 或 XML代码无代码侵入模式)
- 低侵入性或无侵入性、强兼容性
- 需要Spring编程环境
虽然有很多选择,如果说是Spring Cloud来构建微服务,那么Spring Cloud Config肯定是比较好的一个选择,集成非常方便
但是呢,自动更新那块我感觉不是很好,要依赖WebHook来做,统一更新的话还得将config server前面加一负载均衡,然后对server进行刷配置的通知
还有就是关于配置修改之后的回调事件,目前没找到合适的方法
disconf 也是一个很好的作品,但是呢,也是个人开源的,也不维护了,也许功能够用了
基于以上的一些调查,我还是觉得自己写一个,可以提升一下自己,再而有问题,加新特性,也比较方便
我取了一个很随便的名称Smconf, 意思就是很简单的配置管理
github: https://github.com/yinjihuan/smconf
目前的功能点如下:
- 提供配置的统一管理
- 多个环境(生产环境:prod, 线上测试环境:online, 线下测试环境:test, 开发环境:dev)
- web后台配置管理
- 配置修改后实时同步到使用的客户端
- 无缝集成spring和spring boot项目
- 非spring项目中也可以使用
- web后台支持不同账号管理不同环境的配置
- 支持水平扩容,负载,部署多个server,client自动发现
- 支持用户自定义配置修改回调接口做扩展
有了这个配置中心我们就可以做很多事情了
比如在API网关中我们可以做到
- 动态限流
- 动态对IP进行限制
- 动态对服务进行降级
- 灰度发布
配置修改实时生效,不在需要一台台去重启服务了
网友评论