中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

apollo知識點有哪些

發布時間:2021-11-16 11:20:17 來源:億速云 閱讀:134 作者:iii 欄目:大數據

本篇內容介紹了“apollo知識點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、總結:

1.管理:應用管理、命名空間管理、部門管理、用戶管理、角色管理、權限管理、審計管理

2.數據結構:應用、元素item、元素變更記錄、元素發布記錄、元素灰度規則(臨時命名空間)

1.使用:配置服務器地址、配置本地緩存地址,配置環境evn、配置集群、配置appid

2.使用配置方法:java環境、系統管理、配置文件、-D參數

二、應用三板斧

(一)配置中心部署

1.將兩個數據庫腳本導入到mysql數據庫

2.修改configService、adminService、portal項目中的數據庫連接和遠程服務調用地址配置

3.啟動configService、adminService、portal三個項目

(二)程序應用實例

1.pom文件

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

2.app.properties(resources/META-INF目錄下)

# test
app.id=umember
env=DEV
apollo.meta=http://localhost:8080

3.測試代碼

package com.unilife.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigChangeListener;
import com.ctrip.framework.apollo.ConfigService;
import com.ctrip.framework.apollo.model.ConfigChange;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.google.common.base.Charsets;

public class TestApollo {
	
	
	public static void  main(String[] args) throws Exception{
		 Config appConfig=ConfigService.getAppConfig();
		try {
			
			String k1=appConfig.getProperty("jdbc.type", null); // k1 = v11
			String k2=appConfig.getProperty("k2", null); // k2 = v21
			System.out.println(k1);
			System.out.println(k2);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		appConfig.addChangeListener(new ConfigChangeListener() {
		  public void onChange(ConfigChangeEvent changeEvent) {
		    //do something
			  System.out.println("Changes for namespace :"+ changeEvent.getNamespace());
		        for (String key : changeEvent.changedKeys()) {
		          ConfigChange change = changeEvent.getChange(key);
		          System.out.println("Change - key: "+change.getPropertyName()+", oldValue: "+change.getOldValue()+", newValue: "+change.getNewValue()+", changeType: "+change.getChangeType());
		        }
		  }
		});
		
		while (true) {
		      System.out.print("> ");
		      String input = new BufferedReader(new InputStreamReader(System.in, Charsets.UTF_8)).readLine();
		      if (input == null || input.length() == 0) {
		        continue;
		      }
		      input = input.trim();
		      if (input.equalsIgnoreCase("quit")) {
		        System.exit(0);
		      }
		      String temp=appConfig.getProperty(input,null);
		      System.out.println(temp);
		    }
		  }
}

三、理論(轉)
1、SpringCloudConfig和Apollo的對比
2、apollo的介紹
3、apollo架構設計原理
4、客戶端通過apollo拉取配置的原理
1、SpringCloudConfig和Apollo的對比

apollo知識點有哪些

如上圖對比

    SpringCloudConfig優勢是對SpringBoot原生支持,且是SpringCloud組件。缺點是無界面管理,且需要git,SpringCloudBus、Mq支持其動態更新。
    Apollo優勢是技術棧單一,僅需要Mysql就可以支持動態更新配置,便于維護。缺點是不是SpringCloud體系,雖然開源,版本更新也活躍,但是對SpringCloud的支持沒有SpringCloudConfig的好。

2、apollo的介紹

Apollo(阿波羅)是攜程框架部門研發的開源配置管理中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規范的權限、流程治理等特性。

Apollo支持4個維度管理Key-Value格式的配置:

    application (應用)
    environment (環境)
    cluster (集群)
    namespace (命名空間)
    同時,Apollo基于開源模式開發,開源地址

3、apollo架構設計原理

apollo知識點有哪些
上圖簡要描述了Apollo的總體設計,我們可以從下往上看:

    Config Service提供配置的讀取、推送等功能,服務對象是Apollo客戶端
    Admin Service提供配置的修改、發布等功能,服務對象是Apollo Portal(管理界面)
    Config Service和Admin Service都是多實例、無狀態部署,所以需要將自己注冊到Eureka中并保持心跳在Eureka之上我們架了一層Meta Server用于封裝Eureka的服務發現接口
    Client通過域名訪問Meta Server獲取ConfigService服務列表(IP+Port),而后直接通過IP+Port訪問服務,同時在
    Client側會做load balance、錯誤重試
    Portal通過域名訪問Meta Server獲取AdminService服務列表(IP+Port),而后直接通過IP+Port訪問服務,同時在
    Portal側會做load balance、錯誤重試
    為了簡化部署,我們實際上會把Config Service、Eureka和Meta Server三個邏輯角色部署在同一個JVM進程中

4、客戶端通過apollo拉取配置的原理

apollo知識點有哪些
上圖簡要描述了Apollo客戶端的實現原理:

    客戶端和服務端保持了一個長連接,從而能第一時間獲得配置更新的推送。
    客戶端還會定時從Apollo配置中心服務端拉取應用的最新配置。
        這是一個fallback機制,為了防止推送機制失效導致配置不更新
        客戶端定時拉取會上報本地版本,所以一般情況下,對于定時拉取的操作,服務端都會返回304 - Not Modified
        定時頻率默認為每5分鐘拉取一次,客戶端也可以通過在運行時指定System Property: apollo.refreshInterval來覆蓋,單位為分鐘。
    客戶端從Apollo配置中心服務端獲取到應用的最新配置后,會保存在內存中
    客戶端會把從服務端獲取到的配置在本地文件系統緩存一份
    在遇到服務不可用,或網絡不通的時候,依然能從本地恢復配置
    應用程序從Apollo客戶端獲取最新的配置、訂閱配置更新通知

配置更新推送實現

    前面提到了Apollo客戶端和服務端保持了一個長連接,從而能第一時間獲得配置更新的推送。
    長連接實際上我們是通過Http Long Polling實現的,具體而言:

    客戶端發起一個Http請求到服務端
    服務端會保持住這個連接60秒
        如果在60秒內有客戶端關心的配置變化,被保持住的客戶端請求會立即返回,并告知客戶端有配置變化的namespace信息,客戶端會據此拉取對應namespace的最新配置
        如果在60秒內沒有客戶端關心的配置變化,那么會返回Http狀態碼304給客戶端
    客戶端在收到服務端請求后會立即重新發起連接,回到第一步

    考慮到會有數萬客戶端向服務端發起長連,在服務端我們使用了async servlet(Spring DeferredResult)來服務Http Long Polling請求。

“apollo知識點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南昌县| 巍山| 新乡市| 文水县| 利津县| 封开县| 衡东县| 屏东县| 绥阳县| 黄冈市| 巴林左旗| 乌鲁木齐市| 临邑县| 四子王旗| 勃利县| 德格县| 新闻| 光山县| 思南县| 赤峰市| 建湖县| 商丘市| 三台县| 天柱县| 伊吾县| 怀柔区| 大名县| 朔州市| 建平县| 尚志市| 高雄市| 长寿区| 巴南区| 多伦县| 定结县| 兰考县| 中阳县| 南溪县| 开鲁县| 昌邑市| 郓城县|