一、Apollo简介
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
![d8cfd47abdf76de7fbbeb5fa8d14a863.png](https://img-blog.csdnimg.cn/img_convert/d8cfd47abdf76de7fbbeb5fa8d14a863.png)
上图来自官网
架构剖析
四个核心模块及其主要功能
- ConfigService
- 提供配置获取接口(Apollo客户端)
- 提供配置推送接口(AdminService)
- 提供配置的crud接口(Portal)
- 为应用获取配置,支持实时更新(portal->adminService->configService->client,推拉结合)
- 为用户提供配置管理界面
三个辅助服务发现模块
- Eureka
- 用于服务发现和注册
- Config/AdminService注册实例并定期报心跳
- 和ConfigService住在一起部署
- Portal通过域名访问MetaServer获取AdminService的地址列表
- Client通过域名访问MetaServer获取ConfigService的地址列表
- 相当于一个Eureka Proxy
- 逻辑角色,和ConfigService住在一起部署
- 和域名系统配合,协助Portal访问MetaServer获取AdminService地址列表
- 和域名系统配合,协助Client访问MetaServer获取ConfigService地址列表
- 和域名系统配合,协助用户访问Portal进行配置管理
通过上图以及上面的分析,我们可以发现其实apollo是一个微服务架构,其中四大核心模块中有三个模块是配置的管理同步的服务,而client是我们具体使用框架的服务
Apollo的核心概念
- application (应用):就是实际使用配置的应用,Apollo客户端在运行时需要知道当前应用是谁,从而可以去获取对应的配置每个应用都需要有唯一的身份标识appId,我们认为应用身份是跟着代码走的,所以需要在代码中配置
- environment (环境):Apollo客户端在运行时需要知道当前应用处于哪个环境,从而可以去获取应用的配置,可以配置多个环境
- cluster (集群):相当于分组
- namespace (命名空间):相当于具体的配置文件