成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊分布式中灰度方案實踐

開發 前端
在整個路由機制中,會涉及到匹配規則自定義改造,從常規的手段來看,將版本的分支號加載到服務的元數據信息中,再結合服務名稱或者IP地址,來實現對服務列表的多維度過濾,可以支撐大部分輕量級灰度策略的實現。

一、背景簡介

分布式系統中會存在這樣的開發場景,不同需求可能涉及到對同一個服務的開發,那么該服務在研發期間就會存在多個版本并行的狀態,為了保持不同版本之間的隔離性,驗收需要將請求路由到指定版本號的服務上處理;

圖片

假設存在三個服務:A、B、C,且服務B和C都存在多個版本,那么讓請求按照即定的路由規則執行,即可保證研發期間的驗收是版本間隔離的,并且可以實現灰度部署的策略;

二、負載策略

在微服務系統架構中,請求在服務間轉發時會執行負載的策略,尤其當服務存在多版本號的集群模式時,很顯然常規的輪詢、權重、隨機等策略無法滿足需求;進行路由規則的自定義設計和開發是常見方式;

經典應用場景:在請求發起時,可以通過Header、Cookie、Parameter等不同的方式,攜帶路由規則的方式與參數執行匹配邏輯,從而將請求路由到指定版本的服務;

默認主分支路由

圖片

通常來說請求會在主干分支上執行,或者其他分支路由規則不匹配,也可以通過標識配置,判斷是否由主分支兜底,甚至是存活的任意服務兜底;

存活的服務中可能存在多個版本,但是主分支Master是否存活是服務健康與否的基本標志,常規應用中路由規則如果不匹配,會由Master服務進行兜底;

版本號統一路由

圖片

請求通過攜帶分支號進行統一版本路由是常用的輕量級方案,即如果請求攜帶的是??2.0.0??的分支,則在路由時優先匹配相關版本的服務,不匹配時由Master服務處理即可;

服務定制化路由

圖片

在請求或配置中指定各個服務的路由分支號,也是常見的匹配方案,如上圖在請求時指定服務B由??1.0.0???分支執行,服務C由??3.0.0??分支執行,其余服務在主干分支執行;

路由規則可以看做是對可用服務的匹配篩選,如果篩選出來的服務存在集群部署時,還要去執行相應的負載均衡策略,例如上圖中當服務C的??3.0.0??分支是集群時,路由匹配到該版本后,再通過負載均衡的策略選中其中一個服務處理請求;

三、灰度部署

當負載均衡的策略可以按照定制化開發的規則執行時,那服務的灰度發布就會容易很多,在不影響現有服務的情況下發布新版本,同時將請求按照規則分流,完成對新服務的驗收后,替換掉舊版本即可;

圖片

分布式系統中子服務的拆分非常多,版本開發通常只會涉及其中部分子服務,通過灰度模式將相關服務部署到線上,并且不會影響主干的服務,只有開啟特定的配置才會將請求分流到灰度服務;

流程細節

  • 1、做好路由配置和管理,請求默認在主干服務執行;
  • 2、部署版本涉及的相關服務,灰度層面默認不會處理請求;
  • 3、驗收階段基于配置,將指定規則的請求路由到灰度層;
  • 4、常用規則:攜帶分支號、灰度用戶群、比例分流、IP等;
  • 5、完成灰度服務驗收后,將相關服務標記為主干服務;
  • 6、將舊的主干服務下線后,即本次上線流程完整結束;
  • 7、若發現灰度服務驗收失敗,撤掉灰度層或修改都可以;

灰度發布的模式即依賴于自定義的路由規則,以及服務在負載均衡時權重比例傾斜,這些都可以在配置中心管理,在測試時動態修改即可;

在這種模式下,灰度服務的上線或者下線幾乎是沒有明顯感知的,如果是相對簡單的流程,由測試人員驗收灰度層服務即可,如果是復雜的流程,放開一定比例的用戶流量,流程觀察沒有問題后完成升級;

四、實踐方案

1、流程設計

圖片

在灰度方案落地實踐的過程中,通常客戶端會攜帶路由規則的標識,從而將請求發送到指定服務,在規則無法正常匹配的時候,由主干服務處理,對于一些核心的開關標識在配置中心統一維護;

2、路由標識

標識獲取

通常情況下,路由的標識是在請求頭中攜帶的,這樣比較方便統一管理,常用的傳遞格式如下:

  • 版本號統一路由:routeId:2.0.0,即所有請求優先在??2.0.0??分支執行;
  • 服務定制化路由:serverC:3.0.0,請求服務C時優先在??3.0.0??分支執行;

在微服務的組件中獲取請求頭的方式很多,比如Gateway網關中的路由過濾器,或者服務中的攔截器,都可以獲取請求的相關參數信息,從而執行路由規則;

標識管理

自定義路由規則需要客戶端標識,雖然獲取請求中的標識并不復雜,但是將標識傳遞到路由規則中就涉及到上下文參數管理:

圖片

  • 寫階段:在過濾或攔截中獲取路由標識,寫入上下文容器;
  • 讀階段:路由時從容器中讀取標識,基于配置信息執行規則;

請求從進入網關開始,在服務間通信時會涉及負載均衡的策略,在過濾或攔截器中將標識寫到上下文容器,執行路由規則需要讀取上下文容器,如果標識不存在則默認選擇主干服務執行請求;

3、服務選中

微服務之間通信時,選中一個服務執行請求的邏輯比較復雜,尤其在灰度模式下涉及到對路由規則的改造,即策略指定的服務優先被選中;

圖片

1、從注冊中心查詢相應服務的可用列表;

2、基于路由規則,匹配符合請求標識的服務;

3、對篩選的結果列表執行負載均衡,選中服務;

在整個路由機制中,會涉及到匹配規則自定義改造,從常規的手段來看,將版本的分支號加載到服務的元數據信息中,再結合服務名稱或者IP地址,來實現對服務列表的多維度過濾,可以支撐大部分輕量級灰度策略的實現。

五、參考源碼

應用倉庫:https://gitee.com/cicadasmile/butte-flyer-parent

組件封裝:https://gitee.com/cicadasmile/butte-frame-parent

責任編輯:武曉燕 來源: 知了一笑
相關推薦

2022-07-18 10:29:33

數據分布式系統

2024-05-20 08:08:00

分布式系統緩存C#

2020-09-23 09:52:01

分布式WebSocketMQ

2024-04-08 11:04:03

2024-07-05 08:26:54

2023-02-10 00:04:53

2022-06-13 10:01:36

Apollo攜程框架

2025-03-06 11:30:15

2024-01-10 08:02:03

分布式技術令牌,

2025-03-28 10:27:29

2017-12-20 16:15:30

分布式系統架構

2022-01-17 09:18:28

JMeter分布式壓測

2022-03-21 19:44:30

CitusPostgreSQ執行器

2022-03-07 08:14:27

并發分布式

2018-04-03 09:27:42

分布式架構系統

2023-05-12 11:52:21

緩存場景性能

2021-02-01 09:35:53

關系型數據庫模型

2023-11-29 10:26:52

分布式數據

2022-04-08 08:27:08

分布式鎖系統

2023-02-28 07:01:11

分布式緩存平臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产亚洲一区精品 | 超碰免费在 | 一区精品视频在线观看 | 天天综合国产 | 国产精品视频二区三区 | 欧美一二三四成人免费视频 | 欧美成人精品一区 | 国产精品v | 午夜欧美 | 韩国电影久久 | 一区二区亚洲 | 一区二区免费看 | 精品一级| 欧美日韩不卡在线 | 亚洲一区二区三区免费视频 | 久久男人天堂 | 黄视频免费观看 | 91麻豆精品国产91久久久更新资源速度超快 | 中文字幕电影在线观看 | 伊人99 | www.成人.com| 午夜寂寞福利视频 | 日本精品裸体写真集在线观看 | 国产亚洲精品久久19p | 成人亚洲 | 中文字幕在线观看 | 97国产精品视频人人做人人爱 | 日韩中文字幕一区 | 天堂在线免费视频 | 青青久视频 | 在线a视频 | 久久亚洲一区二区三区四区 | 欧美视频在线看 | 久久久国产一区二区三区 | 日韩av福利在线观看 | 日批免费在线观看 | 国产区精品在线观看 | 欧美啊v在线观看 | 久久久精 | 午夜爱爱毛片xxxx视频免费看 | 免费艹逼视频 |