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