Tungsten Fabric SDN — SmartNIC vRouter
790
2022-05-25
隨著項目的復(fù)雜度越來越高,微服務(wù)的盛行,各個中間件相互配合并發(fā)揮其優(yōu)勢,各種配置是避免不了的,以前嘗試過配置放在文件,后來spring cloud 也推出了自己的spring cloud config 配置組件,功能上沒有問題,但真正使用起來還是不順手,順勢而為,攜程開發(fā)部門開源了一套配置平臺,官方介紹詳見?https://github.com/ctripcorp/apollo,這篇文章主要介紹安裝及Java、Net 項目使用。
(一)? 環(huán)境要求
Centos 7.5.1804
Docker 18.06.1-ce
(二)? 安裝設(shè)置
數(shù)據(jù)庫設(shè)置
a)????? 建庫文件可以從官方下載或直接在我上傳的百度網(wǎng)盤下載,點擊下載,打開任何客戶端執(zhí)行Sql文件即可,可以看到兩個數(shù)據(jù)庫
ApolloconfigdbFat: 為具體環(huán)境配置庫,因為不同環(huán)境需要配置不同的存儲庫
Apolloportaldb:為管理門戶
服務(wù)安裝,我用到的鏡像為idoop/docker-apollo,版本號1.0.0,執(zhí)行如下命令下載鏡像,注意指定版本號 docker pull idoop/docker-apollo:1.0.0,因為最新版本對Net支持不完善。下載完成后,安裝服務(wù),命令行支持
docker?run?-d?--network?host?--restart?always?--name?apollo?-e?PORTAL_DB="jdbc:mysql://192.168.1.215:3307/ApolloPortalDB?characterEncoding=utf8"?-e?PORTAL_DB_USER="root"?-e?PORTAL_DB_PWD="123456"?-e?FAT_DB="jdbc:mysql://192.168.1.215:3307/ApolloConfigDBFat?characterEncoding=utf8"?-e?FAT_DB_USER="root"?-e?FAT_DB_PWD="123456"?idoop/docker-apollo:1.1.0
主要注意環(huán)境數(shù)據(jù)庫名字及賬號信息、鏡像版本。命令執(zhí)行完成后,輸入
docker?ps?|?grep?apollo
命令,查看容器狀態(tài)
待容器狀態(tài)為Up的時候,在瀏覽器輸入?http://192.168.1.215:8070,進入管理門戶,默認(rèn)管理賬號為apollo/admin。可以看到如下圖示
說明服務(wù)安裝成功。
設(shè)置,點擊創(chuàng)建項目,設(shè)置項目的配置信息
確認(rèn)沒有問題,再點擊發(fā)布,只有發(fā)布后,客戶端才能接收到信息,這個功能很給贊,考慮的比較周全。
項目接入
a)??????Net
添加apollo.net程序包(v1.5.0)
編輯App.config 或者其它配置文件
讀取配置
幫助 Utils
private?static?void?OnChanged(object?sender,?ConfigChangeEventArgs?changeEvent) ????{ ????????Console.WriteLine("Changes?for?namespace?{0}",?changeEvent.Namespace);????????foreach?(string?key?in?changeEvent.ChangedKeys) ????????{ ????????????ConfigChange?change?=?changeEvent.GetChange(key); ????????????Console.WriteLine("Change?-?key:?{0},?oldValue:?{1},?newValue:?{2},?changeType:?{3}",?change.PropertyName,?change.OldValue,?change.NewValue,?change.ChangeType); ????????} ????}? ????static?void?Main(string[]?args) ????{ ????????Config?config?=?ConfigService.GetAppConfig(); ????????config.ConfigChanged?+=?OnChanged;? ????????while?(true) ????????{ ????????????Thread.Sleep(200);????????????var?timeout?=?config.GetProperty("timeout",?""); ????????????Console.WriteLine(timeout); ????????} }
運行程序,輸入我們在配置中定義的key,比如我設(shè)置的xxx,會返回micro,如圖所示,這樣服務(wù)就達到預(yù)期的效果
b)??????Java
添加apollo-client包
編輯配置文件application.properties
app.id配置APP的標(biāo)志號
env 環(huán)境名稱,目前支持DEV、FAT、UAT、PRO
apollo.meta config 服務(wù)
app.id?=?test-app ?env?=?fat ?apollo.meta?=?http://192.168.1.215:8081
application添加注解
@EnableApolloConfig
獲取配置信息
/** ?????*?從apollo獲取配置信息 ?????*?*/ ????@ApolloConfig????private?Config?config; ? ????@GetMapping("/read_config")????public?Properties?apolloReadDemo(){????????/** ?????????*?得到當(dāng)前app.id中的配置 ?????????*?*/ ????????Set
啟動項目,瀏覽器輸入http://localhost:8089/apollo/read_demo地址查看返回結(jié)果, 8089換成你自己的項目端口號,返回如下信息,示意服務(wù)正常運行。
這樣分布式配置就介紹完了,主要介紹環(huán)境搭建及Net、java 項目接入,如果在開發(fā)中遇到問題,也可以留言共同探討共同進步。
架構(gòu)設(shè)計 分布式
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。