python 携程 apollo_学习使用Apollo配置中心

本文详细介绍了如何将应用接入携程的Apollo配置管理平台。首先,确保拥有正确的appid和环境设置,然后配置本地缓存路径,添加Apollo客户端依赖,指定服务端地址。通过API或结合Spring方式读取和监听配置变化,实现配置的实时更新。
摘要由CSDN通过智能技术生成

Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端。

如何安装服务端可以按照上面官网的步骤。

这里主要说明一下应用如何接入apollo。

应用接入apollo步骤:

1、Appid

确保classpath:/META-INF/app.properties文件存在,并且其中内容形如:app.id=YOUR-APP-ID

服务端的appid

2、Environment

应用在不同的环境可以有不同的配置, Environment可以通过以下3种方式的任意一个配置:

2.1 通过Java的System Property env来指定环境

-Denv=YOUR-ENVIRONMENT

2.2 通过操作系统的System Environment env来指定环境

2.3 通过配置文件来指定env=YOUR-ENVIRONMENT

对于Mac/Linux,文件位置为/opt/settings/server.properties

对于Windows,文件位置为C:\opt\settings\server.properties

目前,env支持以下几个值(大小写不敏感):

DEV, FAT, UAT, PRO

服务端的environment

3、本地缓存

Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,当去服务器读取配置失败时,会使用本地缓存的。

Mac/Linux: /opt/data/{appId}/config-cache

Windows: C:\opt\data{appId}\config-cache

确保目录存在,且应用有读写权限。

4、添加依赖

com.ctrip.framework.apollo

apollo-client

0.6.2

internal.repo

https://raw.github.com/ctripcorp/apollo/mvn-repo/

5、指定服务端

通过Java的System Property env来指定

-Ddev_meta=http://192.168.30.27:8018

6、读取配置

通过namespace读取配置,如果不指定则默认拿application

6.1 api方式

通过api方式获取的配置,修改时不用重启项目,直接生效。

Config config = ConfigService.getAppConfig(); //ConfigService.getConfig(Namespace);

String key = "key"; //key

String defaultValue = "defaultValue"; //默认值,读取不到配置就会使用默认值,建议都加上默认值

String value = config.getProperty(key, defaultValue);

监听配置修改事件

Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null

config.addChangeListener(new ConfigChangeListener() {

@Override

public void onChange(ConfigChangeEvent changeEvent) {

System.out.println("Changes for namespace " + changeEvent.getNamespace());

for (String key : changeEvent.changedKeys()) {

ConfigChange change = changeEvent.getChange(key);

System.out.println(String.format("Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));

}

}

});

6.2 结合Spring方式

6.2.1 基于XML的配置

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:apollo="http://www.ctrip.com/schema/apollo"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.ctrip.com/schema/apollo http://www.ctrip.com/schema/apollo.xsd">

6.2.2 基于Java的配置

使用@Value(${key:defaultValue})

public class TestJavaConfigBean {

@Value("${timeout:100}")

private int timeout;

private int batch;

@Value("${batch:200}")

public void setBatch(int batch) {

this.batch = batch;

}

public int getTimeout() {

return timeout;

}

public int getBatch() {

return batch;

}

}

@ApolloConfig用来自动注入Config对象

@ApolloConfigChangeListener用来自动注册ConfigChangeListener

public class TestApolloAnnotationBean {

@ApolloConfig("application")

private Config anotherConfig; //inject config for namespace application

//config change listener for namespace application

@ApolloConfigChangeListener("application")

private void anotherOnChange(ConfigChangeEvent changeEvent) {

//do something

}

}

服务端的namespace:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值