mse~路由實現某個頁面的灰度功能

张占岭發表於2024-10-31

起因

我有個網站A【藍色服務】,要對網站A進行改版【綠色服務】,其中使用者中心已經改完了,希望當使用者訪問時,如果http請求頭中包含isGroup,並且isGroup=1時,去新的綠色服務,反之就還是去藍色服務。

前提

  • 藍綠服務,域名是同一個,如lind.gray.com
  • 藍綠服務,各個頁面的URL是同一個
  • 使用者測在訪問URL時,它們不清楚將要到哪個環境,藍綠環境是在閘道器路由中轉發的

藍綠部署

藍綠部署(Blue-Green Deployment)是一種軟體釋出策略,旨在減少系統停機時間和風險,同時確保使用者體驗的連續性。以下是關於藍綠部署的一些關鍵點:

藍綠部署的基本概念

環境劃分:

  • 在藍綠部署中,通常會有兩個相同的生產環境:一個是“藍色”環境,另一個是“綠色”環境。
  • “藍色”環境當前正在處理所有的生產流量,而“綠色”環境則用於新版本的部署和測試。

切換流量:

  • 當新的應用版本在“綠色”環境中經過充分測試後,可以透過改變負載均衡器的配置,將流量從“藍色”環境切換到“綠色”環境。
  • 這種切換可以迅速完成,從而最小化使用者感知到的中斷。

回滾機制:

  • 如果在“綠色”環境中發現問題,可以快速將流量切回“藍色”環境,實現無縫回滾,保障系統的穩定性。

MSE上的實踐

一 進行藍色和綠色服務裡,在路由中開啟灰度釋出,配置灰度策略,可在一個綠色服務中配置即可
二 如果希望對某個頁面進行藍綠部署,如/user/center使用者中心實現它,你需要下面的操作

  • 新增新的路徑,域名還是之前的,如lind.gray.com
  • 配置路徑標識:/user/center,藍綠兩個服務都要配置

  • 配置灰度策略,藍色服務,不用配置

  • 綠色服務,需要開啟灰度釋出,並新增策略,如header中包含isGroup=1的值,走綠色新的服務,綠色服務的路由裡,只配置具體要灰度的頁面即可,如果要求全站都灰色,路徑就是/即可

測試

  • 當你訪問lind.gray.com時,直接訪問藍色,老版服務
  • 當你訪問lind.gray.com/user/center時,還是直接訪問藍色,老版服務
  • 當你訪問lind.gray.com/user/center,並且在http請求頭中包含isGroup=1時,會訪問綠色,新版服務的/user/center頁面

相關文章