springboot接入携程apollo配置中心

3 篇文章 0 订阅
1 篇文章 0 订阅

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上点击灰度,创建灰度版本,
在这里插入图片描述
在灰度版本上增加或修改配置,然后点击灰度规则标签
在这里插入图片描述
新增规则,选择要灰度测试的客户端,完成后选择灰度发布完成发布,或者放弃灰度
在这里插入图片描述
灰度测试完成后选择全量发布进行主版本合并,并删除灰度版本。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值