分布式配置中心解决方案:Spring Cloud Config
基于2.2.1.RELEASE版本,>>>官方文档<<<
衡量指标:
- 有靠谱的web管理系统,具备常规的配置管理功能,如:修改、删除等
- 要有比较高服务稳定性
- 最好能支持分布式,长远考虑有利于扩展
- 开源,至少有开源版本
- 有热度,使用和维护的人多,大厂背书
- 开发语言不能是小众的,最好是主流的语言
- 部署实施简单,有容器化版本是最好
- 数据存储和备份支持,能恢复
- 系统独立性好,不能有太多三方依赖
Vault
Vault是一个有web界面的配置存储和管理工具,成熟现代的商业软件同时有开源的社区版。就这个软件来说功能齐全,社区热度高持续迭代中。
Consul
研究Vault时,看到官网有提到相关比较,顺便看了看
Consul不仅仅是一个服务注册与发现中间件,同时还能提供配置存储管理能力,这一点确实很地道的功能。要是你的服务注册发现正好使用的是consul,推荐直接采用同时作为配置管理,因为consul在高可用、高扩展、存储上能力非常强,不需要过多解释。
Chef
研究Vault时,看到官网有提到相关比较,顺便看了看
自动化服务器配置管理工具,比较适合服务器级别的运维,可以进行脚本模版化运行,是DevOps中运维自动化模块解决方案之一,有开源版本和商业版本。采用Ruby开发,有web界面,很多大型公司在用,社区热度足够。Chef工具的使用,可以让运维具备一定的开发能力。
优质学习资源
https://blog.csdn.net/zhaihaifei/article/details/44649789
https://blog.csdn.net/zzq900503/article/details/80143740
https://www.ibm.com/developerworks/cn/cloud/library/1407_caomd_chef/
https://docs.chef.io/
File System
本地文件系统作为后台存储系统,这种方式在集成上是最简单的,但日常维护工作很不方便。平时学习可以采用,但是生产环境不推荐。
Version Control Filesystem
采用VCS(SVN)这样文档版本控制系统,文件存储也是直接放在系统中,依赖系统的文件系统,这种方案太落后直接放弃。
AWS S3 & CredHub
这两个都是基于云环境的配置管理框架,或者说是一种实现方案,两者都是很好但不是我此刻研究方向,不深入。
JDBC & Redis
一个是传统关系型数据库,一个是新型内存数据库,都能做到数据持久化、技术对接成本低、适用性广。另外,和大多数公司当前的系统容易对接,相信随便找家公司mysql服务应该有的,redis也是基本互联网公司标配。
采用这两种任意一个都是没啥问题的,也都用一些相应manage client工具可以来维护。作为一个优秀的程序员,这两个方案总觉得不完美,最好能在这个基础上开发自己的management。
Git & Github & GitLab
Git是官方默认支持配置管理方案,文档最齐全,同时官方更新支持可靠。官方推荐和公开免费的Github系统集成,考虑到Github毕竟是三方的系统,还在国外,相信没有哪家公司愿意把自己服务的配置信息放到别人公司。安全上就不过关,直接被PASS掉,作为github的本地化方案的gitlab成为了首选。
gitlab也是分为企业版和社区版,支持Web方式管理,企业版是要收费的但是功能更方便。
另外,gitlab社区版源码并不在github上(两家是竞争对手),除了github外,全球第二大代码托管中心就是gitlab了。
总结推荐
传统大中型公司
目前看下来,一般的互联网企业只能在GitLab\Vault\JDBC\Redis中选择了,传统企业可能更喜欢稳定持续的云方案AWS S3\CredHub,但是国内没有云厂商在SpringCloud清单中。相信国内大的云厂商早晚都会有这方便的支持的,毕竟私有云和混合云方向很好。
有一定研发能力互联网公司
研发能力不错但不希望投入太多研发力量的,推荐Gitlab或Vault,直接购去买企业版,省事放心。 研发能力自信的就选Gitlab和Vault开源版本,能够重构并加上自己公司的个性化。开源中间件的自定义开发是有难度的,量力而行,坑很多,可能把你拖死。
小型互联网公司
研发能力不太强的,可以直接Redis或者jdbc,最简单了随便找个开发工程师就能做。
作者:Owen Jia