Config Center: Apollo

随着微服务的流行,应用和机器数量急剧增长,程序配置也愈加繁杂:各种功能的开关、参数的配置、服务器的地址等等。同时,我们对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理,完善的权限、审核机制等等。

一般服务部署到线上之后,当程序发布到生产环境后,一般就是按照预设的逻辑运行,我们无法直接去干预程序的行为,不过可以通过调整配置参数来动态调整程序的行为。

在Spring Cloud的微服务架构方案中虽然提供了Spring Cloud Config来担任配置中心的角色,但是该项目的功能在配置的管理层面还是非常欠缺的。初期我们可以依赖选取的配置存储系统(比如:Gitlab、Github、Gerrit)给我们提供的配置管理界面来操作所有的配置信息,但是这样的管理还是非常粗粒度的。

spring cloud config使用git作分布式配置管理仓库,虽然比较便捷,但是也有一些缺点,比如:修改配置的操作需要修改clone下来的仓库然后再commit和push,缺少通过web界面修改配置的手段;配置需要生效的话,则要求服务重启或者refresh或者git hooks回调等;另外版本管理也是没有比较好的web界面的,只能通过在命令行上使用git命令。授权和审核操作gerrit和gitlab是有提供的,但是粒度比较粗,修改和发布权限没有比较好的分离。在生产环境上,每个服务正在使用什么配置,往往只能靠记忆,很不方便。

spring cloud config既然推荐了git,自然是有优点的,最重要的一点就是足够简单,另外由于缺乏了很多功能,开发人员能开展个性化的开发因而扩展性极强。这就够了。