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

藍綠發布實踐回顧

開發 前端
藍綠發布通過摘流、變更、再引流,因在無流量的情況下發布,相對比較安全。但是基于公司實際情況,有些場景的流量是無法摘除的。

0緣起

隨著藍綠發布項目落地進入試運行,也對藍綠發布項目做個簡要回顧。

早在2022年初的時候效能、交易和中間件的同學就如何提高發布效率做過討論,藍綠發布當時也被提出。由于彼時有更重要的事情去落地,藍綠發布也被擱置未能成行。

隨著染色環境項目的落地,推進接入工作的基本完成。測試開發環境存在的眾多問題(多套環境、運維問題、環境沖突、溝通問題)基本得到根治。

測試環境得到根治的同時,生產環境自然就成為接下來的重點。大版本發布時長達7個小時,的確是大家的痛點,我們也希望從根本上提高發布效率。本文主要內容有:

  • 應用發布訴求
  • 發布方案對比
  • 藍綠發布流程
  • 藍綠流量調度
  • 組件能力支持

1應用發布訴求

微服務應用發布時有以下訴求:

  • 上下游依賴:本服務的發布依賴其他服務,要別的服務先發布才行
  • 小流量灰度:發布時先小流量灰度驗證、避免問題被放大
  • 按批次發布:支持節點批次劃分、按批次發布

其中上下游依賴問題最為突出,為解決依賴問題需提前填寫發布計劃,將應用組織成梯隊來規避上下游依賴問題。

  • 填寫發布計劃較為繁瑣:每次發布需要去組織填寫、比較繁瑣
  • 必須按照梯隊順序發布:一個梯隊發完才能發布另一個梯隊、需要互相等待
  • 應用回滾穩定性需提升:一個應用驗證有問題,需要依賴上游聯動回滾,回滾過程中有生產流量、穩定性存在優化空間

由此可見,應用發布的痛點聚焦到了破除上下游上,自然解決方案也以此為中心。

2發布方案對比

發布方式

基本原理

常見實現

灰度發布

小流量驗證

方式一:金絲雀發布,發布時先拉入一臺驗證,正常后發布剩余節點  
方式二:流量染色灰度,通過對請求流量染色選擇到特定的節點實現灰度  
方式三:獨立灰度環境,上線前先在該環境驗證(例如:小得物環境)

滾動發布

分批次發布

在灰度驗證的基礎上,通過發布系統選擇發布批次  
方式一:按節點比例分批發布  
方式二:按節點數量分批發布

藍綠發布

流量調度實現

線上同時藍綠兩個應用組提供服務  
步驟一:新版本發布時先將流量從藍色集群A調度到綠色集群B,綠色集群B獨立承擔流量
步驟二:在藍色集群A發布新版本,從小到大逐步引流到藍色集群  
步驟三:藍色驗證正常均衡藍綠兩套流量,異常流量調度走即可

紅黑發布

彈性擴縮容、流量調度

線上只運行一個紅色集群  
步驟一:發布時先擴容黑色集群,該集群發布新版本  
步驟二:在黑色集群發布新版本,按比例引流驗證  
步驟三:一切正常后,流量調度到黑色集群,紅色集群下線

熟悉中間件運維的同學怎么運維才是安全的呢?先摘流、運維變更、再逐步引流。

這種方式應用到應用發布系統,即為藍綠發布。

在生產環境發布時,我們通常有兩個版本,線上運行的版本、待發布的版本。

也就是在生產環境區分流量只需要兩個顏色即可,藍綠發布通過兩個染色流量來區分線上運行版本和待發布版本。

此外,希望在大版本發布與日常迭代中都能使用藍綠發布來提效,作為核心應用的首選發布方式。

3藍綠發布流程?

在發布系統中集成藍綠發布,與普通發布有何區別,藍綠發布流程是怎么樣的呢?

3.1   藍綠架構圖示

線上的資源容量需能夠容納業務增量的2倍以上,將線上的運行的服務節點資源一分為二,分成藍色環境和綠色環境。

圖片

3.2    藍綠發布流程

為了避免混淆將藍綠環境固定,先部署待發布新版本的環境固定為「藍色環境」,后部署待發布新版本的環境固定為「綠色環境」,應用發布先發「藍色環境」,后發「綠色環境」。

圖片

發布流程梳理如下:

  • 將藍色集群摘流,此時流量被染綠進入綠色集群
  • 系統發布時先經過「藍色環境」,后發布「綠色環境」
  • 應用上下游服務在「藍色環境」集中完成部署
  • 引入1%流量藍色流量驗證
  • 「藍色環境」上下游服務驗證「不符合預期」,流量切換到綠色環境
  • 「藍色環境」完成驗證「符合預期」,全部流量染成藍色,流量調度到了藍色環境
  • 此時綠色環境已無流量,新版本在綠色環境集中完成部署
  • 通過遞進式引流到綠色環境【1%~50%】
  • 最后呈現的流量分布,藍綠流量各50%

縱觀整個發布流程,需要眾多部門和組件的聯動配合才能完成,下到容器、上到網關,中間貫穿眾多核心中間件。

4藍綠流量調度?

在設計流量調度時分為全局流量調度與局部流量調度,分別應對不同的發布場景。

全局流量調度(單通道發布):所有藍綠環境的應用都參與流量調度,適用一次發布上百個應用場景、上下游關系難以梳理。

局部流量調度(多通道發布):適用于已知應用依賴發布、日常迭代。

在已知應用依賴的情況下,通過局部流量調度即可滿足需求。

4.1   全局流量調度

上面提到「全局流量單通道」在藍綠環境的服務均會參與調度,流量調度變更涉及全部在藍綠環境的應用,下面以流量全部調度藍色環境為例觀測各個組件的行為。

圖片

伴隨著綠色環境被摘流,流量全部在藍色環境運行。

  • RPC選擇本環境對應節點、并提供兜底選擇策略
  • 綠色環境應用消息組被下線摘除消費流量、同時在藍色環境喚醒綠色消費組接管流量
  • 配置中心應用只訪問對應藍綠環境的配置集
  • 分布式調度此時只調度到藍色環境

4.2   局部流量調度

「局部流量多通道」的流量調度比例,由各通道進行自行管控。如下圖所示:

  • 全局流量單通道:藍綠切流比例 50%:50%
  • 局部流量多通道1 :藍綠切流比例 5%:95%
  • 局部流量多通道2 :藍綠切流比例 0%:100%

  • 局部流量多通道3 :藍綠切流比例 70%:30%
  • 圖片

    需要注意的是

    • 一個應用只允許在一個發布通道發布,避免流量沖突和干擾
    • 當「全局流量單通道」發布與「局部流量多通道」同時發布時
    • 以「局部流量多通道」比例為準
    • 「局部流量多通道」發布結束后,會被「全局流量單通道」流量比例接管

    4.3   調度實現原理

    ?

    無論是「全局流量單通道」調度還是「局部流量多通道」調度,實現原理都是一樣的,下面以RPC調用為例說明,如下圖所示。

    圖片

    工作原理簡述如下:

    • @1 由發布系統即將【通道標識、包含的應用列表、切流比例】寫入元數據中心
    • @2 「局部流量多通道」中的應用收到藍綠比例。例如:圖示中應用A收到自身所屬通道的藍綠流量比例
    • @3 「局部流量多通道」中的應用將自身的藍綠比例寫入注冊中心。例如:應用A將自身藍綠流量比例寫入注冊中心
    • @4 調用應用A的【所有上游應用】通過注冊中心均收到應該調用A的藍綠流量比例。例如:應用B、應用C、應用D均收到應該調用應用A的藍綠比例
    • @5 上游應用按流量比例向下游服務發起調用

    從流量調度和實現原理來看,流量的調度會與RPC、消費組、分布式調度、發布系統、配置中心、注冊中心一起聯動。需要把存在的流量出口(例如:網關、消息、分布式調度等)流量管控起來。

    5組件能力支持

    上文中提到流量的調度涉及到眾多組件聯動與協同,那各個組件需要提供哪些能力呢?下面介紹下這些組件需提供的能力。

    5.1   容器邏輯分組

    藍綠發布離不開容器的邏輯分組,應用使用藍綠發布之前,需要將應用的機器實例分布到藍綠環境中去。容器需要具備的能力如下:

    • 提供應用藍綠邏輯分組
    • 藍綠標識植入環境變量
    • 應用分組發布系統可見

    如下圖所示,應用通過容器分組,分布到藍綠集群。

    圖片

    5.2   發布系統支持

    發布系統是整個藍綠發布的入口,用戶直接感受的系統。對下與容器交互、對上與元數據中心交互。

    • 提供藍綠發布多通道能力,將本次發布關聯應用拉入同一發布通道
    • 提供藍綠發布流水線、流量調操作
    • 根據容器平臺提供的邏輯分組接口、指定藍綠集群發布
    • 將通道信息、應用列表、流量調度信息寫入元數據中心,供中間件感知

    如下圖所示,將整個藍綠發布形成流水線。

    圖片

    5.3   統一框架支持

    統一框架包含流量調度SDK、與注冊中心和配置中心交互,聯動整個RPC、Feign/HTTP流量調度。

    • 優先根據藍綠標,選擇本環境節點調用
    • 根據權重路由策略選擇下游節點
    • 提供兜底策略,避免無節點可選

    節點選擇示意圖如下:

    圖片

    如下圖所示,框架會將藍綠環境信息與權重在注冊中心注冊。

    圖片

    5.4   消息組件支持

    消息組件根據流量調度SDK的回調,需要將消費流量摘除和激活。

    圖片

    邏輯實現約定如下:

    • 藍綠環境各使用三個消費組 melon-consumer、BLUE-melon-consumer、GREEN-melon-consumer
    • 消費組melon-consumer用于消費無(藍綠)標識的流量,藍綠標識會在每條消息屬性中存儲
    • 消費組__BLUE-melon-consumer用于消費「藍色」標識流量
    • 消費組__GREEN-melon-consumer用于消費「綠色」標識流量

    藍綠兩個環境均有流量:

    • 綠色環境melon-consumer 、_GREEN-melon-consumer參與消費;BLUE-melon-consumer下線不參與消費
    • 藍色環境melon-consumer 、_BLUE-melon-consumer參與消費,GREEN-melon-consumer下線不參與消費

    只有綠色環境有流量時:

    • 綠色環境melon-consumer、_GREEN-melon-consumer參與消費,BLUE-melon-consumer被動態喚醒參與消費,未被消費完的藍色流量被接管
    • 藍色環境GREEN-melon-consumer、BLUE-melon-consumer、melon-consumer均被動態下線,不參與消費

    只有藍色環境有流量時:

    • 綠色環境_GREEN-melon-consumer、BLUE-melon-consumer、melon-consumer均被動態下線,不參與消費
    • 藍色環境_GREEN-melon-consumer、BLUE-melon-consumer、melon-consumer均參與消費,其中__GREEN-melon-consumer被動態喚醒,接管未被消費的綠色流量

    如下圖所示,藍綠消費組消費各自對應的消息:

    圖片

    此外,DTS等組件同步的消息會被「無前綴標記的消費組(例如:melon-consumer)」接管,能夠在100%流量調度時摘除消費流量。

    5.5   配置中心支持

    配置中心提供能的能力,主要藍綠環境的節點選擇與其對應的配置集,涉及到SDK和配置中心集群的改動。

    • 配置中心提供藍色配置集
    • 藍色環境應用選擇藍色版本配置集
    • 綠色環境應用選擇綠色版本配置集
    • 提供兜底策略、無藍綠版本時選擇主版本配置集

    如下圖所示,配置中心提供藍綠不同的版本的配置集。

    圖片

    5.6   網關調用支持

    • 讀取注冊中心節點流量調度比例
    • 提供根據流量比例選擇下游節點的策略,例如:通過節點權重加權計算

    如下圖所示,流量全部切換到藍色集群后,網關向下游分發的流量染藍。

    圖片

    5.7   分布式調度支持

    • 通過命名空間區分藍綠環境調度
    • 一次調度只在一個環境進行,避免兩個環境同時發生調度,對業務影響
    • 支持按照調度中心百分比(100%切流時)執行調度
    • 支持輸入藍綠環境,手動執行到特定環境

    如下圖所示,在調度時選擇對應藍綠環境的節點。

    圖片

    5.8    藍綠監控看板

    藍綠發布進行流量調度時,需要有一個可觀測面板觀察HTTP、DUBBO、MQ等的流量比例以及是否被摘流。

    如下圖看板所示HTTP流量,藍色流量占比10%,綠色流量占比90%。

    圖片

    6后記

    藍綠發布通過摘流、變更、再引流,因在無流量的情況下發布,相對比較安全。但是基于公司實際情況,有些場景的流量是無法摘除的。

    • 未通過網關進入服務流量:例如:通過域名SLB進入服務、通過Ingress進入服務的流量無法摘除
    • 消費Kafka的流量無法摘除:由于應用使用的原生kafka客戶端并全面鋪開、無法對切入提供支持
    • 未使用統一框架/注冊中心:未使用統一框架和Sylas注冊中心的java應用、以及非Java類應用當前不支持藍綠發布

    此外,還有一些注意事項在使用藍綠發布時需警惕。

    • 消費消息需冪等:使用消息中間件必須做冪等,這是基本要求,在消費組啟停管控中可能產生重復消息
    • 消費組線程數量:由于會有三個消費組、消費線程也會增加兩倍,有業務影響時需調低線程數
    • 需要好流量評估:藍綠發布需一半節點承接線上流量、在應用升級藍綠集群時做好確認
    • 升級到特定版本:使用藍綠發布需要應用升級到框架指定版本
    • Feign/HTTP流量:針對使用框架Feign的HTTP流量,需上下游應用全部升級后方可使用
    • 使用Dubbo流量:使用框架Dubbo的服務只需要自身服務升級版本即可、無需上下游升級?
    責任編輯:武曉燕 來源: 得物技術
    相關推薦

    2021-12-27 15:01:21

    KubernetesLinux命令

    2023-06-29 08:00:40

    藍綠部署策略Docker

    2018-04-10 14:17:09

    藍綠發布滾動發布灰度發布

    2021-07-13 06:35:11

    Argo Rollou GitOpsKubernetes

    2023-09-13 18:59:40

    SRE視角藍綠發布

    2009-06-25 13:03:14

    Eclipse年度版

    2023-11-07 07:07:15

    藍綠部署G行

    2023-10-08 07:34:04

    2009-04-03 09:13:17

    Eclipse插件EclipseEC2

    2023-10-23 16:34:37

    Elasticsea深度學習

    2013-06-03 09:14:24

    回顧

    2013-04-08 09:27:20

    新聞回顧

    2013-07-01 09:41:24

    2012-12-31 09:19:42

    Linux運維趨勢回顧

    2013-11-28 09:20:05

    2013-10-18 09:25:56

    Windows 8.1Windows

    2011-09-13 09:08:53

    新聞回顧

    2009-01-31 22:27:25

    2014-09-10 11:44:43

    點贊
    收藏

    51CTO技術棧公眾號

    主站蜘蛛池模板: 精品国产乱码一区二区三区a | 久草热在线 | 欧美日韩在线一区二区 | 欧美激情综合色综合啪啪五月 | 亚洲欧美另类在线 | 九九综合 | 久久精品91久久久久久再现 | 国产精品久久久久久久久久妞妞 | 伊人春色在线观看 | 日韩三级电影一区二区 | 精品一区二区三区在线观看国产 | 久久爱黑人激情av摘花 | 精品蜜桃一区二区三区 | 免费av观看 | 精品久久99 | 中国黄色在线视频 | 男女视频在线观看网站 | 在线第一页| 夜夜摸夜夜操 | 国产精品国产三级国产aⅴ中文 | 亚洲精品在线观看网站 | 亚洲成人久久久 | 午夜精品视频在线观看 | 一级免费毛片 | 精品自拍视频 | 久久久夜夜夜 | 亚洲黄色一级 | 一区二区三区观看视频 | 国产精品一区在线观看 | 天天爱天天操 | 81精品国产乱码久久久久久 | 91国内精精品久久久久久婷婷 | 久草网站 | 狠狠操操| 天天干天天色 | 男女羞羞免费视频 | 久久婷婷国产香蕉 | 国产免费va | 日韩国产欧美在线观看 | 欧美日韩国产三级 | 一区二区三区视频免费观看 |