Smconf(分布式配置管理框架)概述
Smconf 专注于分布式环境下的配置的统一管理。采用 Java+Zookeeper+Mongodb+Spring Boot 开发。目前只支持 Java,其他的使用语言需要通过调用 REST API 来实现。
每个技术人都有一个开源的梦想,那就是自己也能开发出一个让很多人使用的框架。其实分享使用不是重点,重点是自己写的架构本身,你对它的各个方面都了如指掌,可以很方便添加新功能,比如加上一些适应公司内部需求的功能。
笔者之所以抛弃了 Spring Cloud Config,一方面在于它的配置刷新这块不是很方便,需要集成消息总线加上 WebHook 才能完成。另一个原因就是一些特殊的需求实现起来没那么方便,比如推送配置到指定的节点。
Smconf 目前支持的功能如下:
- 提供配置的统一管理。
- 多个环境(生产环境为 prod,线上测试环境为 online,线下测试环境为 test,开发环境为 dev)。
- Web 后台配置管理。
- 配置修改后实时同步到使用的客户端。
- 无缝集成 Spring 和 Spring Boot 项目。
- 非 Spring 项目中也可以使用。
- Web 后台支持不同账号管理不同环境的配置。
- 支持水平扩容、负载,部署多个 Server、Client 自动发现。
- 支持配置更新回调接口做扩展。
- 支持手动触发推送配置到指定的节点。
- 修改配置可以选择推送的节点,可用于做灰度发布测试。
- 配置的历史修改记录。
Smconf 工作原理
如图 1 所示为 Smconf 的整个架构规划,Smconf 同样也分为服务端和客户端两个部分,服务端负责配置信息的管理,客户端负责拉取配置信息及上传配置信息。
发表评论