【Dubbo3終極特性】「流量治理體系」一文教你如何通過(guò)Dubbo-Admin實(shí)現(xiàn)動(dòng)態(tài)進(jìn)行流量隔離機(jī)制

背景信息

如果一個(gè)應(yīng)用有多個(gè)版本在線上同時(shí)運(yùn)行尘喝,部署在不同環(huán)境中絮短,如日常環(huán)境和特殊環(huán)境窘问,則
可以使用標(biāo)簽路由對(duì)不同環(huán)境中的不同版本進(jìn)行流量隔離臼婆,將秒殺訂單流量或不同渠道訂單流量路由到特殊環(huán)境,將正常的流量路由到日常環(huán)境恰起。即使特殊環(huán)境異常修械,本應(yīng)進(jìn)入特殊環(huán)境的流量也不會(huì)進(jìn)入日常環(huán)境,不影響日常環(huán)境的使用检盼。

啟動(dòng)運(yùn)行Dubbo-Admin

在運(yùn)行之前肯污,我們需要保障進(jìn)行運(yùn)行對(duì)應(yīng)的Dubbo-Admin服務(wù),可以參考 【Dubbo3終極特性】「流量治理體系」一文教你如何搭建Dubbo3的控制臺(tái)服務(wù)Dubbo-Admin吨枉,進(jìn)行搭建和運(yùn)行啟動(dòng)Dubbo-Admin服務(wù)蹦渣。

因?yàn)閐ubbo-admin-server會(huì)將dubbo-admin-ui打包為資源文件,所以啟動(dòng)dubbo-admin-server就可直接訪問(wèn)頁(yè)面了

我們?cè)谶@里可以直接下載clone源碼

git clone https://github.com/apache/dubbo-admin.git

直接可以下載到IDE中


image
  • dubbo-admin-distribution:主要用于操作安裝和打包使用的項(xiàng)目組件
  • dubbo-admin-server:dubbo-admin服務(wù)的后臺(tái)服務(wù)springboot類型的項(xiàng)目
  • dubbo-admin-test:dubbo-admin服務(wù)的測(cè)試服務(wù)
  • dubbo-admin-ui:dubbo-admin的ui服務(wù)貌亭,主要會(huì)顯示前端的ui頁(yè)面柬唯。

通過(guò)源碼打包運(yùn)行

  1. dubbo-admin-server/src/main/resources/application.properties中指定注冊(cè)中心地址
  2. 構(gòu)建
    • mvn clean package -Dmaven.test.skip=true
  3. 啟動(dòng)
    • mvn --projects dubbo-admin-server spring-boot:run
      或者
    • cd dubbo-admin-distribution/target; java -jar dubbo-admin-${project.version}.jar
  4. 訪問(wèn) http://localhost:38080
image

可以直接再I(mǎi)DE的md文件中進(jìn)行允許編譯對(duì)應(yīng)的dubbo-admin的代碼以及運(yùn)行服務(wù)。

Dubbo-Admin 動(dòng)態(tài)進(jìn)行流量隔離

Dubbo提供動(dòng)態(tài)流量隔離的服務(wù)治理能力属提,可以在無(wú)需重啟應(yīng)用的情況下权逗,動(dòng)態(tài)進(jìn)行流量隔離美尸。Dubbo可以通過(guò)XML配置冤议,注解配置,動(dòng)態(tài)配置實(shí)現(xiàn)流量隔離师坎,這里主要介紹動(dòng)態(tài)配置的方式恕酸。

允許多個(gè)Provider端服務(wù)

你可以直接進(jìn)行運(yùn)行服務(wù)進(jìn)行運(yùn)行多個(gè)實(shí)例。如下所示胯陋。

image

當(dāng)然也可以通過(guò)VM參數(shù)進(jìn)行調(diào)整為不同的dubbo.protocol.port蕊温,方便我們進(jìn)行路由轉(zhuǎn)發(fā)機(jī)制袱箱。

標(biāo)簽路由規(guī)則

將服務(wù)提供者進(jìn)行分組,約束流量只在指定分組中流轉(zhuǎn)义矛,從而實(shí)現(xiàn)流量隔離的目的发笔,有兩種方式可以完成實(shí)例分組,分別是動(dòng)態(tài)規(guī)則打標(biāo)和靜態(tài)規(guī)則打標(biāo)

2.1 動(dòng)態(tài)規(guī)則相較于靜態(tài)規(guī)則優(yōu)先級(jí)更高

image

標(biāo)簽路由

登錄Dubbo-Admin控制臺(tái)

image

用戶名為root凉翻,密碼為root了讨。

在左側(cè)導(dǎo)航欄選擇服務(wù)治理 > 標(biāo)簽路由。

image

點(diǎn)擊創(chuàng)建按鈕制轰,在創(chuàng)建新標(biāo)簽規(guī)則面板中前计,填寫(xiě)規(guī)則內(nèi)容,然后單擊保存垃杖。

image

配置模板

---
  force: false
  runtime: true
  enabled: true
  key: application-provider
  tags:
    - name: tag1
      addresses: ["127.0.0.1:20880"]
    - name: tag2
      addresses: ["127.0.0.1:20881"]
 ...

對(duì)于流量隔離場(chǎng)景男杈,只需要理清楚以下問(wèn)題基本就知道配置該怎么寫(xiě)了:

修改服務(wù)所屬提供者應(yīng)用的配置。

應(yīng)用:scope: application, key: app-name(還可使用services指定某幾個(gè)服務(wù))调俘。

當(dāng)路由結(jié)果為空伶棒,是否強(qiáng)制返回。

  • force=false: 當(dāng)路由結(jié)果為空彩库,降級(jí)請(qǐng)求tag為空的提供者苞冯。
  • force=true: 當(dāng)路由結(jié)果為空,直接返回異常侧巨。

路由規(guī)則的優(yōu)先級(jí)

priority=1: 路由規(guī)則的優(yōu)先級(jí)舅锄,用于排序,優(yōu)先級(jí)越大越靠前執(zhí)行司忱,可不填皇忿,缺省為 0。

配置是否只對(duì)某幾個(gè)特定實(shí)例生效坦仍。

所有實(shí)例:addresses: ["0.0.0.0"] 或addresses: ["0.0.0.0:*"] 具體由side值決定鳍烁。

指定實(shí)例:addersses[實(shí)例地址列表]。

運(yùn)行服務(wù)提供者

可以從dubbo-admin中看到對(duì)應(yīng)的服務(wù)已經(jīng)注冊(cè)上來(lái)了

image

開(kāi)發(fā)服務(wù)消費(fèi)者

image
RpcContext.getContext().setAttachment("dubbo.tag",name);

切換不同的tag參數(shù)繁扎,即可完成流量轉(zhuǎn)發(fā):tag1 tag2

我們通過(guò)name參數(shù)進(jìn)行切換標(biāo)簽

請(qǐng)求 GET http://127.0.0.1:8082/add?name=tag1&age=12

image

我們可以看到打印了對(duì)應(yīng)provider1服務(wù)的日志

請(qǐng)求 GET http://127.0.0.1:8082/add?name=tag2&age=12

image

我們可以看到打印了對(duì)應(yīng)provider2服務(wù)的日志

小伙伴們幔荒,你們學(xué)會(huì)了嘛?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梳玫,一起剝皮案震驚了整個(gè)濱河市爹梁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌提澎,老刑警劉巖姚垃,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盼忌,居然都是意外死亡积糯,警方通過(guò)查閱死者的電腦和手機(jī)掂墓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)看成,“玉大人君编,你說(shuō)我怎么就攤上這事〈ɑ牛” “怎么了啦粹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)窘游。 經(jīng)常有香客問(wèn)我唠椭,道長(zhǎng),這世上最難降的妖魔是什么忍饰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任贪嫂,我火速辦了婚禮,結(jié)果婚禮上艾蓝,老公的妹妹穿的比我還像新娘力崇。我一直安慰自己,他們只是感情好赢织,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布亮靴。 她就那樣靜靜地躺著,像睡著了一般于置。 火紅的嫁衣襯著肌膚如雪茧吊。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天八毯,我揣著相機(jī)與錄音搓侄,去河邊找鬼。 笑死话速,一個(gè)胖子當(dāng)著我的面吹牛讶踪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泊交,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼乳讥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了廓俭?” 一聲冷哼從身側(cè)響起云石,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎白指,沒(méi)想到半個(gè)月后留晚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡告嘲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年错维,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橄唬。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赋焕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仰楚,到底是詐尸還是另有隱情隆判,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布僧界,位于F島的核電站侨嘀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捂襟。R本人自食惡果不足惜咬腕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葬荷。 院中可真熱鬧涨共,春花似錦、人聲如沸宠漩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扒吁。三九已至火鼻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雕崩,已是汗流浹背凝危。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晨逝,地道東北人蛾默。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捉貌,于是被迫代替她去往敵國(guó)和親支鸡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容