配置中心Apollo多环境部署
关于Apollo
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
github地址:https://github.com/ctripcorp/apollo
在官方的wiki 里,有很多资料,包括部署 客户端应用等
github wiki 地址:https://github.com/ctripcorp/apollo/wiki
Apollo 与 Springcloud config
Apollo 是携程框架研发部门研发的一款基于springboot和springcloud 写的一个配置中心项目,使用长连接实现配置下发,现在已经开源,可以秒级感应热部署配置文件。
Springcloud Config 是springcloud 全家桶里的一员,基于git 做的配置中心,对于热部署配置文件来说,还需要配合 git 的webhook 触发 springcloud bus,达到配置下发,从实现机制来说,Apollo 是要快上许多。而完全依赖于git 的config 不仅配置麻烦,而且感觉会很low。
先说一下我的使用感受,部门里一个微服务支付的项目用的就是springcloud config 配置中心
优点:
- 基于git(当然svn,jdbc,本地缓存也支持),对于github 或者 gitlab 来讲比较熟悉,git的优点可以应用于配置文件上
- 配置文件管理一幕了然,公有的配置文件或者项目私有的配置,按照规范填写,分类后比较好找,按照项目,按照模块建包,一目了然
- … (我是个不善于总结优点的人)
来说说缺点:
- 如果要实现热部署配置文件,需要配合springcloud bus,在github上做webhook ,依赖性很强,配置复杂,实时性也一般,不做热加载的配置下发,那配置中心将毫无意义。
- 配置复杂意味着,且对代码有侵入,学习成本高,个人不是很喜欢。
- 配置文件命名规则,很麻烦,配置都在命名上,根据命名搜索,没有可视化的配置
- 权限控制,配置下发基于git的权限,也是成也git 败也git ,不能很好掌控配置下发的权利
- 不支持多语言客户端,全家桶的问题
- …(我还是个不善于总结缺点的人)
关于Apollo ,使用感受非常爽,先吹他一个彩虹屁。
优点
:
- 无需过多的依赖,原生java,.net 都很好应用,多语言客户端无需过多的依赖,原生java,springboot,.net 都很好应用,多语言客户端
- 依赖少,不基于git,部署简单,即能实现动态加载配置&#x