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

終于有人把灰度發布架構設計講明白了

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

圖片

灰度發布的定義

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

灰度發布系統的作用,可以根據配置,將用戶的流量導到新上線的系統上,來快速驗證新的功能,而一旦出現問題,也可以馬上的修復,簡單的說,就是一套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,數據都不會產生丟失。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2022-04-22 11:26:55

數據管理架構

2022-03-27 20:32:28

Knative容器事件模型

2021-10-09 00:02:04

DevOps敏捷開發

2021-06-13 12:03:46

SaaS軟件即服務

2025-05-29 01:00:00

數據架構大數據數據湖

2021-10-17 20:38:30

微服務內存組件

2021-12-03 18:25:56

數據指標本質

2021-03-25 11:24:25

爬蟲技術開發

2020-11-03 07:04:39

云計算公有云私有云

2022-04-27 18:25:02

數據采集維度

2021-10-12 18:31:40

流量運營前端

2021-06-29 11:21:41

數據安全網絡安全黑客

2020-11-30 08:34:44

大數據數據分析技術

2022-07-31 20:29:28

日志系統

2022-01-05 18:27:44

數據挖掘工具

2021-03-03 21:31:24

量化投資利潤

2021-02-14 00:21:37

區塊鏈數字貨幣金融

2022-04-12 18:29:41

元數據系統架構

2021-12-07 18:24:26

數據安全

2022-05-01 22:09:27

數據模型大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品国产一区二区电影 | 国产成在线观看免费视频 | 日本中文在线视频 | 插插宗合网 | 久久精品国产亚洲 | av黄色国产 | 亚洲成人99 | 亚洲一区久久 | 不用播放器看的av | 天天视频一区二区三区 | 精品久久久久久久久久久久久久久久久 | 日韩在线视频免费观看 | 精品久久国产 | 97视频在线免费 | 欧美区在线 | 国产 亚洲 网红 主播 | 国产精品免费在线 | 欧美一区二区三区精品 | 操久久| 在线国产一区 | 干干干操操操 | 99视频在线免费观看 | 久热精品免费 | 亚洲电影在线播放 | 欧美日韩国产一区二区三区 | 成人久久 | 天天摸天天看 | 久久久久久久一区二区 | 91原创视频在线观看 | 日韩在线不卡视频 | 亚洲成av人影片在线观看 | 91精品国产综合久久福利软件 | 久久精品一区二 | 国产 欧美 日韩 一区 | 中文字幕精品一区久久久久 | 男人天堂免费在线 | av电影手机版 | 精品欧美一区二区精品久久 | 91性高湖久久久久久久久_久久99 | 五月天国产在线 | 亚洲九色 |