0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分布式中灰度方案就該這樣設(shè)計(jì)

jf_ro2CN3Fa ? 來(lái)源:知了一笑 ? 2023-06-09 15:38 ? 次閱讀

一、背景簡(jiǎn)介

分布式系統(tǒng)中會(huì)存在這樣的開(kāi)發(fā)場(chǎng)景,不同需求可能涉及到對(duì)同一個(gè)服務(wù)的開(kāi)發(fā),那么該服務(wù)在研發(fā)期間就會(huì)存在多個(gè)版本并行的狀態(tài),為了保持不同版本之間的隔離性,驗(yàn)收需要將請(qǐng)求路由到指定版本號(hào)的服務(wù)上處理;

56f37828-05d9-11ee-962d-dac502259ad0.png

假設(shè)存在三個(gè)服務(wù):A、B、C,且服務(wù)B和C都存在多個(gè)版本,那么讓請(qǐng)求按照即定的路由規(guī)則執(zhí)行,即可保證研發(fā)期間的驗(yàn)收是版本間隔離的,并且可以實(shí)現(xiàn)灰度部署的策略;

二、負(fù)載策略

在微服務(wù)系統(tǒng)架構(gòu)中,請(qǐng)求在服務(wù)間轉(zhuǎn)發(fā)時(shí)會(huì)執(zhí)行負(fù)載的策略,尤其當(dāng)服務(wù)存在多版本號(hào)的集群模式時(shí),很顯然常規(guī)的輪詢(xún)、權(quán)重、隨機(jī)等策略無(wú)法滿(mǎn)足需求;進(jìn)行路由規(guī)則的自定義設(shè)計(jì)和開(kāi)發(fā)是常見(jiàn)方式;

經(jīng)典應(yīng)用場(chǎng)景:在請(qǐng)求發(fā)起時(shí),可以通過(guò)Header、Cookie、Parameter等不同的方式,攜帶路由規(guī)則的方式與參數(shù)執(zhí)行匹配邏輯,從而將請(qǐng)求路由到指定版本的服務(wù);

默認(rèn)主分支路由

5703a608-05d9-11ee-962d-dac502259ad0.png

通常來(lái)說(shuō)請(qǐng)求會(huì)在主干分支上執(zhí)行,或者其他分支路由規(guī)則不匹配,也可以通過(guò)標(biāo)識(shí)配置,判斷是否由主分支兜底,甚至是存活的任意服務(wù)兜底;

存活的服務(wù)中可能存在多個(gè)版本,但是主分支Master是否存活是服務(wù)健康與否的基本標(biāo)志,常規(guī)應(yīng)用中路由規(guī)則如果不匹配,會(huì)由Master服務(wù)進(jìn)行兜底;

版本號(hào)統(tǒng)一路由

571959e4-05d9-11ee-962d-dac502259ad0.png

請(qǐng)求通過(guò)攜帶分支號(hào)進(jìn)行統(tǒng)一版本路由是常用的輕量級(jí)方案,即如果請(qǐng)求攜帶的是2.0.0的分支,則在路由時(shí)優(yōu)先匹配相關(guān)版本的服務(wù),不匹配時(shí)由Master服務(wù)處理即可;

服務(wù)定制化路由

5727e5ea-05d9-11ee-962d-dac502259ad0.png

在請(qǐng)求或配置中指定各個(gè)服務(wù)的路由分支號(hào),也是常見(jiàn)的匹配方案,如上圖在請(qǐng)求時(shí)指定服務(wù)B由1.0.0分支執(zhí)行,服務(wù)C由3.0.0分支執(zhí)行,其余服務(wù)在主干分支執(zhí)行;

路由規(guī)則可以看做是對(duì)可用服務(wù)的匹配篩選,如果篩選出來(lái)的服務(wù)存在集群部署時(shí),還要去執(zhí)行相應(yīng)的負(fù)載均衡策略,例如上圖中當(dāng)服務(wù)C的3.0.0分支是集群時(shí),路由匹配到該版本后,再通過(guò)負(fù)載均衡的策略選中其中一個(gè)服務(wù)處理請(qǐng)求;

三、灰度部署

當(dāng)負(fù)載均衡的策略可以按照定制化開(kāi)發(fā)的規(guī)則執(zhí)行時(shí),那服務(wù)的灰度發(fā)布就會(huì)容易很多,在不影響現(xiàn)有服務(wù)的情況下發(fā)布新版本,同時(shí)將請(qǐng)求按照規(guī)則分流,完成對(duì)新服務(wù)的驗(yàn)收后,替換掉舊版本即可;

57327e92-05d9-11ee-962d-dac502259ad0.png

分布式系統(tǒng)中子服務(wù)的拆分非常多,版本開(kāi)發(fā)通常只會(huì)涉及其中部分子服務(wù),通過(guò)灰度模式將相關(guān)服務(wù)部署到線(xiàn)上,并且不會(huì)影響主干的服務(wù),只有開(kāi)啟特定的配置才會(huì)將請(qǐng)求分流到灰度服務(wù);

流程細(xì)節(jié)

1、做好路由配置和管理,請(qǐng)求默認(rèn)在主干服務(wù)執(zhí)行;

2、部署版本涉及的相關(guān)服務(wù),灰度層面默認(rèn)不會(huì)處理請(qǐng)求;

3、驗(yàn)收階段基于配置,將指定規(guī)則的請(qǐng)求路由到灰度層;

4、常用規(guī)則:攜帶分支號(hào)、灰度用戶(hù)群、比例分流、IP等;

5、完成灰度服務(wù)驗(yàn)收后,將相關(guān)服務(wù)標(biāo)記為主干服務(wù);

6、將舊的主干服務(wù)下線(xiàn)后,即本次上線(xiàn)流程完整結(jié)束;

7、若發(fā)現(xiàn)灰度服務(wù)驗(yàn)收失敗,撤掉灰度層或修改都可以;

灰度發(fā)布的模式即依賴(lài)于自定義的路由規(guī)則,以及服務(wù)在負(fù)載均衡時(shí)權(quán)重比例傾斜,這些都可以在配置中心管理,在測(cè)試時(shí)動(dòng)態(tài)修改即可;

在這種模式下,灰度服務(wù)的上線(xiàn)或者下線(xiàn)幾乎是沒(méi)有明顯感知的,如果是相對(duì)簡(jiǎn)單的流程,由測(cè)試人員驗(yàn)收灰度層服務(wù)即可,如果是復(fù)雜的流程,放開(kāi)一定比例的用戶(hù)流量,流程觀(guān)察沒(méi)有問(wèn)題后完成升級(jí);

四、實(shí)踐方案

1、流程設(shè)計(jì)

5741c0aa-05d9-11ee-962d-dac502259ad0.png

在灰度方案落地實(shí)踐的過(guò)程中,通??蛻?hù)端會(huì)攜帶路由規(guī)則的標(biāo)識(shí),從而將請(qǐng)求發(fā)送到指定服務(wù),在規(guī)則無(wú)法正常匹配的時(shí)候,由主干服務(wù)處理,對(duì)于一些核心的開(kāi)關(guān)標(biāo)識(shí)在配置中心統(tǒng)一維護(hù);

2、路由標(biāo)識(shí)

標(biāo)識(shí)獲取

通常情況下,路由的標(biāo)識(shí)是在請(qǐng)求頭中攜帶的,這樣比較方便統(tǒng)一管理,常用的傳遞格式如下:

版本號(hào)統(tǒng)一路由:routeId:2.0.0,即所有請(qǐng)求優(yōu)先在2.0.0分支執(zhí)行;

服務(wù)定制化路由:serverC:3.0.0,請(qǐng)求服務(wù)C時(shí)優(yōu)先在3.0.0分支執(zhí)行;

在微服務(wù)的組件中獲取請(qǐng)求頭的方式很多,比如Gateway網(wǎng)關(guān)中的路由過(guò)濾器,或者服務(wù)中的攔截器,都可以獲取請(qǐng)求的相關(guān)參數(shù)信息,從而執(zhí)行路由規(guī)則;

標(biāo)識(shí)管理

自定義路由規(guī)則需要客戶(hù)端標(biāo)識(shí),雖然獲取請(qǐng)求中的標(biāo)識(shí)并不復(fù)雜,但是將標(biāo)識(shí)傳遞到路由規(guī)則中就涉及到上下文參數(shù)管理:

57572b2a-05d9-11ee-962d-dac502259ad0.png

寫(xiě)階段:在過(guò)濾或攔截中獲取路由標(biāo)識(shí),寫(xiě)入上下文容器;

讀階段:路由時(shí)從容器中讀取標(biāo)識(shí),基于配置信息執(zhí)行規(guī)則;

請(qǐng)求從進(jìn)入網(wǎng)關(guān)開(kāi)始,在服務(wù)間通信時(shí)會(huì)涉及負(fù)載均衡的策略,在過(guò)濾或攔截器中將標(biāo)識(shí)寫(xiě)到上下文容器,執(zhí)行路由規(guī)則需要讀取上下文容器,如果標(biāo)識(shí)不存在則默認(rèn)選擇主干服務(wù)執(zhí)行請(qǐng)求;

3、服務(wù)選中

微服務(wù)之間通信時(shí),選中一個(gè)服務(wù)執(zhí)行請(qǐng)求的邏輯比較復(fù)雜,尤其在灰度模式下涉及到對(duì)路由規(guī)則的改造,即策略指定的服務(wù)優(yōu)先被選中;

5761c88c-05d9-11ee-962d-dac502259ad0.png

1、從注冊(cè)中心查詢(xún)相應(yīng)服務(wù)的可用列表;

2、基于路由規(guī)則,匹配符合請(qǐng)求標(biāo)識(shí)的服務(wù);

3、對(duì)篩選的結(jié)果列表執(zhí)行負(fù)載均衡,選中服務(wù);

在整個(gè)路由機(jī)制中,會(huì)涉及到匹配規(guī)則自定義改造,從常規(guī)的手段來(lái)看,將版本的分支號(hào)加載到服務(wù)的元數(shù)據(jù)信息中,再結(jié)合服務(wù)名稱(chēng)或者IP地址,來(lái)實(shí)現(xiàn)對(duì)服務(wù)列表的多維度過(guò)濾,可以支撐大部分輕量級(jí)灰度策略的實(shí)現(xiàn)。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3643

    瀏覽量

    112825
  • MASTER
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    11220

原文標(biāo)題:分布式中灰度方案就該這樣設(shè)計(jì)!

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    分布式軟件系統(tǒng)

    。更重要的是,NI LabVIEW 8的分布式智能提供的解決方案不僅令這些挑戰(zhàn)迎刃而解,且易于實(shí)施。LabVIEW 8的分布式智能具體包括: 可對(duì)分布式系統(tǒng)
    發(fā)表于 07-22 14:53

    LED分布式恒流原理

    需要恒流,但是電流的大小取決于應(yīng)用環(huán)境,LED照明智能化發(fā)展是關(guān)鍵,分布式恒流技術(shù)充份預(yù)留智能化接口。在分布式LED驅(qū)動(dòng)設(shè)計(jì),驅(qū)動(dòng)回搜、色溫可調(diào)、灰度控制都要變得方便。這是
    發(fā)表于 03-09 16:47

    一行代碼,保障分布式事務(wù)一致性—GTS:微服務(wù)架構(gòu)下分布式事務(wù)解決方案

    解決方案----GTS。方案中提到的GTS是目前業(yè)界第一款,也是唯一的一款通用的解決微服務(wù)分布式事務(wù)問(wèn)題的中間件,而且可以保證數(shù)據(jù)的強(qiáng)一致性。2 SOA
    發(fā)表于 06-05 19:14

    分布式系統(tǒng)的優(yōu)勢(shì)是什么?

    當(dāng)討論分布式系統(tǒng)時(shí),我們面臨許多以下這些形容詞所描述的 同類(lèi)型: 分布式的、刪絡(luò)的、并行的、并發(fā)的和分散的。分布式處理是一個(gè)相對(duì)較新的領(lǐng)域,所以還沒(méi)有‘致的定義。與順序計(jì)算相比、并行的、并發(fā)的和
    發(fā)表于 03-31 09:01

    HarmonyOS應(yīng)用開(kāi)發(fā)-分布式設(shè)計(jì)

    設(shè)計(jì)理念HarmonyOS 是面向未來(lái)全場(chǎng)景智慧生活方式的分布式操作系統(tǒng)。對(duì)消費(fèi)者而言,HarmonyOS 將生活場(chǎng)景的各類(lèi)終端進(jìn)行能力整合,形成“One Super Device”,以實(shí)現(xiàn)
    發(fā)表于 09-22 17:11

    Qorvo分布式Wi-Fi網(wǎng)格解決方案

    實(shí)現(xiàn)互聯(lián)世界的創(chuàng)新RF解決方案提供商Qorvo宣布,正使用 802.11ax 產(chǎn)品組合擴(kuò)大分布式 Wi-Fi 解決方案在住宅的適用范圍。
    發(fā)表于 11-02 07:01

    求一種分布式光伏發(fā)電監(jiān)測(cè)系統(tǒng)解決方案

    分布式電站的形成基礎(chǔ),在碳中和方案的可選項(xiàng)分布式光伏由于其靈活性必將被大力發(fā)展,目前已有河北、甘肅、安徽、浙江、
    發(fā)表于 09-10 06:33

    HDC技術(shù)分論壇:分布式調(diào)試、調(diào)優(yōu)能力解決方案

    。DevEco Studio也將新增HarmonyOS分布式性能Profiler的整體方案,在每個(gè)設(shè)備上會(huì)自動(dòng)部署一個(gè)Profiler的代理,這個(gè)代理將通過(guò)與JS執(zhí)行引擎,Java執(zhí)行引擎,C++性能
    發(fā)表于 10-28 16:20

    HarmonyOS分布式應(yīng)用框架深入解讀

    各種各樣的傳感器,像手表里每天監(jiān)測(cè)睡眠、每天的步行等健康的一個(gè)狀態(tài),如果這些設(shè)備僅局限在一個(gè)設(shè)備上使用那就是一個(gè)極大的限制。所以在分布式環(huán)境的編程,系統(tǒng)從硬件的角度提供了兩個(gè)能力,第一個(gè)是全局的虛擬化,將
    發(fā)表于 11-22 15:15

    HDC2021技術(shù)分論壇:分布式調(diào)試、調(diào)優(yōu)能力解決方案

    性能調(diào)優(yōu)的問(wèn)題,同樣也困擾著很多的開(kāi)發(fā)者。DevEco Studio也將新增HarmonyOS分布式性能Profiler的整體方案,在每個(gè)設(shè)備上會(huì)自動(dòng)部署一個(gè)Profiler的代理,這個(gè)代理將通過(guò)
    發(fā)表于 11-22 17:17

    HDC2021技術(shù)分論壇:如何高效完成HarmonyOS分布式應(yīng)用測(cè)試?

    2.0發(fā)布以來(lái),開(kāi)發(fā)者在測(cè)試和上架HarmonyOS分布式應(yīng)用過(guò)程遇到很多挑戰(zhàn)和困難??傮w可歸納為以下三點(diǎn):分布式應(yīng)用上架測(cè)試通過(guò)率低:開(kāi)發(fā)者提交上架的分布式應(yīng)用基礎(chǔ)質(zhì)量較差。如圖
    發(fā)表于 12-13 14:55

    如何高效完成HarmonyOS分布式應(yīng)用測(cè)試?

    2.0發(fā)布以來(lái),開(kāi)發(fā)者在測(cè)試和上架HarmonyOS分布式應(yīng)用過(guò)程遇到很多挑戰(zhàn)和困難??傮w可歸納為以下三點(diǎn):分布式應(yīng)用上架測(cè)試通過(guò)率低:開(kāi)發(fā)者提交上架的分布式應(yīng)用基礎(chǔ)質(zhì)量較差。如圖
    發(fā)表于 12-13 18:07

    【學(xué)習(xí)打卡】OpenHarmony的分布式任務(wù)調(diào)度

    、同步、注冊(cè)、調(diào)用)機(jī)制。分布式任務(wù)調(diào)度程序是能夠跨多個(gè)服務(wù)器啟動(dòng)調(diào)度作業(yè)或工作負(fù)載的軟件解決方案,整個(gè)過(guò)程是不需要人來(lái)值守的。舉個(gè)例子,我們可以在一臺(tái)或多臺(tái)機(jī)器上安裝分布式調(diào)度器,用戶(hù)可以通過(guò)它在
    發(fā)表于 07-18 17:06

    分布式對(duì)象調(diào)試的事件模型

    針對(duì)事件的分布式程序調(diào)試過(guò)程,需處理大量的事件消息,如果處理不當(dāng),則會(huì)影響分布式程序的執(zhí)行,提出了一種分布式對(duì)象的事件模型,采用這種模型
    發(fā)表于 12-10 17:29 ?8次下載

    springcloud 分布式事務(wù)解決方案實(shí)例

    么都執(zhí)行成功,要么都執(zhí)行失敗。本文將介紹如何使用Spring Cloud來(lái)實(shí)現(xiàn)分布式事務(wù)。 在分布式系統(tǒng),使用數(shù)據(jù)庫(kù)事務(wù)來(lái)保證數(shù)據(jù)一致性是常見(jiàn)的做法。Spring Cloud通過(guò)集成各種分布
    的頭像 發(fā)表于 12-03 16:32 ?937次閱讀