中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Apollo的基本概念和集成實(shí)戰(zhàn)-創(chuàng)新互聯(lián)

基本概念

使用場(chǎng)景

在蘇家屯等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站建設(shè),外貿(mào)營(yíng)銷網(wǎng)站建設(shè),蘇家屯網(wǎng)站建設(shè)費(fèi)用合理。
是一個(gè)分布式的配置中心。適用于微服務(wù);

核心功能

  1. 集中管理不同環(huán)境,不同集群的配置;
  2. 配置修改后可以實(shí)時(shí)推送到應(yīng)用端;
  3. 具備規(guī)范的權(quán)限,流程治理特性;

開(kāi)發(fā)技術(shù)

  • 服務(wù)端使用springboot,springcloud開(kāi)發(fā),打包后可以直接運(yùn)行,無(wú)需安裝額外的tomcat;
  • java客戶端不依賴任何框架,對(duì)Spring,SpringBoot的客戶端也有額外支持
  • .net客戶端不依賴任何框架

概念

縮寫 全稱 說(shuō)明
FAT功能測(cè)試環(huán)境
UAT集成測(cè)試環(huán)境
PRO生產(chǎn)環(huán)境
DEV開(kāi)發(fā)環(huán)境

詳細(xì)功能

  1. 統(tǒng)一管理不同環(huán)境,不同集群,不同命名空間的配置;
  2. 同一份代碼可以部署在不同的集群,可以有不同的配置,比如zk地址
  3. 通過(guò)命名空間可以方便的支持不同應(yīng)用共享同一份配置,同時(shí)還允許應(yīng)用對(duì)共享的配置進(jìn)行覆蓋;
  4. 配置修改實(shí)時(shí)生效 (用戶在后臺(tái)修改完配置發(fā)布后,客戶端可以在1s內(nèi)收到最新的配置并通知應(yīng)用程序)
  5. 版本發(fā)布概念, (所有的配置發(fā)布都有版本概念,可以方便的支持配置的回滾)
  6. 灰度發(fā)布(配置發(fā)布后,支隊(duì)部分應(yīng)用實(shí)例生效,等觀察一段時(shí)間后在推送給所有的應(yīng)用)
  7. 權(quán)限管理,發(fā)布審核,操作審計(jì)
  8. 客戶端配置信息監(jiān)控(方便的看到配置被哪些實(shí)例使用)
  9. 支持多種語(yǔ)言,java和.net ,通過(guò)http接口使用也是支持的;
  10. 提供開(kāi)放平臺(tái)api給到其它系統(tǒng)修改和發(fā)布操作;
  11. 部署簡(jiǎn)單

后臺(tái)使用

后臺(tái)界面操作

客戶端接入文檔

后臺(tái)操作

  1. 創(chuàng)建項(xiàng)目
  2. 分配管理員,(管理項(xiàng)目的權(quán)限分配,創(chuàng)建集群,創(chuàng)建namespace)
  3. 分配配置的修改和發(fā)布權(quán)限
  4. 添加配置項(xiàng) ,修改配置項(xiàng)
  5. 發(fā)布配置,回滾配置;
  6. 讀取配置是在應(yīng)用端使用; 具體見(jiàn)客戶端接入文檔;

公共組件的操作

公共組件: 提供給應(yīng)用使用的其它組織的客戶端代碼,比如cat的客戶端;本質(zhì)上也是應(yīng)用的一部分;
區(qū)別 : 通常情況下,公共組件的使用的配置由原始開(kāi)發(fā)團(tuán)隊(duì)維護(hù),但是實(shí)際的應(yīng)用在運(yùn)行時(shí),環(huán)境不一樣,所以我們也允許應(yīng)用在實(shí)際使用的時(shí)候能夠覆蓋公共組件的部分配置;
需要自己創(chuàng)建自己唯一的namespace ;

公共組件的操作

  1. 創(chuàng)建項(xiàng)目
  2. 分配項(xiàng)目管理員權(quán)限
  3. 創(chuàng)建namespace
  4. 添加配置項(xiàng),發(fā)布;
  5. 公共配置的讀取
  6. 應(yīng)用關(guān)聯(lián)公共組件并覆蓋公共組件的配置項(xiàng)

集群獨(dú)立配置

  1. 添加集群,默認(rèn)集群;
  2. 多個(gè)appId使用同一份配置
  3. 同公共組件,關(guān)聯(lián)namespace,寫入公共配置,或者覆蓋公共配置

灰度發(fā)布
操作

  1. 創(chuàng)建灰度
  2. 灰度配置
  3. 灰度規(guī)則的新增,修改
  4. 灰度發(fā)布
  5. 全量發(fā)布,放棄灰度
  6. 發(fā)布?xì)v史

客戶端接入

要求:jdk1.7+ , guava15.0+

客戶端配置參數(shù)

  1. app.id (systemProperty > System Environment > springboot application.properties > META-INF/app.properties) 對(duì)應(yīng)項(xiàng)目的id
  2. apollo.meta 訪問(wèn)地址 (SystemProperty > SpringBoot > SystemEnvironment>/opt/settings/server.properties > app.properties)
  3. 本地緩存路徑 /opt/data/{appId}/config-cache/ key: apollo.cacheDir
  4. 環(huán)境配置 key : env
  5. 集群配置 key: apollo.cluster

客戶端依賴

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

接入方式對(duì)比

接入方式 特點(diǎn)
api靈活,功能完備
springplaceholder方式
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)聽(tīng)

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()));
        }
    }
});

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.xsd
       http://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 {
  @Bean
  public TestJavaConfigBean javaConfigBean() {
    return new TestJavaConfigBean();
  }
}
@Configuration
@EnableApolloConfig(value = {"FX.apollo", "application.yml"}, order = 1)
public class AnotherAppConfig {}

springboot方式接入

直接配置屬性

#加載應(yīng)用對(duì)應(yīng)的application namespace的配置
 apollo.bootstrap.enabled = true
 #加載其它namespace 的配置
 apollo.bootstrap.namespaces = application,FX.apollo,application.yml
 #在日志系統(tǒng)啟動(dòng)之前加載阿波羅
 apollo.bootstrap.eagerLoad.enabled=true

其它說(shuō)明

一些公共的注解

新增的spring注解

  • @ApolloConfig
    用來(lái)自動(dòng)注入Config對(duì)象
  • @ApolloConfigChangeListener
    用來(lái)自動(dòng)注冊(cè)ConfigChangeListener
  • @ApolloJsonValue
    用來(lái)把配置的json字符串自動(dòng)注入為對(duì)象

    配置的遷移

配置的遷移

  1. apollo中創(chuàng)建對(duì)應(yīng)的項(xiàng)目;
  2. 在應(yīng)用中創(chuàng)建好META-INF/app.properties,并配置好;
  3. 原來(lái)的配置文件,轉(zhuǎn)換為properties,貼到apollo后臺(tái);
  4. 刪除本地的配置;

    本地開(kāi)發(fā)

  5. 修改 /opt/settins/server.properties
    設(shè)置env = Local
  6. 準(zhǔn)備本地配置文件 位置:
    Mac/Linux: /opt/data/{appId}/config-cache
    Windows: C:\opt\data{appId}\config-cache
  7. 修改本地配置不會(huì)檢測(cè)到實(shí)時(shí)變化,需要重啟應(yīng)用;

現(xiàn)有項(xiàng)目改造步驟

  1. 去掉disconf的依賴,找到對(duì)應(yīng)的xml,去掉申明的配置bean;
  2. 搜索對(duì)應(yīng)的@Disf,如果在類上,直接去掉,如果在方法或者字段上,替換為@Value注解;
  3. 增加apollo的xml配置;

    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:apollo="http://www.ctrip.com/schema/apollo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-4.0.xsd
                        http://code.alibabatech.com/schema/dubbo
                        http://files.sports.lifesense.com/xsd/dubbo.xsd
                        http://www.ctrip.com/schema/apollo
                        http://www.ctrip.com/schema/apollo.xsd">
    
    <apollo:config order="1"/>
    <apollo:config order="2" namespaces="lx-doctor.redis,lx-doctor.global,lx-doctor.filesystem,lx-doctor.kafka,lx-doctor.dubbo,log4j2.xml"/>
  4. 因?yàn)橹暗囊蕾囶惵窂较麓嬖趍ysql.properties ; 而apollo沒(méi)有生成那么多的文件;
  5. 在apollo后臺(tái),從disconf后臺(tái)中把項(xiàng)目都有的配置放到application.properties下;
  6. 新建私有命名空間 log4j2.xml,把日志配置copy,放到里面發(fā)布;
  7. 如有跟公共配置相同的key,需要重寫的,則關(guān)聯(lián)公共命名空間重寫;
  8. 啟動(dòng)程序,解決編譯錯(cuò)誤;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:Apollo的基本概念和集成實(shí)戰(zhàn)-創(chuàng)新互聯(lián)
文章路徑:http://www.rwnh.cn/article38/jcosp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)建站、微信小程序、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
灵宝市| 宜兰市| 咸宁市| 定西市| 深圳市| 六盘水市| 蕲春县| 泗阳县| 临安市| 苏尼特左旗| 遂宁市| 邻水| 会宁县| 大姚县| 罗定市| 泊头市| 进贤县| 五原县| 永新县| 盐津县| 容城县| 正镶白旗| 化州市| 莆田市| 察雅县| 广丰县| 抚州市| 富顺县| 曲松县| 天全县| 榆社县| 宣汉县| 高安市| 师宗县| 无棣县| 榆树市| 江源县| 井研县| 玉林市| 辉南县| 丹凤县|