Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
第一步:分了解一些名词
Apollo-config:配置服务中心,包括新增,修改的配置参数;客户端拉取新的,修改的配置参数。需要与数据库ApolloConfigDB连接。在多环境部署时,每一个环境需要部署一台,注意数据库连接地址的修该。需要注册发布到Eureka注册中心。
Meta-Server:配置服务的注册服务中心,类似与zookeeper,eureka的作用,但仅限apollo相关服务使用。配置方式与aoollo-config一同启动,同一个jvm所以地址与apollo-config一样。
Apollo-Admin:配置发布新更新的管理后台,主要为管理web界面apollo-portal服务。需要连接数据库ApolloConfigDB。需要注册发到Eureka注册中心。
Apollo-Portal:WEB管理界面,具有用户,权限管理,不同环境,不同appId的配置文件发布,修改。需要连接数据库ApolloPortalDB,管理多个环境只需要一套,配置好不同环境的Meta-Server地址即可进行管理。
AppID:这是Apollo给定义的一个名词,没一个子项目必须有一个唯一的id,用与在发布配置参数时进行对每个子应用的区分。eg:userprod
Apollo-Client:只需要maven依赖apollo-client包,配置meta-server地址,appID即可。
第二步:Apollo项目源码的修改与服务端的发布
Git地址:https://github.com/ctripcorp/apollo
打包,发布时的顺序
Apollo-config -> Apollo-Admin -> Apollo-portal
关闭服务时相反。
2.1:可使用修该源码的一些参数与实际项目更加符合。
系统原本默认的为DEV环境,其他源码中预置的环境与我们的项目不符合,进行修改,加入test,release两个环境配置(请根据你的实际项目来确认)。
- 假设需要添加的环境名称叫beta
- 修改com.ctrip.framework.apollo.core.enums.Env类,在其中加入BETA枚举:
public enum Env{
LOCAL, DEV, BETA, FWS, FAT, UAT, LPT, PRO, TOOLS, UNKNOWN;
...
}
- 修改com.ctrip.framework.apollo.core.enums.EnvUtils类,在其中加入BETA枚举的转换逻辑:
public final class EnvUtils {
public static Env transformEnv(String envName) {
if (StringUtils.isBlank(envName)) {
return Env.UNKNOWN;