1. 藍綠部署、金絲雀發(fā)布(灰度發(fā)布)、AB測試……

        共 2313字,需瀏覽 5分鐘

         ·

        2021-05-23 10:15

        點擊下方“IT牧場”,選擇“設(shè)為星標(biāo)”

        來源 | https://www.jianshu.com/p/0df88fe4a1e3


        隨著微服務(wù)架構(gòu)的普及,線上服務(wù)越來越多,隨之而來的就是部署越來越頻繁;隨著互聯(lián)網(wǎng)行業(yè)的興旺,產(chǎn)品迭代的頻率也是越來越快,服務(wù)上線速度逐步提升。有上線、有部署,就有風(fēng)險。有風(fēng)險,就對業(yè)務(wù)有影響,然后就有了一系列減少這種風(fēng)險的部署方案:藍綠部署、金絲雀發(fā)布(灰度發(fā)布),也有適應(yīng)產(chǎn)品迭代頻率的AB測試。

        本文主要是簡單解釋下這幾個概念,幫助自己理解,如果有錯誤,請大佬們斧正。

        藍綠部署

        藍綠色部署是一種通過運行兩個相同的稱為 BLUE 和 GREEN 的生產(chǎn)環(huán)境來減少停機時間和降低風(fēng)險的技術(shù)。

        藍綠部署,以顏色命名,簡單的理解就是,線上有兩套集群環(huán)境,在架構(gòu)圖中,一套標(biāo)記成藍色,稱為藍色集群BLUE;一套標(biāo)記為綠色,稱為綠色集群GREEN。通過將流量引入兩個集群,完成系統(tǒng)升級切換。

        img

        blue_green_deployments.png

        步驟一:部署綠色集群,這個時候是初始狀態(tài),藍色集群承擔(dān)全部責(zé)任,接收全部流量,等待被替換。綠色集群剛剛部署,還沒有投入使用,流量為0,等待驗證和上線。

        步驟二:藍色集群流量不變,向綠色集群引入流量。這個過程可以分成幾個階段完成。第一個階段,引入少量非實時流量,僅用于數(shù)據(jù)測試;第二個階段,引入全部實時流量,用于做系統(tǒng)驗證。

        步驟三:切斷向藍色集群引入流量,將全部流量引入綠色集群。這個時候,綠色集群已經(jīng)承擔(dān)全部責(zé)任,接收全部流量。這個過程也可以分階段操作。第一個階段,平衡藍色和綠色集群流量,也就是藍色和綠色集群一同承擔(dān)職責(zé);第二個階段,切斷藍色集群流量,流量全部寫入綠色集群。是否采用分階段操作,完全看升級的功能是否是破壞性的,是否可兼容。

        步驟四:監(jiān)控系統(tǒng)運行,這個過程是必要的。因為沒有人能夠保證測試時100%的覆蓋的,所以新集群可能會出現(xiàn)這樣那樣、或大或小的問題,如果評估需要回滾,就需要將全部流量切換到藍色集群。也完成了版本回滾。

        金絲雀發(fā)布(灰度發(fā)布)

        金絲雀發(fā)布,與藍綠部署不同的是,它不是非黑即白的部署方式,所以又稱為灰度發(fā)布。它能夠緩慢的將修改推廣到一小部分用戶,驗證沒有問題后,再推廣到全部用戶,以降低生產(chǎn)環(huán)境引入新功能帶來的風(fēng)險。

        img

        canarydeployment.png

        步驟一:將流量從待部署節(jié)點移出,更新該節(jié)點服務(wù)到待發(fā)布狀態(tài),將該節(jié)點稱為金絲雀節(jié)點;

        步驟二:根據(jù)不同策略,將流量引入金絲雀節(jié)點。策略可以根據(jù)情況指定,比如隨機樣本策略(隨機引入)、狗糧策略(就是內(nèi)部用戶或員工先嘗鮮)、分區(qū)策略(不同區(qū)域用戶使用不同版本)、用戶特征策略(這種比較復(fù)雜,需要根據(jù)用戶個人資料和特征進行分流,類似于千人千面);

        步驟三:金絲雀節(jié)點驗證通過后,選取更多的節(jié)點稱為金絲雀節(jié)點,重復(fù)步驟一和步驟二,直到所有節(jié)點全部更新

        AB測試

        AB測試和上面兩種發(fā)布方式不是一個范圍的概念,它是為了進行效果驗證的手段,其他兩種是為了實現(xiàn)線上平穩(wěn)發(fā)布的手段,這里把他們放在一起說,是因為這三個概念很容易弄混。

        AB測試是線上同時運行多個不同版本的服務(wù),這些服務(wù)更多的是用戶側(cè)的體驗不同,比如頁面布局、按鈕顏色,交互方式等,通常底層業(yè)務(wù)邏輯還是一樣的,也就是通常說的換湯不換藥。

        img

        abtesting.png

        這個沒有具體的步驟(也可以采用金絲雀部署的步驟,只不過不是全量更新),根據(jù)策略(這個策略可以是金絲雀分布中的策略一致),將一部分流量引入A版本,另外一部分流量引入B版本,也可能出現(xiàn)CDEF版本。然后相關(guān)人員通過分析不同版本的實際效果,選出最優(yōu)解。最優(yōu)解可能是一個版本獲勝,取代另一個版本,也可能是催生出更多的版本,服務(wù)于用戶,還有可能是多個版本在不同區(qū)域同時提供服務(wù)。

        最后

        這里總結(jié)一下:

        名稱特點優(yōu)勢劣勢
        藍綠部署同時存在兩個集群,兩個集群中只有一個集群真正提供服務(wù),另外一個集群測試、驗證或待命服務(wù)文檔,版本回退簡單,適用于各種場景的升級,大版本不兼容升級的或迭代兼容升級浪費硬件資源,需要同時有兩個集群,如果集群比較大,比如有1000個節(jié)點,這種方式幾乎不可用
        金絲雀部署逐點部署,逐步替換線上服務(wù)小步快跑,快速迭代只能適用于兼容迭代的方式,如果是大版本不兼容的場景,就沒辦法使用這種方式了

        AB測試和上面兩個不是一個范疇,不做比較。但是需要說明的一點,AB測試可以采用上面兩種部署方式的手法。

        參考:Using Blue-Green Deployment to Reduce Downtime and Risk

        Blue Green Deployment

        Blue-green Deployments, A/B Testing, and Canary Releases

        Canary Release

        干貨分享

        最近將個人學(xué)習(xí)筆記整理成冊,使用PDF分享。關(guān)注我,回復(fù)如下代碼,即可獲得百度盤地址,無套路領(lǐng)取!

        ?001:《Java并發(fā)與高并發(fā)解決方案》學(xué)習(xí)筆記;?002:《深入JVM內(nèi)核——原理、診斷與優(yōu)化》學(xué)習(xí)筆記;?003:《Java面試寶典》?004:《Docker開源書》?005:《Kubernetes開源書》?006:《DDD速成(領(lǐng)域驅(qū)動設(shè)計速成)》?007:全部?008:加技術(shù)群討論

        關(guān)注我

        喜歡就點個"在看"唄^_^

        瀏覽 48
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 逼逼被操 | 十大尺度做爰未删减电影暗欲 | 91无码一区 | 福利二区 | 99天堂网 |