携程apollo配置中心使用教程

一、apollo介绍:

下载项目地址:https://github.com/ctripcorp/apollo

架构图如下:

 四个核心模块及其主要功能:

1.ConfigService

(1)提供配置获取接口

(2)提供配置推送接口

(3)服务于Apollo客户端

2.AdminService

(1)提供配置管理接口

(2)提供配置修改发布接口

(3)服务于管理界面Portal

3.Client

(1)为应用获取配置,支持实时更新

(2)通过MetaServer获取ConfigService的服务列表

(3)使用客户端软负载SLB方式调用ConfigService

4.Portal

(1)配置管理界面

(2)通过MetaServer获取AdminService的服务列表

(3)使用客户端软负载SLB方式调用AdminService

 

三个辅助服务发现模块:

1.Eureka

(1)用于服务发现和注册

(2)Config/AdminService注册实例并定期报心跳

(3)和ConfigService住在一起部署

2.MetaServer

(1)Portal通过域名访问MetaServer获取AdminService的地址列表

(2)Client通过域名访问MetaServer获取ConfigService的地址列表

(3)相当于一个Eureka Proxy

(4)逻辑角色,和ConfigService住在一起部署

3.NginxLB

(1)和域名系统配合,协助Portal访问MetaServer获取AdminService地址列表

(2)和域名系统配合,协助Client访问MetaServer获取ConfigService地址列表

(3)和域名系统配合,协助用户访问Portal进行配置管理

 

二、如何在spring中整合apollo

(一)属性注入:

1.在MTEA-INF中创建app.properties文件

app.id=yidiankt

2.添加依赖

<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>1.1.2</version>
</dopendency>

3.cotrollo中增加@EnableApolloConfig注解

@RestController
@EnableApolloConfig
public class ApolloController {
    @Value("${dev.yidiankt.name}")
    private String str;

    @RequestMapping("/apollo")
    publc String apollo() {
        return "value:" + str;
    }
}

4.在resource中创建application.properties

apollo.meta=http://192.168.57.202:8080

 5.创建c:\opt\setting\server.properties文件

env=DEV

(二)bean注入:

1.创建bean类

@Component
@ConfigurationProperties("duoan")
public class DevConfig {
    private String mobile;

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
}

2.在controller中加入bean

@RestController
@EnableApolloConfig("iduoan")
public class ApolloController {
    @Value("${dev.yidiankt.email}")
    private String str;

    @Resource
    private DevConfig devConfig;

    @RequestMapping("/apollo")
    publc String apollo() {
        return "value:" + str + "bean:" + devConfig.getMobile();
    }
}

但是该bean的值更改后是不会实时刷新的,那如何才能实时刷新该bean的值呢?

1.首先加入依赖

<!-- 使用刷新配置注解 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-content</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>

2.创建ConfigRefresh类用于配置apollo及springcloud的自动刷新机制

@Component
public class ConfigRefresh {
    @Resource
    private DevConfig devConfig;

    @Resource
    private RefreshScope refreshScope;

    @ApolloConfigChangeListener
    public void onChange(ConfigChangeEvent changeEvent) {
        boolean configChange = false;
        for(String cKey : changeEvent.changedKeys()) {
            if(cKey.startsWith("duoan")) {
                configChange = true;
                break;
            }
        }

        if(!configChange) {
            return;
        }

        refreshScope.refresh(name: "devConfig");
    }
}

3.在DevConfig类中增加@RefreshScope注解

@Component
@ConfigurationProperties("duoan")
@RefreshScope
public class DevConfig {
    private String mobile;

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
}

 三、灰度发布:发布到部分客户端上,发布前需要制定灰度规则。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值