目錄
一映胁、藍綠發(fā)布
二、灰度發(fā)布
三矿辽、滾動發(fā)布
四渗钉、A/B測試
為什么要發(fā)布?
(1)新項目上線,老項目版本迭代也需要上線,上線意味著重新部署
(2)發(fā)布也可稱為部署,部署意味著修改,修改就有風險,所以誕生了很多部署發(fā)布的技術(shù)
一、藍綠發(fā)布
image-20211205085257900-1638665900437.png
#1.藍綠發(fā)布定義
(1)一共有兩套系統(tǒng)
一套是正在提供服務(wù)系統(tǒng)(也就是上面說的舊版)诫硕,標記為“綠色”
另一套是"準備發(fā)布"的系統(tǒng)坦辟,標記為“藍色”。
(2)藍色系統(tǒng)作用:發(fā)布前測試, 測試中發(fā)現(xiàn)任何問題直接修改,不干擾用戶正常使用,經(jīng)測試穩(wěn)定后,直接將用戶切換到藍色系統(tǒng),同時兩套系統(tǒng)并存,若出現(xiàn)問題,直接切回綠色系統(tǒng)
(3)回收空間:確認藍色系統(tǒng)穩(wěn)定對外服務(wù)后,藍色系統(tǒng)成為新的綠色系統(tǒng),原綠色系統(tǒng)可以銷毀將資源回收,用于部署一個藍色系統(tǒng)
#2.優(yōu)點
(1)反應(yīng)快:減少發(fā)布時的中斷時間,能夠快熟的撤回發(fā)布
#3.缺點和注意事項
(1)切換的兼容未完成業(yè)務(wù):當你切換到"藍色"系統(tǒng)時,需要妥當?shù)奶幚砦赐瓿傻臉I(yè)務(wù)和新業(yè)務(wù),如果你的DB后端無法處理,會是一個麻煩的問題
(2)微服務(wù)和傳統(tǒng)MVC:可能要同時處理"微服務(wù)架構(gòu)應(yīng)用"和"傳統(tǒng)應(yīng)用"的情況
(3)非隔離的基礎(chǔ)架構(gòu):VM/Docker上部署藍綠系統(tǒng),藍色環(huán)境和綠色環(huán)境有被摧毀的風險
(4)無耦合, 不干擾:兩套系統(tǒng)沒有耦合才能100%保證不干擾
二章办、灰度發(fā)布
image-20211205085355023.png
#1.灰度定義
(1)灰度發(fā)布:也叫做金絲雀發(fā)布,在黑與白之間,能夠平滑過渡的一種發(fā)布方式
(2)AB測試:一種灰度發(fā)布,讓一部分用戶繼續(xù)用A,一部分用戶開始用B,如果用戶對B沒有反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面,灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定
(3)服務(wù)器的"流量切分":集群有10臺服務(wù)器,給最初更新的2臺服務(wù)器設(shè)置較低的權(quán)重,然后提高權(quán)重,增強請求量的比例,就是一種平滑過渡的思路,這個控制叫做"流量切分"
#2.過程
(1)準備好部署各個階段的構(gòu)件, 構(gòu)件工具,測試腳本,配置文件,清單(MQ,DB...)
(2)從負載均衡中移除"金絲雀"服務(wù)器 --> 部署金絲雀服務(wù)器測試
(3)測試成功 --> 將"金絲雀"重新添加到負載均衡列表
(4)如果"金絲雀"在線測試成功(baking) --> 升級剩余的其他服務(wù)器(否則就回滾)
三锉走、滾動發(fā)布
image-20211205085309887.png
#1.定義
(1)滾動發(fā)布:拉出一個/幾個服務(wù)器停止服務(wù)執(zhí)行更新,并重新將被更新的服務(wù)器投入使用,周而復始,直到集群中的所有實例都更新成新的版本
(2)發(fā)布流程:相比藍綠系統(tǒng)需要一套完備的集群機器不同,滾動發(fā)布只需要一臺/幾臺機器,只需要將部分功能部署在這臺機器上然后去代替正在運行的機器,將更新后的功能部署在Server1然后去替換Server,Server空出來后又可以繼續(xù)部署Server2的新版本,周而復始,直到替換完所有的服務(wù)器
#2.優(yōu)點
(1)節(jié)約資源:相比藍綠系統(tǒng),他不需要2倍集群的實例數(shù),可以部分部署,每次取出集群20%進行升級
#3.缺點
(1)回滾困難:我們需要更新100個實例滨彻,每次更新10個實例,當滾動發(fā)布到第80個實例時,發(fā)現(xiàn)了問題挪蹭,需要回滾亭饵,這個回滾卻是一個痛苦,并且漫長的過程梁厉。
(2)實時性不足:因為是逐步更新,那么在上線時就可能出現(xiàn)短暫的新老版本不一致的情況,如果對線上要求較高的場景,那么久需要做好兼容的問題
四辜羊、A/B測試
image-20211205085231872.png
#1.定義
(1)A/B測試:關(guān)注的是不同版本服務(wù)的實際效果,譬如轉(zhuǎn)化率,訂單情況
(2)A/B測試和藍綠發(fā)布、金絲雀和滾動發(fā)布比較
--藍綠發(fā)布词顾、金絲雀和滾動發(fā)布:是發(fā)布策略八秃,目標是確保新上線的系統(tǒng)穩(wěn)定,關(guān)注的是新系統(tǒng)的BUG计技、隱患喜德。
--A/B測試:效果測試,同一時間有多個版本service對外服務(wù),這些服務(wù)都進行足夠測試,達到了[上線]標準,有差異但沒有新舊之分
注意: 上線時可能采用了藍綠部署方式
reference:
項目開發(fā)常說的灰度發(fā)布山橄、藍綠發(fā)布垮媒、滾動發(fā)布到底是個啥? (qq.com)