springboot接入携程apollo配置中心

文章目录

  • 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 应用架构图

springboot接入携程apollo配置中心_第1张图片
springboot接入携程apollo配置中心_第2张图片

3 项目配置

3.1 引入依赖


  com.ctrip.framework.apollo
  apollo-client
  1.2.0

3.2 创建项目

在应用正式接入之前需在配置中心创建项目,应用Id为应用获取指定配置的唯一标识,创建后不可修改
springboot接入携程apollo配置中心_第3张图片

3.3 添加配置项并发布

可以选择一项项添加配置,
springboot接入携程apollo配置中心_第4张图片
也可以选择批量导入配置,
springboot接入携程apollo配置中心_第5张图片
添加完成后发布即可生效,应用接入成功后可看到客户端列表
springboot接入携程apollo配置中心_第6张图片

3.4 添加通用Namespace

  • Namespace是配置项的集合,类似于一个配置文件的概念;
  • Namespace的获取权限分为两种:private和public,public权限的Namespace,能被任何应用获取;
  • 创建项目的时候,会默认创建一个application的private权限的Namespace;
  • 公共类型的Namespace相当于游离于应用之外的配置,且通过Namespace的名称去标识公共Namespace,所以公共的Namespace的名称必须全局唯一

3.4.1 创建Namespace

在项目配置页面点击添加Namespace,进入添加页面
springboot接入携程apollo配置中心_第7张图片
如果已有公共的Namespace则直接关联即可,没有则点击创建Namespace,填写名称并选择类型,填好备注点击提交即可完成创建,属性添加同默认Namespace一致。
springboot接入携程apollo配置中心_第8张图片
关联的Namespace可以在项目中选择使用自定义的属性值覆盖公共配置项。
springboot接入携程apollo配置中心_第9张图片

4 客户端使用指南(springboot)

4.1 应用必要参数配置

META-INF\app.properties文件增加配置项app.id=xxxx,app.id是用来标识应用身份的唯一id;
springboot接入携程apollo配置中心_第10张图片
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 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权限)
springboot接入携程apollo配置中心_第11张图片

5.2 Namespace权限管理

在项目配置页面的Namespace上点击授权,区分修改权和发布权,区分环境
springboot接入携程apollo配置中心_第12张图片
springboot接入携程apollo配置中心_第13张图片

5.3 查看发布历史

在项目配置页面的Namespace上点击发布历史
springboot接入携程apollo配置中心_第14张图片

5.4 项目配置回滚

在项目配置页面的Namespace上点击回滚,回滚后变为修改状态,将错误配置修改后可重新进行发布操作
springboot接入携程apollo配置中心_第15张图片

5.5 灰度发布

在项目配置页面的Namespace上点击灰度,创建灰度版本,
springboot接入携程apollo配置中心_第16张图片
在灰度版本上增加或修改配置,然后点击灰度规则标签
springboot接入携程apollo配置中心_第17张图片
新增规则,选择要灰度测试的客户端,完成后选择灰度发布完成发布,或者放弃灰度
springboot接入携程apollo配置中心_第18张图片
灰度测试完成后选择全量发布进行主版本合并,并删除灰度版本。

你可能感兴趣的:(springboot,配置中心,微服务,JAVA)