文章目录
- 1 apollo简介
- 2 应用架构图
- 3 项目配置
- 3.1 引入依赖
- 3.2 创建项目
- 3.3 添加配置项并发布
- 3.4 添加通用Namespace
- 3.4.1 创建Namespace
- 4 客户端使用指南(springboot)
- 4.1 应用必要参数配置
- 4.2 配置项使用参考
- 5 服务端项目管理
- 5.1 项目管理员管理
- 5.2 Namespace权限管理
- 5.3 查看发布历史
- 5.4 项目配置回滚
- 5.5 灰度发布
1 apollo简介
携程apollo配置中心是携程框架部门研发的分布式配置中心,适用于微服务配置管理场景。
配置修改后实时生效,灰度发布,版本管理,客户端配置监控,分环境、分集群管理配置,完善的权限、审核机制。
Java客户端能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有额外支持。
2 应用架构图
3 项目配置
3.1 引入依赖
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.2.0</version>
</dependency>
3.2 创建项目
在应用正式接入之前需在配置中心创建项目,应用Id为应用获取指定配置的唯一标识,创建后不可修改
3.3 添加配置项并发布
可以选择一项项添加配置,
也可以选择批量导入配置,
添加完成后发布即可生效,应用接入成功后可看到客户端列表
3.4 添加通用Namespace
- Namespace是配置项的集合,类似于一个配置文件的概念;
- Namespace的获取权限分为两种:private和public,public权限的Namespace,能被任何应用获取;
- 创建项目的时候,会默认创建一个application的private权限的Namespace;
- 公共类型的Namespace相当于游离于应用之外的配置,且通过Namespace的名称去标识公共Namespace,所以公共的Namespace的名称必须全局唯一
3.4.1 创建Namespace
在项目配置页面点击添加Namespace,进入添加页面
如果已有公共的Namespace则直接关联即可,没有则点击创建Namespace
,填写名称并选择类型,填好备注点击提交即可完成创建,属性添加同默认Namespace一致。
关联的Namespace可以在项目中选择使用自定义的属性值覆盖公共配置项。
4 客户端使用指南(springboot)
4.1 应用必要参数配置
在META-INF\app.properties
文件增加配置项app.id=xxxx
,app.id是用来标识应用身份的唯一id;
在application-env.properties
文件增加如下配置,namespaces默认为application,meta为配置中心服务端地址.
apollo.bootstrap.enabled=true
apollo.bootstrap.eagerLoad.enabled=true #将配置中心加载时机提前,可以管理logback日志配置
apollo.bootstrap.namespaces=application,IT.LOGGER #多个namespace用英文逗号分隔
apollo.meta=http://10.253.128.21:8080,http://10.253.128.20:8080
4.2 配置项使用参考
public class TestApolloAnnotationBean {
@ApolloConfig
private Config config; //默认namespace(application)注入
@ApolloConfig("IT.LOGGER")
private Config yetAnotherConfig; //自定义namespace(IT.LOGGER)注入
/**
* json字符串自动转为对象
* jsonBeanProperty=[{"someString":"hello","someInt":100},{"someString":"world!","someInt":200}]
*/
@ApolloJsonValue("${jsonBeanProperty:[]}")
private List<JsonBean> anotherJsonBeans;
@Value("${batch:100}")
private int batch;//通用属性注入
//默认namespace(application)属性变化监听
@ApolloConfigChangeListener
private void someOnChange(ConfigChangeEvent changeEvent) {
//变化时执行更新操作
if (changeEvent.isChanged("batch")) {
batch = config.getIntProperty("batch", 100);
}
}
//自定义namespace(application,IT.LOGGER)属性变化监听
@ApolloConfigChangeListener({"application", "IT.LOGGER"})
private void anotherOnChange(ConfigChangeEvent changeEvent) {
//Todo
}
//直接从配置中心获取最新属性
public int getTimeout() {
return config.getIntProperty("timeout", 200);
}
public int getBatch() {
return this.batch;
}
private static class JsonBean{
private String someString;
private int someInt;
}
}
5 服务端项目管理
5.1 项目管理员管理
在项目配置页面点击项目管理进入管理页面,管理员具有权限(创建Namespace、创建集群、管理项目、Namespace权限)
5.2 Namespace权限管理
在项目配置页面的Namespace上点击授权
,区分修改权和发布权,区分环境
5.3 查看发布历史
在项目配置页面的Namespace上点击发布历史
5.4 项目配置回滚
在项目配置页面的Namespace上点击回滚
,回滚后变为修改状态,将错误配置修改后可重新进行发布操作
5.5 灰度发布
在项目配置页面的Namespace上点击灰度
,创建灰度版本,
在灰度版本上增加或修改配置,然后点击灰度规则
标签
新增规则,选择要灰度测试的客户端,完成后选择灰度发布
完成发布,或者放弃灰度
灰度测试完成后选择全量发布
进行主版本合并,并删除灰度版本。