Apollo配置中心

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

为什么选择Apollo作为配置中心?

市面上开源的配置中心例如:Apollonacos等。

选择配置中心也做了很多的考虑,最后选择Apollo没有选择其他的,主要原因是Apollo可以和Spring Boot无缝集成,可以直接使用Spring注解注入(@Value@ConfigurationProperties)。

服务端部署

服务端安装和启动请参考Apollo官方安装文档,这里不做过多的描述

https://github.com/ctripcorp/apollo/wiki/Quick-Start

客户端使用

在框架中怎么集成apollo配置中心

引入apollo客户端工具包

工具包主要做了一些实时刷新配置处理。直接引用即可使用

<dependency>
    <groupId>com.wueasy</groupId>
    <artifactId>wueasy-config-apollo</artifactId>
  <version>最新版本</version>
</dependency>

配置连接信息

app:
  id: SampleApp #你的appId
apollo:
  meta: http://39.108.135.245:8080 #配置中心访问地址
  bootstrap:
    enabled: true #将在引导阶段插入“application”命名空间
    namespaces: application #命名空间,多个逗号分隔

使用示例

@RestController
@RequestMapping("/config")
public class DemoController {

    @Value("${wueasy.timeout:10000}")
    private String timeout;

    @RequestMapping("/timeout")
    public String getConfig() {
        return timeout;
    }
}

静态工具类中使用

使用场景:由于有些变量是很少改变的,所以定义成了静态变量,虽然可能几率比较小,但是还是可能会改变;如果配置中心配置发生改变,可以通过下面方式来刷新静态工具变量。

  • 必须在类上定义注解@ConfigUpdate
  • 必须在类里面定义静态方法public static void refresh(),静态方法里面写变量的处理
@ConfigUpdate
public class RequestHelper {

    private static volatile Integer RESPONSE_TYPE = 1;


    static {
        refresh();
    }

    /**
     * 刷新配置
     * @author: fallsea
     */
    public static void refresh() {
        RESPONSE_TYPE = SpringHelper.getBean(WueasyInterceptorConfig.class).getResponseType();
    }
}

常见问题

客户端访问配置中心失败?

注册中心启动默认会获取本地的ip注册(一般都是内网ip),客户端直接配置访问ip后,尤其是外网访问会直接连接失败,如果服务器是多网卡,也可能访问失败。

可以通过修改demo.sh中,指定注册ip。

增加-Deureka.instance.ip-address=ip地址

完整如下:

BASE_JAVA_OPTS="-Denv=dev -Deureka.instance.ip-address=39.108.135.245"

Copyright © wueasy.com 2017-2021 all right reserved,powered by Gitbook未经允许,禁止以任何形式传播 修订时间: 2020-04-17

results matching ""

    No results matching ""