老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Go語言微服務開發框架Gochassis的詳細介紹

這篇文章主要介紹“Go語言微服務開發框架Go chassis的詳細介紹”,在日常操作中,相信很多人在Go語言微服務開發框架Go chassis的詳細介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Go語言微服務開發框架Go chassis的詳細介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創新互聯主要從事網站制作、成都網站制作、網頁設計、企業做網站、公司建網站等業務。立足成都服務清水,十載網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:028-86922220


架構

Go語言微服務開發框架Go chassis的詳細介紹

Source: 配置源是一種標準接口,可以通過實現一個source來接入不同配置源,它定義配置來自哪個資源,配置可以來自配置中心configcenter,來自本地文件,來自環境變量或是啟動命令行。source負責將配置項緩存到本地內存。用戶可以選擇加載任意的source實現。

Config center source: 配置中心源不同于其他source,它包含一個client抽象,可以對接不同的生態系統,目前對接了攜程開源的配置中心Apollo。

Config manager:負責整合管理所有source的配置,每個source可以定義優先級,當通過manager獲取配置時,如果2個不同的source有相同的配置,那么就會取最大優先級的配置。

Event Dispatcher:用戶可以通過Archaius API進行配置變化監聽,當source內部的配置項新增,更新,刪除配置時,都會通知到監聽器。

Source優先級:優先級由大到小依次為Config center,CLI,ENV,file,當有相同配置項的時候僅優先級大的配置生效。在一個分布式系統中,遠程的配置中心理應擁有最大優先級,而在本地運行一個獨立的進程時,通常的思維是,命令行參數優先級高于環境變量,高于本地文件內容。擁有了這樣一套機制后,用戶就無需再寫代碼處理配置項生效邏輯。

Config Factory: 封裝了event 和 config manager的API

Archaius API: 封裝底層實現,提供友好的API供開發者使用

獲取配置

獲取配置有2種不同的手段:

1. 調用archaius API的Get 方法

2. 注冊監聽器

事件的觸發是由soruce的開發者來決定的,每個source的行為會有不同:

命令行與環境變量是不會產生任何事件的,當archaius運行后配置項就已經定下來了,只能使用Get方法獲取。而文件source會在啟動后拉取一遍本地文件內容并轉換為配置項(可自定義轉換算法,決定配置項形態),之后持續監聽本地文件變化,當有變化發生時會刷新本地配置并通知到監聽器。所以2種方法都支持。config center source行為與文件又不同,在啟動后,它就會周期拉取配置中心的配置,并且對比每一次配置項的不同,并觸發不同類型事件。

配置項形態

假設程序有一個配置文件叫a.yaml,內容如下

registry:
  enabled: true
  interval: 30s復制代碼

要考慮該如何去對待這raw data,目前有2種方式

第一種,將配置項拆分為java properties風格的配置:

registry.refresh: true
registry.interval: 30s

go archaius開放了file handler接口,允許你決定如何將文件內容處理為配置項

Go語言微服務開發框架Go chassis的詳細介紹

那么在遠程的配置中心中,key value的管理方式就要遵循 file handler的行為,當你想變更registry.refresh時,就要在配置中心種更改這個配置項及值。

類似于開關類的配置項,這種java properties的管理方式還是不錯的,當一個配置項改變時觸發一次事件。

但是有一類配置項并不適合如此管理,這就是第二種方式,比如go chassis中的路由管理配置文件:

Go語言微服務開發框架Go chassis的詳細介紹

通常都需要大范圍的更改配置項,那么如果還使用切分的方式在配置中心中管理將會引起go archaius運行時大量的事件觸發,并且,用戶在使用體驗上大打折扣,到處去找分散的配置項,逐一更改。正確的行為是,將文件名作為配置中心中的key,文件內容作為value。用戶需要更改時,去找對應的文件名即可,修改后一次性下發,只會觸發一次事件,完成路由的變更。

開發者應根據實際場景判斷如何處理配置項形態。也可以自己實現handler來決定配置項形態

配置運行時熱加載

在運行時可以隨時通過統一的配置中心或者本地文件(不推薦分布式環境登到機器里改文件,但在本地debug時還是推薦使用文件來測試程序的熱加載邏輯)更改配置了,那么接下來要解決的問題就是配置在運行時生效。

這里的技巧是使用go語言中的讀寫鎖。我以go chassis中路由配置來說明

Go語言微服務開發框架Go chassis的詳細介紹

go chassis運行時總是會有不斷地大并發數據訪問router config這塊緩存,使用一個讀寫鎖lock中的讀鎖,每次訪問緩存都用讀鎖,使用后,解開讀鎖。

向archaius注冊監聽器,需要自己編寫監聽器的邏輯,每當事件出發后就會通過archaius中的數據構建一個結構體數據,然后將數據存到本地緩存,首先使用lock的寫鎖鎖住router config,更新后,解開寫鎖。

在這樣的機制下,就可以做到運行時熱加載配置項而無需重啟服務。

到此,關于“Go語言微服務開發框架Go chassis的詳細介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!


網頁題目:Go語言微服務開發框架Gochassis的詳細介紹
文章路徑:http://www.xueling.net.cn/article/johdjd.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 99在线免费视频 | 日本a级无毛 | 国产东北肥熟老胖女 | 亚洲综合AV一区二区三区不卡 | 思思久久96热在精品国产 | 毛多水多欧美肥胖老妇性开放 | 午夜一级精品 | 麻豆蜜桃九色在线视频 | 中国久久精品 | 91.精品高清在线观看 | 91麻豆精品国产91久久久资源速度 | 国产区久久 | 日韩精品一区二区在线 | 白丝女仆裸体被强趴内裤啪啪 | 美女视频黄a全部免费看小说 | 超碰97自拍 | 高潮潮喷奶水飞溅视频无码 | 国产在线观看一区 | 51无码人妻精品1国产 | 青青草97| 成年人在线观看视频免费 | 深夜在线观看视频 | 一区二区三区久久久久久 | 夜夜操天天摸 | 成人a毛片 | 91麻豆精品国产综合久久久久久 | 97久久人人超碰 | 国产亚洲精品久久久久久青梅 | 香蕉影院在线 | 天天拍夜夜添久久精品 | 久久机视频 | 绯色av蜜臀vs少妇 | 伊人青青久久 | 成人免费视频网站在线观看 | 精品久久久久人成 | 久久丫精品国产免费 | 国产www成人 | 777久久精品 | 德国一级毛片 | 久久综合狠狠综合久久综合88 | 精品91久久久 |