Apollo的基本概念和集成实战
生活随笔
收集整理的這篇文章主要介紹了
Apollo的基本概念和集成实战
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
基本概念
使用場景
是一個(gè)分布式的配置中心。適用于微服務(wù);核心功能
開發(fā)技術(shù)
- 服務(wù)端使用springboot,springcloud開發(fā),打包后可以直接運(yùn)行,無需安裝額外的tomcat;
- java客戶端不依賴任何框架,對Spring,SpringBoot的客戶端也有額外支持
- .net客戶端不依賴任何框架
概念
| FAT | 功能測試環(huán)境 | |
| UAT | 集成測試環(huán)境 | |
| PRO | 生產(chǎn)環(huán)境 | |
| DEV | 開發(fā)環(huán)境 |
詳細(xì)功能
后臺使用
后臺界面操作
客戶端接入文檔
后臺操作
公共組件的操作
公共組件: 提供給應(yīng)用使用的其它組織的客戶端代碼,比如cat的客戶端;本質(zhì)上也是應(yīng)用的一部分;
區(qū)別 : 通常情況下,公共組件的使用的配置由原始開發(fā)團(tuán)隊(duì)維護(hù),但是實(shí)際的應(yīng)用在運(yùn)行時(shí),環(huán)境不一樣,所以我們也允許應(yīng)用在實(shí)際使用的時(shí)候能夠覆蓋公共組件的部分配置;
需要自己創(chuàng)建自己唯一的namespace ;
公共組件的操作
集群獨(dú)立配置
灰度發(fā)布
操作
客戶端接入
要求:jdk1.7+ , guava15.0+
客戶端配置參數(shù)
客戶端依賴
<dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client</artifactId><version>1.1.0</version></dependency>接入方式對比
| api | 靈活,功能完備 |
| spring | placeholder方式 |
| springboot | @ConfigurationProperties |
API接入
獲取application namespace配置
Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null String value = config.getProperty(someKey, someDefaultValue);獲取公共namespace
String somePublicNamespace = "CAT"; Config config = ConfigService.getConfig(somePublicNamespace); //config instance is singleton for each namespace and is never null String value = config.getProperty(someKey, someDefaultValue);獲取非properties格式的namespace配置
Config config = ConfigService.getConfig("application.yml"); String value = config.getProperty(someKey, someDefaultValue);xml格式文件獲取
String someNamespace = "test"; ConfigFile configFile = ConfigService.getConfigFile("test", ConfigFileFormat.XML); String content = configFile.getContent();事件監(jiān)聽
Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null config.addChangeListener(new ConfigChangeListener() {@Overridepublic 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()));}} });spring方式接入
基于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.xsdhttp://www.ctrip.com/schema/apollo http://www.ctrip.com/schema/apollo.xsd"><apollo:config order="2"/><!-- 這個(gè)是最復(fù)雜的配置形式,指示Apollo注入FX.apollo和application.yml namespace的配置到Spring環(huán)境中,并且順序在application前面 --><apollo:config namespaces="FX.apollo,application.yml" order="1"/><bean class="com.ctrip.framework.apollo.spring.TestXmlBean"><property name="timeout" value="${timeout:100}"/>基于javaconfig
//這個(gè)是最復(fù)雜的配置形式,指示Apollo注入FX.apollo和application.yml namespace的配置到Spring環(huán)境中,并且順序在application前面 @Configuration @EnableApolloConfig(order = 2) public class SomeAppConfig {@Beanpublic TestJavaConfigBean javaConfigBean() {return new TestJavaConfigBean();} } @Configuration @EnableApolloConfig(value = {"FX.apollo", "application.yml"}, order = 1) public class AnotherAppConfig {}springboot方式接入
直接配置屬性
#加載應(yīng)用對應(yīng)的application namespace的配置apollo.bootstrap.enabled = true#加載其它namespace 的配置apollo.bootstrap.namespaces = application,FX.apollo,application.yml#在日志系統(tǒng)啟動之前加載阿波羅apollo.bootstrap.eagerLoad.enabled=true其它說明
一些公共的注解
新增的spring注解
- @ApolloConfig
用來自動注入Config對象 - @ApolloConfigChangeListener
用來自動注冊ConfigChangeListener - @ApolloJsonValue
用來把配置的json字符串自動注入為對象
### 配置的遷移
配置的遷移
### 本地開發(fā)
設(shè)置env = Local
Mac/Linux: /opt/data/{appId}/config-cache
Windows: C:\opt\data{appId}\config-cache
現(xiàn)有項(xiàng)目改造步驟
轉(zhuǎn)載于:https://www.cnblogs.com/snidget/p/11363929.html
總結(jié)
以上是生活随笔為你收集整理的Apollo的基本概念和集成实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NOIP模拟测试22「位运算」
- 下一篇: 技术管理规划-从哪入手?