<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Cloud Gray微服務(wù)灰度中間件

          聯(lián)合創(chuàng)作 · 2023-10-01 07:17

          Spring Cloud Gray 是一套開(kāi)源的微服務(wù)灰度路由解決方案,它由 spring-cloud-gray-client,spring-cloud-gray-client-netflix 和 spring-cloud-tray-server,spring-cloud-gray-webui 組成。

          spring-cloud-gray-client 定義了一套灰度路由決策模型,灰度信息追蹤模型,以及和 spring-cloud-gray-server的基本通信功能。
          spring-cloud-gray-client-netflix 在 spring-cloud-gray-client 的基礎(chǔ)上集成了微服務(wù)注冊(cè)中心 eureka,擴(kuò)展ribbon 的負(fù)載均衡規(guī)則,提供了對(duì) zuul、feign、RestTemplate 的灰度路由能力,并且無(wú)縫支持 hystrix 線(xiàn)程池隔離。
          spring-cloud-gray-server 負(fù)責(zé)灰度決策、灰度追蹤等信息的管理以及持久化。
          spring-cloud-gray-webui 提供操作界面。

           

          SpringCloudGray 能做什么

          1. 金絲雀測(cè)試

          先發(fā)布1臺(tái)實(shí)例,用于測(cè)試驗(yàn)證,指定測(cè)試的流量進(jìn)入這臺(tái)實(shí)例,其它流量依然進(jìn)入其它正常的實(shí)例。優(yōu)勢(shì)在于發(fā)布成本小,快速測(cè)試,并且不影響正常用戶(hù)體驗(yàn)影響,即使測(cè)試不通過(guò),也只需回滾這一臺(tái)實(shí)例,用戶(hù)無(wú)感知。

           

           

           

           

           

           

           

           

           

          2. 灰度放量

          通過(guò)金絲雀測(cè)試后,可以逐漸放量到新的版本上。例如,根據(jù)userId或者ip放5%的流量到其中一臺(tái)灰度實(shí)例上,觀察一段時(shí)間沒(méi)異常,可調(diào)整放入20%的流量,如果一臺(tái)實(shí)例扛不住,可再發(fā)一臺(tái)或多臺(tái)實(shí)例。將發(fā)布產(chǎn)生的風(fēng)險(xiǎn)保持在可控范圍內(nèi)。

           

           

           

           

           

           

           

           

           

          3. 切斷實(shí)例流量

          當(dāng)線(xiàn)上出現(xiàn)問(wèn)題,可將某臺(tái)實(shí)例的流量切斷,保留現(xiàn)場(chǎng),設(shè)置指定的請(qǐng)求進(jìn)入實(shí)例,在線(xiàn)調(diào)試并且不影響其它用戶(hù)。

           

           

           

           

           

           

           

           

           

          4. 數(shù)據(jù)透?jìng)?/p>

          借助灰度追蹤的能力,在網(wǎng)關(guān)處記錄用戶(hù)請(qǐng)求的最初的數(shù)據(jù),可以將之透?jìng)鞯秸?qǐng)求完整的調(diào)用鏈中。

           

          5. 借助“破窗”能力,實(shí)例藍(lán)綠發(fā)布

          首次上灰度時(shí),會(huì)存在兩種環(huán)境,一種是已經(jīng)依賴(lài)了灰度客戶(hù)端的環(huán)境,另一種是正常運(yùn)行的當(dāng)前環(huán)境。假如微服務(wù)的負(fù)載均衡是由 ribbon 實(shí)現(xiàn),那么當(dāng)前環(huán)境會(huì)請(qǐng)求路由到實(shí)例狀態(tài)為 UP 的實(shí)例上,而依賴(lài)了灰度客戶(hù)端的環(huán)境,則可以通過(guò)"破窗"能力,跟灰度路由結(jié)合,可以將匹配灰度策略的請(qǐng)求路由到實(shí)例狀態(tài)為 STARTING 的實(shí)例上,不匹配灰度策略的請(qǐng)求路由到實(shí)例狀態(tài)為 UP 的實(shí)例上。 

           

          設(shè)計(jì)思想

          在微服務(wù)架構(gòu)中,接口的調(diào)用通常是服務(wù)消費(fèi)方按照某種負(fù)載均衡策略去選擇服務(wù)實(shí)例;但這無(wú)法滿(mǎn)足線(xiàn)上更特殊化的一些路由邏輯,比如根據(jù)一次請(qǐng)求攜帶的請(qǐng)求頭中的信息路由到某一個(gè)服務(wù)實(shí)例上。Spring Cloud Gray 正是為此而創(chuàng)建。
          在Spring Cloud Gray 中定義了幾個(gè)角色灰度客戶(hù)端(gray-client)、灰度管控端(gray-server)、注冊(cè)中心。

          注冊(cè)中心 負(fù)責(zé)服務(wù)的注冊(cè)和發(fā)現(xiàn)。

          灰度客戶(hù)端 灰度的客戶(hù)端是指依賴(lài)了spring-cloud-gray-client的服務(wù),一般是指服務(wù)消費(fèi)方。

          灰度管控端 負(fù)責(zé)灰度信息的管理、持久化等維護(hù)工作。

          灰度客戶(hù)端會(huì)從灰度管控端拉取一份灰度信息的清單,并在內(nèi)存中維護(hù)這份清單信息,清單中包含服務(wù),服務(wù)實(shí)例,灰度策略,灰度追蹤字段等。當(dāng)請(qǐng)求達(dá)到網(wǎng)關(guān)時(shí),網(wǎng)關(guān)就會(huì)在灰度追蹤中將需要透?jìng)鞯男畔⒂涗浵聛?lái),并將傳遞給轉(zhuǎn)發(fā)的服務(wù)實(shí)例,后面的接口調(diào)用也會(huì)按照同樣的邏輯將追蹤信息透?jìng)飨氯?,從而保證所有一個(gè)請(qǐng)求在微服務(wù)調(diào)用鏈中的灰度路由。
          如下圖所示:

           

           

          項(xiàng)目擴(kuò)展

          項(xiàng)目已經(jīng)實(shí)現(xiàn)了灰度的內(nèi)核,如果要與其它的注冊(cè)中心或者負(fù)載均衡中間件集成,只需實(shí)現(xiàn)相應(yīng)的 plugin 即可,spring cloud gray 已經(jīng)提供了 eureka、ribbon、feign、zuul 以及 spring cloud gateway 和 spring cloud stream 的 plugin,添加相應(yīng)的 plugin 依賴(lài)即可。

           

          版本支持

          目前有三個(gè)分支,對(duì) spring cloud 的支持分別如下

          項(xiàng)目版本 srpingcloud版本 springboot版本
          A.1.1.0 Edgware.SR6 1.5.22.RELEASE
          B.0.0.1 Finchley.SR4 2.0.9.RELEASE
          C.0.0.1-SNAPHOST Greenwich.SR2 2.1.7.RELEASE
          瀏覽 19
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产亲妺妺乱A片 | 人人妻人人操青青 | 亚洲精品久久久久蜜桃 | 亚洲欧洲无码高清 | 免费看日韩AⅤ大片在线直播 |