- 目前使用Apollo主要的场景:
- 统一配置管理:配置中心本身可以集中管理配置,避免在每个项目里都重复写同样的配置,还提供了可视化操作。
- 配置粒度:Apollo的划分粒度很细,足够满足日常项目要求,app - env - cluster - namespace - config item。
- 配置热发布:实时修改配置这个功能是除了管理配置之外最实用的功能之一了,很多配置可以动态修改了,例如之前重写springcloud的负载策略,可以实现灰度,动态修改灰度策略,还有很多业务配置都可以热发布。
- 其他:例如配置灰度下发,权限管理,发布历史,回滚,本地配置缓存,对接入sso、ldap等认证方式接入支持的很好,基本满足日常需求,而且源码容易理解,二次开发相对容易。
- 源码模块划分:
- 先从gitlab上一个部署样例开始说明:
- ConfigService:负责apollo客户端读取、推送配置
- AdminService:负责修改、发布配置
- Meta Server(eureka):ConfigService和AdminService都会注册到这,图上和ConfigService在一起部署
- Portal:可视化界面,用于控制AdminService
- ApolloConfigDB:服务于ConfigService和AdminService,主要是存储配置相关。
- ApolloPortalDB:服务于Portal,主要是存储权限相关。
-
AdminService和ConfigService需要每个环境部署一套,用于管理不同的配置,Portal统一一套,管理不同环境的AdminService即可。
apollo多环境部署.png
网友评论