天天看點

灰階釋出架構Discovery介紹

概述

灰階釋出(又名金絲雀釋出)是指在黑與白之間,能夠平滑過渡的一種釋出方式。

  1. 可以進行A/B testing,即讓一部分使用者繼續用産品特性A,一部分使用者開始用産品特性B,如果使用者對B沒有什麼反對意見,那麼逐漸擴大範圍,把所有使用者都遷移到B上面來。
  2. 降低産品更新所影響的使用者範圍

在前幾篇的章節寫了spring-cloud-gray的灰階架構介紹,但是為了做一下對比,我們對Discovery有進行了詳細的調研,git位址:https://github.com/Nepxion/Discovery,

此架構對Spring Cloud & Spring Cloud Alibaba,Discovery服務注冊發現、Ribbon負載均衡、Feign和 RestTemplate調用、Spring Cloud Gateway和Zuul過濾等元件進行了全方位增強的開源解決方案,更貼近企業級需求,更具有企業級的插件引入、開箱即用特征。

原理圖

灰階釋出架構Discovery介紹

因為他是通過配置中心下發灰階配置,是以不需要額外引入控制台,隻需要在應用的業務配置中增加灰階配置即可。

概念說明

藍綠釋出

藍綠釋出 Blue-Green Deployment

  1. 概念
    1. 不停機舊版本,部署新版本,通過使用者标記将流量在新版本和老版本切換,屬無損釋出
  2. 優點
    1. 新版本更新和老版本復原迅速。使用者可以靈活控制流量走向
  3. 缺點
    1. 成本較高,需要部署兩套環境(藍/綠)。新版本出現問題,切換不及時,會造成部分故障
灰階釋出架構Discovery介紹

灰階釋出

灰階釋出 Gray Release(又名金絲雀釋出 Canary Release)

  1. 概念
    1. 不停機舊版本,部署新版本,低比例流量(例如:5%)切換到新版本,高比例流量(例如:95%)走舊版本,通過監控觀察無問題, 逐漸擴大範圍,最終把所有流量都遷移到新版本上,下線舊版本。屬無損釋出
  2. 優點
  3. 靈活簡單,不需要使用者标記驅動。安全性高,新版本如果出現問題,隻會發生在低比例的流量上
  4. 缺點
  5. 流量配比遞增的配置修改,帶來額外的操作成本。使用者覆寫狹窄,低比例流量未必能發現所有問題
灰階釋出架構Discovery介紹

滾動釋出

  1. 概念
    1. 每次隻更新一個或多個服務,更新完成監控觀察,不斷執行這個過程,直到叢集中的全部舊版本更新到新版本。停止舊版本的過程 中,無法精确計算舊版本是否已經完成它正在執行的工作,需要靠業務自身去判斷。屬有損釋出
  2. 優點
    1. 出現問題影響範圍很小,隻會發生在若幹台正在滾動釋出的服務上
  3. 缺點
    1. 釋出和復原需要較長的時間周期。按批次停止舊版本,啟動新版本,由于舊版本不保留,一旦全部更新完畢後才發現問題,則無法快速復原,必須重新降級部署
灰階釋出架構Discovery介紹
  1. 實施圖

    1. 全鍊路域網關并行藍綠灰階釋出

使用場景,圖中文字描述很清楚

灰階釋出架構Discovery介紹
  1. 全鍊路非域網關并行藍綠灰階釋出

使用場景,圖中文字描述很清楚

灰階釋出架構Discovery介紹
  1. 全鍊路全局訂閱下并行藍綠灰階釋出

使用場景,圖中文字描述很清楚

灰階釋出架構Discovery介紹
  1. 性能測試報告

    1. 準備兩台機器部署Spring Cloud應用
    2. 準備一台機器部署網關(Spring Cloud或者Zuul)
    3. 準備一台機器部署壓測工具
    服務 配置 數目
    Spring cloud gateway 16c 32G 1
    Zuul 1.x 16c 32G 1
    Service 4c 8G 2
    1. 優化方式
    • Spring Cloud Gateway,不需要優化
    • Zuul 1.x,優化如下:
    zuul.host.max-per-route-connections=1000 
    
    zuul.host.max-total-connections=1000 
    
    zuul.semaphore.max-semaphores=5000
               
    1. 基于WRK極限壓測,報告如下
灰階釋出架構Discovery介紹

壓測報告可見對應用資源效果基本在0.3%到0.5%之間,可以忽略不計。

官方文檔寫的非常詳細讀者可以參考官方文檔。

繼續閱讀