学习使用Apollo配置中心
来源:互联网 发布:扫地老僧软件 编辑:程序博客网 时间:2024/04/29 21:42
学习使用Apollo配置中心
Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端。
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、添加依赖
<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>0.6.2</version></dependency><repository> <id>internal.repo</id> <url>https://raw.github.com/ctripcorp/apollo/mvn-repo/</url></repository>
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"; //keyString defaultValue = "defaultValue"; //默认值,读取不到配置就会使用默认值,建议都加上默认值String value = config.getProperty(key, defaultValue);
监听配置修改事件
Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never nullconfig.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的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" 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"> <!-- 这个是最简单的配置形式,一般应用用这种形式就可以了,用来指示Apollo注入application namespace的配置到Spring环境中 --> <apollo:config/> <!-- 这个是稍微复杂一些的配置形式,指示Apollo注入FX.apollo和FX.soa namespace的配置到Spring环境中 --> <apollo:config namespaces="FX.apollo,FX.soa"/> <bean class="com.ctrip.framework.apollo.spring.TestXmlBean"> <property name="timeout" value="${timeout:100}"/> <property name="batch" value="${batch:200}"/> </bean></beans>
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
- 学习使用Apollo配置中心
- Apollo配置中心介绍
- apollo配置中心初探
- Apollo配置中心
- Apollo阿波罗配置中心
- Apollo分布式配置中心系统
- Apollo开源配置中心
- 开源配置中心之Apollo
- apollo配置中心管理不同环境配置原理
- spring boot工程集成apollo配置中心client
- apollo简单使用
- Apache Apollo 安装使用
- Apollo
- [学习笔记]Apollo Flash Block
- apollo-server-koa 简单使用
- dubbo 使用学习六(多协议,多注册中心配置)
- spring cloud学习(六) 配置中心-自动更新
- Spring Cloud学习--配置中心(Config)
- 扩展眼界的都在这:【方向】系列文章根目录
- 学习HTML、CSS、Javascript必看书
- 鹿晗关晓彤公开恋情,是如何把微博服务器搞炸的
- QT控制设备遇到的一个问题的心得
- 转 使用curl指令測試REST服務
- 学习使用Apollo配置中心
- aria中的ArFunctor真相
- 教你写Makefile(很全,含有工作经验的)
- ubuntu修改用户密码
- solr7.0 中文分词
- 乔纳森-艾维
- jsp+servlet文件下载
- 机票预订系统的可行性分析
- iOS11 适配之导航栏、tableView、searchBar遇到的bug