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

CTO點名要搞個灰度發布系統

開發 架構 開發工具
互聯網產品需要快速迭代開發上線,又要保證質量,保證剛上線的系統,一旦出現問題可以很快控制影響面,就需要設計一套灰度發布系統。

互聯網產品需要快速迭代開發上線,又要保證質量,保證剛上線的系統,一旦出現問題可以很快控制影響面,就需要設計一套灰度發布系統。

[[381862]]

圖片來自 Pexels

 

灰度發布的定義

灰度發布系統的作用,可以根據配置,將用戶的流量導到新上線的系統上,來快速驗證新的功能,而一旦出現問題,也可以馬上的修復,簡單的說,就是一套A/B Test系統。

灰度發布允許帶著 Bug 上線,只要 Bug 不是致命的,當然這個 Bug 是不知道的情況下,如果知道就要很快的改掉。

簡單灰度發布系統的設計

灰度簡單架構如上圖所示,其中的必要組件如下: 

  • 策略的配置平臺,存放灰度的策略
  • 灰度功能的執行程序
  • 注冊中心,注冊的服務攜帶 ip/Port/name/version

有了上面三個組件,才算一個完整的灰度平臺。

灰度的策略

灰度必須要有灰度策略,灰度策略常見的方式有以下幾種:

  • 基于 Request Header 進行流量切分
  • 基于 Cookie 進行流量切分
  • 基于請求參數進行流量切分

舉例:根據請求中攜帶的用戶 uid 進行取模,灰度的范圍是百分之一,那么 uid 取模的范圍就是 100,模是 0 訪問新版服務,模是 1~99 的訪問老版服務。

灰度發布策略分為兩類:

  • 單策略:比如按照用戶的 uid、token、ip 進行取模。
  • 組合策略:多個服務同時灰度,比如我有 A/B/C 三個服務,需要同時對 A 和 C 進行灰度,但是 B 不需要灰度,這個時候就需要一個 tag 字段,具體實現在下文詳述。

灰度發布具體的執行控制

在上面的簡單灰度發布系統架構中我們了解到,灰度發布服務分為上游和下游服務。

上游服務是具體的執行灰度策略的程序,這個服務可以是 Nginx,也可以是微服務架構中的網關層/業務邏輯層,下面我們就來分析一下不同的上游服務,如何落地。

Nginx

如果上游服務是 Nginx,那么就需要 Nginx 通過 Lua 擴展 Nginx 實現灰度策略的配置和轉發,因為 Nginx 本身并不具備灰度策略的執行。

通過 Lua 擴展實現了灰度策略的執行,但是問題又來了,Nginx 本身并不具備接收配置管理平臺的灰度策略,這個時候應該怎么辦呢?

解決方案:本地部署 Agent(需要自己開發),接收服務配置管理平臺下發的灰度策略,更新 Nginx 配置,優雅重啟 Nginx 服務。

網關層/業務邏輯層/數據訪問層

只需要集成配置管理平臺客戶端 SDK,接收服務配置管理平臺下發的灰度策略,在通過集成的 SDK 進行灰度策略的執行即可。

灰度發布復雜場景

下面舉例兩個稍微復雜的灰度發布場景,灰度策略假設都按照 uid 取模灰度百分之一的用戶,看一下如何實現。

場景 1:調用鏈上同時灰度多個服務

功能升級涉及到多個服務變動,網關層和數據訪問層灰度,業務邏輯層不變,這個時候應該如何進行灰度?

解決方案:經過新版本網關層的請求,全部打上 tag T,在業務邏輯層根據 tag T 進行轉發, 標記 Tag T 的請求全部轉發到新版數據訪問層服務上,沒有 tag T 的請求全部轉發到老版數據訪問層上。 

 

場景 2:涉及數據的灰度服務

涉及到數據的灰度服務,一定會使用到數據庫,使用到數據庫就會涉及到你使用數據庫前后的表字段不一致,我老版本是 A/B/C 三個字段,新版本是 A/B/C/D 四個字段。

這時新版的灰度,就不能往老版的數據庫進行修改了,這個時候就需要把數據 copy 一份出來做這個事情了。

數據庫其實并沒有灰度的概念,這個時候我們只能把數據重新拷貝一份出來進行讀和寫。

因為這時你的寫必須是全量的(雙寫),不能說 90% 的數據寫入到老版本,10% 的數據寫入到新版本,因為這個時候你會發現兩個數據庫的數據都不是全量的。

離線全量復制數據的過程中一定會有數據丟失,這個時候就需要業務邏輯層寫一份數據到 MQ 中。

等數據同步完成之后,新版的數據訪問層再將 MQ 的數據寫入到新版本的 DB 中,實現數據的一致性,這個也是引入 MQ 的主要目的。

 

灰度過程中需要對兩個數據庫的數據進行對比,觀察數據是否一致。這樣不管是灰度失敗,放棄新版 DB,還是灰度成功切換到新版 DB,數據都不會產生丟失。

作者:小楊互聯網

編輯:陶家龍

出處:toutiao.com/i6910008843955192323/

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-08-23 08:01:38

微信IM系統

2015-07-30 09:27:04

2015-05-07 14:00:59

Android M谷歌

2022-01-19 18:31:54

前端灰度代碼

2021-12-27 15:01:21

KubernetesLinux命令

2024-01-02 07:37:52

FlaggerKubernetesIstio

2019-05-23 10:55:22

Istio灰度發布ServiceMesh

2024-01-05 00:29:36

全鏈路灰度發布云原生

2023-03-17 16:02:36

2019-01-13 15:35:04

2018-04-10 14:17:09

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

2023-12-08 10:59:49

2014-09-02 17:33:05

魅族黃章MX4

2015-10-22 11:12:09

2017-09-20 16:22:35

谷歌

2020-08-05 08:23:19

架構Java微服務

2021-03-01 08:05:09

慢查詢SQL

2022-04-28 09:22:46

Vue灰度發布代碼

2023-02-20 10:13:00

灰度發布實現

2024-05-17 16:18:45

微服務灰度發布金絲雀發布
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人一区二区三区久久久 | 国产精品久久久久久久久久久久 | 性高朝久久久久久久3小时 av一区二区三区四区 | 成年精品| 国产一区免费 | www亚洲精品 | 欧美另类视频 | 天天操网 | 欧美日韩免费一区二区三区 | 一区二区三区四区电影视频在线观看 | 精品一区二区三区91 | 国产精品a久久久久 | 国产精品1 | 中文字幕国产一区 | 天堂视频中文在线 | 日韩成人 | 亚洲视频三区 | 亚洲精品一区二区在线观看 | 国产黄色大片在线观看 | 日韩不卡在线 | 91在线视频一区 | 精品九九| 91av视频在线免费观看 | 色婷婷亚洲一区二区三区 | 欧美特级黄色 | 国产成人精品一区二区三区四区 | 日日天天| 日韩成人影院 | av免费入口 | 欧美精品一区二区在线观看 | 国产精品久久久久久52avav | 亚洲精品久久久久中文字幕二区 | 欧美日韩国产一区二区 | 日韩中文字幕在线观看 | ririsao久久精品一区 | 国产在线一区二区三区 | 日本不卡视频 | 精品视频一区二区三区 | 欧美一级在线免费 | 超碰操| 在线观看视频你懂得 |