Appearance
配置中心-Apollo
1.1.Apollo架构
1.1.1.三大核心模块
apollo-configservice模块主要功能:
- 提供配置获取接口
- 提供配置推送接口
- 服务于Apollo客户端
apollo-adminservice模块主要功能:
- 提供配置管理接口
- 提供配置修改发布接口
- 服务于管理界面Portal
apollo-portal模块主要功能:
- 配置管理界面
- 通过MetaServer获取AdminService的服务列表
- 使用客户端软负载SLB方式调用AdminService
1.1.2.简单架构
- ConfigService是一个独立的微服务,服务于Client进行配置获取。
- Client和ConfigService保持长连接,通过一种推拉结合(push & pull)的模式,在实现配置实时更新的同时,保证配置更新不丢失。
- AdminService是一个独立的微服务,服务于Portal进行配置管理。Portal通过调用AdminService进行配置管理和发布。
- ConfigService和AdminService共享ConfigDB,ConfigDB中存放项目在某个环境中的配置信息。ConfigService/AdminService/ConfigDB三者在每个环境( DEV/FAT/UAT/PRO)中都要部署一份。
- Protal有一个独立的PortalDB,存放用户权限、项目和配置的元数据信息。Protal只需部署一份,它可以管理多套环境。
1.1.3.高可用架构
1.1.4.更新配置流程
1.2.简单使用介绍
1.2.1.界面元素介绍
AppId (应用/项目信息) Namespace(命名空间) Env(环境) Cluster(集群信息) Item(Namespace的配置,每个Item是一个key, value组合) Release(Namespace发布的配置,每个发布包含发布时该Namespace的所有配置)
1.2.2.添加项目
输入应用Id与应用名称,确定后项目创建成功
1.2.3.创建集群
一个应用下不同实例的分组,比如典型的可以按照数据中心区分,对不同的cluster,同一个配置可以有不一样的值。
1.2.4.创建命名空间
一个应用下不同配置的分组,可以简单地把namespace类比为文件,不同类型的配置存放在不同的文件中,如数据库配置文件,RPC配置文件,应用自身的配置文件等。
某些配置在系统间可以复用,可以定义成public类型的namespace,某个系统可以单独关联public类型的配置。
修改public类型namespace中的配置项,关联的系统的该项配置随之修改。
关联公共Namespace
某些配置是某个系统单独所有,该部分配置则创建某个系统私有的配置,即private配置。
添加配置项分为俩种,一种是通过表格的形式增加key-value键值对,另一种是可以直接拷贝properties文件中的键值对来添加多个配置项。
1.3.Apollo在核心业务系统中的应用
应用配置apollo示例:
yaml
#应用Id
app.id: ensemble-rb-service
apollo:
meta: http://dcits.apollo.dc0201:8080,http://dcits.apollo.dc0202:8080,http://dcits.apollo.dc0101:8080,http://dcits.apollo.dc0102:8080
#Apollo集群
cluster: dc01
#配置存放目录
cacheDir: /app/dcits/config
bootstrap:
#开启配置
enabled: true
#将Apollo提前到日志系统加载之前
eagerLoad:
enabled: true
#所有命名空间
namespaces: application,mbsdcore,ensemble,spring,server,mybatis,ensemble-common.feign,ensemble-common.hystrix,galaxy,ensemble-common.redis,ensemble-common.eureka,com,ensemble-common.mars,ensemble-common.sonic,ensemble-common.mq,ensemble-common.tenant,comet,logging,virgo,ensemble-common.galaxy,ensemble-common.cloud
目前核心业务系统只需要将环境相关的配置文件在apollo中配置,其他配置基本上不需要修改,使用配置文件默认即可。环境相关的配置文件较为简单,不提供统一脚本,需使用者在apollo中配置即可。