欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET?Core集成Apollo(阿波羅)

 更新時間:2022年04月08日 15:47:33   作者:暗斷腸  
這篇文章介紹了ASP.NET?Core集成Apollo的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.介紹

Apollo(阿波羅)是攜程框架部研發(fā)并開源的一款生產(chǎn)級的配置中心產(chǎn)品,它能夠集中管理應(yīng)用在不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場景。

2.架構(gòu)和模塊

下面是Apollo架構(gòu)模塊圖(來源自于波波微課):

上圖簡要描述了Apollo的總體設(shè)計,我們可以從下往上看:

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

2.1用戶在配置發(fā)布后的實(shí)時推送設(shè)計

在配置中心中,一個重要的功能就是配置發(fā)布后實(shí)時推送到客戶端。下面我們簡要看一下這塊是怎么設(shè)計實(shí)現(xiàn)的:

  • 用戶在Portal操作配置發(fā)布。
  • Portal調(diào)用Admin Service的接口操作發(fā)布。
  • Admin Service發(fā)布配置后,發(fā)送ReleaseMessage給各個Config Service。
  • Config Service收到ReleaseMessage后,通知對應(yīng)的客戶端。

2.2Apollo客戶端的實(shí)現(xiàn)原理

  • 客戶端和服務(wù)端保持了一個長連接,從而能第一時間獲得配置更新的推送(通過Http Long Polling實(shí)現(xiàn))。
  • 客戶端還會定時從Apollo配置中心服務(wù)端拉取應(yīng)用的最新配置。
    • 這是一個fallback機(jī)制,為了防止推送機(jī)制失效導(dǎo)致配置不更新。
    • 客戶端定時拉取會上報本地版本,所以一般情況下,對于定時拉取的操作,服務(wù)端都會返回304 - Not Modified。
    • 定時頻率默認(rèn)為每5分鐘拉取一次,客戶端也可以通過在運(yùn)行時指定System Property: apollo.refreshInterval來覆蓋,單位為分鐘。
  • 客戶端從Apollo配置中心服務(wù)端獲取到應(yīng)用的最新配置后,會保存在內(nèi)存中。
  • 客戶端會把從服務(wù)端獲取到的配置在本地文件系統(tǒng)緩存一份。
    • 在遇到服務(wù)不可用,或網(wǎng)絡(luò)不通的時候,依然能從本地恢復(fù)配置,不影響應(yīng)用正常運(yùn)行。本地緩存路徑位于C:\opt\data\{appId}\config-cache,所以請確保C:\opt\data\目錄存在,且應(yīng)用有讀寫權(quán)限。
  • 應(yīng)用程序可以從Apollo客戶端獲取最新的配置、訂閱配置更新通知。

2.3環(huán)境配置(Environment)

Apollo支持應(yīng)用在不同的環(huán)境有不同的配置,所以Environment是另一個從服務(wù)器獲取配置的重要信息。Environment通過配置文件來指定,文件位置為C:\opt\settings\server.properties,文件內(nèi)容形如:

env=DEV

目前,env支持以下幾個值(大小寫不敏感):

  • DEV:Development environment
  • FAT:Feature Acceptance Test environment
  • UAT:User Acceptance Test environment
  • PRO:Production environment

3.Apollo在Windows上快速啟動

3.1準(zhǔn)備工作

3.1.1 Java jdk

Apollo服務(wù)端:1.8+

Apollo客戶端:1.7+

Java jdk1.8下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,這里提醒一下,安裝目錄名稱千萬別有空格,不然會Apollo啟動時候會報錯的。

在配置好后,可以通過如下命令檢查:

java -version

配置下環(huán)境變量:

3.1.2MySQL

版本要求:5.6.5+(MySQL服務(wù)端安裝我就不說了,自行百度)

Apollo的表結(jié)構(gòu)對timestamp使用了多個default聲明,所以需要5.6.5以上版本。

連接上MySQL后,可以通過如下命令檢查:

SHOW VARIABLES WHERE Variable_name = 'version';

3.1.3下載快速啟動安裝包

下載Apollo安裝包,大家只需要下載到本地,就可以直接使用,免去了編譯、打包過程。

Github下載:https://github.com/nobodyiam/apollo-build-scripts

安裝包要58M這么大,是因?yàn)檫@是一個可以自啟動的jar包,里面包含了所有依賴jar包以及一個內(nèi)置的tomcat容器。解壓Apollo安裝包后會看到如下文件:

3.2安裝步驟

3.2.1創(chuàng)建數(shù)據(jù)庫

Apollo服務(wù)端共需要兩個數(shù)據(jù)庫:ApolloPortalDB和ApolloConfigDB,我們把數(shù)據(jù)庫、表的創(chuàng)建和樣例數(shù)據(jù)都分別準(zhǔn)備了sql文件,只需要導(dǎo)入數(shù)據(jù)庫即可。

創(chuàng)建ApolloPortalDB:通過各種MySQL客戶端導(dǎo)入sql/apolloportaldb.sql即可。

下面以MySQL原生客戶端為例:

source /your_local_path/sql/apolloportaldb.sql

創(chuàng)建ApolloConfigDB:通過各種MySQL客戶端導(dǎo)入sql/apolloconfigdb.sql即可。

下面以MySQL原生客戶端為例:

source /your_local_path/sql/apolloconfigdb.sql

3.2.2配置數(shù)據(jù)庫連接信息

Apollo服務(wù)端需要知道如何連接到你前面創(chuàng)建的數(shù)據(jù)庫,所以需要編輯Apollo目錄中的demo.sh,修改ApolloPortalDB和ApolloConfigDB相關(guān)的數(shù)據(jù)庫連接串信息:

# apollo config db info
apollo_config_db_url=jdbc:mysql://172.168.16.xxx:5621/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=用戶名
apollo_config_db_password=密碼

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://172.168.16.xxx:5621/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=用戶名
apollo_portal_db_password=密碼

3.3啟動Apollo配置中心

快速啟動腳本會在本地啟動3個服務(wù),分別使用8070, 8080, 8090端口,請確保這3個端口當(dāng)前沒有被使用。

  • 在Linux/Mac下,可以通過如下命令檢查:
lsof -i:8080
  • ●在Window下,可以通過如下命令檢查:
netstat -aon|findstr 8080

先切換到Apollo目錄:

cd D:\StudyDocuments\technology\Apollo\apollo-build-scripts-master

然后執(zhí)行啟動腳本:

./demo.sh start

因?yàn)槲沂窃诒緳C(jī)部署Apollo服務(wù)端的,所以直接打開http://localhost:8070即可:

默認(rèn)管理員用戶名:apollo,密碼:admin,輸入即可登錄成功!而Eureka默認(rèn)端口是8080,即打開http://localhost:8080/即可:

阿波羅如何創(chuàng)建修改用戶密碼、創(chuàng)建用戶、部門,分配權(quán)限等等操作,我就不說了,大伙可以自行百度或者去官網(wǎng)了解,這不在本文范疇之內(nèi)。

4.ASP.NET Core集成Apollo快速開發(fā)

4.1Apollo環(huán)境配置

Apollo默認(rèn)有兩個組織部門,可以通過登錄后管理員工具-系統(tǒng)參數(shù),輸入key值organizations添加修改。返回主界面點(diǎn)擊創(chuàng)建項(xiàng)目后,根據(jù)自身項(xiàng)目輸入相關(guān)項(xiàng)目信息,我這邊demo項(xiàng)目信息如下:

創(chuàng)建項(xiàng)目后,點(diǎn)擊進(jìn)去可能會報如下錯誤提示:

這種錯誤一般是數(shù)據(jù)庫Eureka服務(wù)配置參數(shù)不正確導(dǎo)致的!因?yàn)槲沂潜镜夭渴餉pollo服務(wù)端的,IIS已經(jīng)存在一個站點(diǎn)占用了Eureka服務(wù)默認(rèn)端口8080,所以停掉站點(diǎn)后,輸入demo.sh stop-demo.sh start重新啟動下Apollo即可。重新啟動Apollo后可能還會提示如下信息:

因?yàn)轫?xiàng)目缺少環(huán)境namespaces配置,點(diǎn)擊左側(cè)“添加Namespace”選項(xiàng)添加一個dev開發(fā)環(huán)境namespaces:

namespaces創(chuàng)建后新增AspNetCore.Apollo.Test.WebApi項(xiàng)目開發(fā)環(huán)境配置:

上述配置相當(dāng)于Core項(xiàng)目appsettings.json中以下配置:

然后點(diǎn)擊發(fā)布即可。

4.2ASP.NET Core集成Apollo

通過Github上https://github.com/ctripcorp/apollo.net源碼可以了解到,示例AspNetCore.Apollo.Test.WebApi應(yīng)用可以通過appsettings.json文件可以添加Apollo環(huán)境配置信息:

{
  "apollo": {
    "AppId": "AspNetCore.Apollo.Test.WebApi",
    //"Cluster": "test",////沒有集群,暫時隱藏
    "MetaServer": "http://localhost:8080/",
    //"Secret": "ffd9d01130ee4329875ac3441c0bedda",////沒有ids4接入,暫時隱藏
    //"Namespaces": [ "application.xml", "application.json", "application.yml", "application.yaml", "application" ],////沒有Namespace數(shù)組,暫時隱藏
    "Namespace": "dev",
    "Env": "Dev",
    "Meta": {
      "DEV": "http://localhost:8080/"
      //"FAT": "http://106.54.227.205:8080/",
      //"UAT": "http://106.54.227.205:8080/",
      //"PRO": "http://106.54.227.205:8080/"
      ////示例暫時只有開發(fā)環(huán)境
    }
  }
}

然后在Program主程序入口引用Com.Ctrip.Framework.Apollo.Configuration Nuget包,添加Apollo環(huán)境配置信息,添加Namespace名稱,具體配置代碼如下:

.ConfigureAppConfiguration(builder =>
{
    var iConfigurationRoot = builder.Build();
    var apolloInfo = iConfigurationRoot.GetSection("apollo");
    var namespaceName = iConfigurationRoot.GetSection("apollo").GetSection("Namespace").Value;
    builder.AddApollo(apolloInfo).AddNamespace(namespaceName);
})

然后運(yùn)行示例AspNetCore.Apollo.Test.WebApi應(yīng)用,會看到如下調(diào)試信息:

從上述調(diào)試信息可以看到Apollo在ASP.NET Core集成成功!

到此這篇關(guān)于ASP.NET Core集成Apollo的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論