Skip to content

配置中心-Apollo

1.1.Apollo架构

1.1.1.三大核心模块

apollo-configservice模块主要功能:

  1. 提供配置获取接口
  2. 提供配置推送接口
  3. 服务于Apollo客户端

apollo-adminservice模块主要功能:

  1. 提供配置管理接口
  2. 提供配置修改发布接口
  3. 服务于管理界面Portal

apollo-portal模块主要功能:

  1. 配置管理界面
  2. 通过MetaServer获取AdminService的服务列表
  3. 使用客户端软负载SLB方式调用AdminService

1.1.2.简单架构

  1. ConfigService是一个独立的微服务,服务于Client进行配置获取。
  2. Client和ConfigService保持长连接,通过一种推拉结合(push & pull)的模式,在实现配置实时更新的同时,保证配置更新不丢失。
  3. AdminService是一个独立的微服务,服务于Portal进行配置管理。Portal通过调用AdminService进行配置管理和发布。
  4. ConfigService和AdminService共享ConfigDB,ConfigDB中存放项目在某个环境中的配置信息。ConfigService/AdminService/ConfigDB三者在每个环境( DEV/FAT/UAT/PRO)中都要部署一份。
  5. 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中配置即可。