日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
CTO點(diǎn)名要搞個(gè)灰度發(fā)布系統(tǒng)

互聯(lián)網(wǎng)產(chǎn)品需要快速迭代開(kāi)發(fā)上線,又要保證質(zhì)量,保證剛上線的系統(tǒng),一旦出現(xiàn)問(wèn)題可以很快控制影響面,就需要設(shè)計(jì)一套灰度發(fā)布系統(tǒng)。

我們提供的服務(wù)有:成都網(wǎng)站制作、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、贛榆ssl等。為超過(guò)千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的贛榆網(wǎng)站制作公司

灰度發(fā)布的定義

灰度發(fā)布系統(tǒng)的作用,可以根據(jù)配置,將用戶的流量導(dǎo)到新上線的系統(tǒng)上,來(lái)快速驗(yàn)證新的功能,而一旦出現(xiàn)問(wèn)題,也可以馬上的修復(fù),簡(jiǎn)單的說(shuō),就是一套A/B Test系統(tǒng)。

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

簡(jiǎn)單灰度發(fā)布系統(tǒng)的設(shè)計(jì)

灰度簡(jiǎn)單架構(gòu)如上圖所示,其中的必要組件如下:

  • 策略的配置平臺(tái),存放灰度的策略
  • 灰度功能的執(zhí)行程序
  • 注冊(cè)中心,注冊(cè)的服務(wù)攜帶 ip/Port/name/version

有了上面三個(gè)組件,才算一個(gè)完整的灰度平臺(tái)。

灰度的策略

灰度必須要有灰度策略,灰度策略常見(jiàn)的方式有以下幾種:

  • 基于 Request Header 進(jìn)行流量切分
  • 基于 Cookie 進(jìn)行流量切分
  • 基于請(qǐng)求參數(shù)進(jìn)行流量切分

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

灰度發(fā)布策略分為兩類:

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

灰度發(fā)布具體的執(zhí)行控制

在上面的簡(jiǎn)單灰度發(fā)布系統(tǒng)架構(gòu)中我們了解到,灰度發(fā)布服務(wù)分為上游和下游服務(wù)。

上游服務(wù)是具體的執(zhí)行灰度策略的程序,這個(gè)服務(wù)可以是 Nginx,也可以是微服務(wù)架構(gòu)中的網(wǎng)關(guān)層/業(yè)務(wù)邏輯層,下面我們就來(lái)分析一下不同的上游服務(wù),如何落地。

Nginx

如果上游服務(wù)是 Nginx,那么就需要 Nginx 通過(guò) Lua 擴(kuò)展 Nginx 實(shí)現(xiàn)灰度策略的配置和轉(zhuǎn)發(fā),因?yàn)?Nginx 本身并不具備灰度策略的執(zhí)行。

通過(guò) Lua 擴(kuò)展實(shí)現(xiàn)了灰度策略的執(zhí)行,但是問(wèn)題又來(lái)了,Nginx 本身并不具備接收配置管理平臺(tái)的灰度策略,這個(gè)時(shí)候應(yīng)該怎么辦呢?

解決方案:本地部署 Agent(需要自己開(kāi)發(fā)),接收服務(wù)配置管理平臺(tái)下發(fā)的灰度策略,更新 Nginx 配置,優(yōu)雅重啟 Nginx 服務(wù)。

網(wǎng)關(guān)層/業(yè)務(wù)邏輯層/數(shù)據(jù)訪問(wèn)層

只需要集成配置管理平臺(tái)客戶端 SDK,接收服務(wù)配置管理平臺(tái)下發(fā)的灰度策略,在通過(guò)集成的 SDK 進(jìn)行灰度策略的執(zhí)行即可。

灰度發(fā)布復(fù)雜場(chǎng)景

下面舉例兩個(gè)稍微復(fù)雜的灰度發(fā)布場(chǎng)景,灰度策略假設(shè)都按照 uid 取模灰度百分之一的用戶,看一下如何實(shí)現(xiàn)。

場(chǎng)景 1:調(diào)用鏈上同時(shí)灰度多個(gè)服務(wù)

功能升級(jí)涉及到多個(gè)服務(wù)變動(dòng),網(wǎng)關(guān)層和數(shù)據(jù)訪問(wèn)層灰度,業(yè)務(wù)邏輯層不變,這個(gè)時(shí)候應(yīng)該如何進(jìn)行灰度?

解決方案:經(jīng)過(guò)新版本網(wǎng)關(guān)層的請(qǐng)求,全部打上 tag T,在業(yè)務(wù)邏輯層根據(jù) tag T 進(jìn)行轉(zhuǎn)發(fā), 標(biāo)記 Tag T 的請(qǐng)求全部轉(zhuǎn)發(fā)到新版數(shù)據(jù)訪問(wèn)層服務(wù)上,沒(méi)有 tag T 的請(qǐng)求全部轉(zhuǎn)發(fā)到老版數(shù)據(jù)訪問(wèn)層上。

場(chǎng)景 2:涉及數(shù)據(jù)的灰度服務(wù)

涉及到數(shù)據(jù)的灰度服務(wù),一定會(huì)使用到數(shù)據(jù)庫(kù),使用到數(shù)據(jù)庫(kù)就會(huì)涉及到你使用數(shù)據(jù)庫(kù)前后的表字段不一致,我老版本是 A/B/C 三個(gè)字段,新版本是 A/B/C/D 四個(gè)字段。

這時(shí)新版的灰度,就不能往老版的數(shù)據(jù)庫(kù)進(jìn)行修改了,這個(gè)時(shí)候就需要把數(shù)據(jù) copy 一份出來(lái)做這個(gè)事情了。

數(shù)據(jù)庫(kù)其實(shí)并沒(méi)有灰度的概念,這個(gè)時(shí)候我們只能把數(shù)據(jù)重新拷貝一份出來(lái)進(jìn)行讀和寫(xiě)。

因?yàn)檫@時(shí)你的寫(xiě)必須是全量的(雙寫(xiě)),不能說(shuō) 90% 的數(shù)據(jù)寫(xiě)入到老版本,10% 的數(shù)據(jù)寫(xiě)入到新版本,因?yàn)檫@個(gè)時(shí)候你會(huì)發(fā)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)都不是全量的。

離線全量復(fù)制數(shù)據(jù)的過(guò)程中一定會(huì)有數(shù)據(jù)丟失,這個(gè)時(shí)候就需要業(yè)務(wù)邏輯層寫(xiě)一份數(shù)據(jù)到 MQ 中。

等數(shù)據(jù)同步完成之后,新版的數(shù)據(jù)訪問(wèn)層再將 MQ 的數(shù)據(jù)寫(xiě)入到新版本的 DB 中,實(shí)現(xiàn)數(shù)據(jù)的一致性,這個(gè)也是引入 MQ 的主要目的。

灰度過(guò)程中需要對(duì)兩個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行對(duì)比,觀察數(shù)據(jù)是否一致。這樣不管是灰度失敗,放棄新版 DB,還是灰度成功切換到新版 DB,數(shù)據(jù)都不會(huì)產(chǎn)生丟失。

作者:小楊互聯(lián)網(wǎng)

編輯:陶家龍

出處:toutiao.com/i6910008843955192323/


本文題目:CTO點(diǎn)名要搞個(gè)灰度發(fā)布系統(tǒng)
標(biāo)題鏈接:http://m.5511xx.com/article/ccedpoo.html