學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

為何互聯(lián)網(wǎng)大廠都在采用藍綠發(fā)布、滾動發(fā)布、灰度發(fā)布?

來源:北大青鳥總部 2023年08月23日 14:03

摘要: 在互聯(lián)網(wǎng)軟件的生產(chǎn)過程中有一環(huán)是必不可少的,那便是部署、發(fā)布。通過把代碼部署在特定環(huán)境中,再對外向用戶發(fā)布新功能。

在互聯(lián)網(wǎng)軟件的生產(chǎn)過程中有一環(huán)是必不可少的,那便是部署、發(fā)布。通過把代碼部署在特定環(huán)境中,再對外向用戶發(fā)布新功能。早期的時候互聯(lián)網(wǎng)剛剛發(fā)展起來,涌入互聯(lián)網(wǎng)的網(wǎng)民還比較少,服務器資源也比較昂貴、緊張,這時候的發(fā)布一般就是把舊版本下掉,然后再部署新版本,在發(fā)布期間,服務不可用。這樣的體驗其實不太好,因為發(fā)布期間我在這個應用上無法進行任何操作。

但隨著互聯(lián)網(wǎng)的快速發(fā)展,尤其是云計算起來之后,服務器資源變得不再昂貴了,互聯(lián)網(wǎng)企業(yè)們也更加的看重用戶體驗,要求7*24小時不停服提供服務,于是發(fā)布的方式也在演變,典型的發(fā)布方式包含藍綠發(fā)布滾動發(fā)布、灰度發(fā)布(金絲雀發(fā)布)。我們今天就來看看這些發(fā)布方式吧~


·藍綠發(fā)布

在藍綠發(fā)布中,部署服務的機器包含綠組機器、藍組機器。在新版本上線之前,先將舊版本的代碼部署在綠組機器上,然后把流量指向綠組機器,之后再把新版本代碼部署在藍組機器上,把指向綠組機器的流量再指回藍組,發(fā)布過程如果出現(xiàn)問題,則回滾綠組機器或藍組機器即可。在整個發(fā)布過程中,應用一直在對外提供服務,因此用戶是無感的。藍綠發(fā)布的缺點就是資源會有點浪費,在開始發(fā)布之前,需要申請出等量的機器進行服務部署。


比如我們?nèi)ゲ宛^吃飯,點了紅燒排骨、土豆牛腩、西紅柿蛋湯,先上了紅燒排骨。在上新的菜土豆牛腩時,傳統(tǒng)發(fā)布是直接把紅燒排骨下掉,換上土豆牛腩。藍綠發(fā)布則是保留紅燒排骨,并同時把土豆牛腩端上來,讓我們都去吃土豆牛腩的同時,再把紅燒排骨下掉。在整個就餐的過程中,藍綠方式讓我們一直保持有菜可吃。


·滾動發(fā)布

在滾動發(fā)布過程中,我們是把原有部署服務的機器挑選出來1臺或多臺機器在這些機器上部署新的版本,部署成功后,又挑剩下的機器繼續(xù)部署新版本,如此循環(huán)往復,直到所有的機器都部署了最新的版本。這種部署方式的好處首先是不需要申請新的服務資源、節(jié)省成本,其次是在發(fā)布過程中并非所有的用戶都會受影響、一定程度保障了用戶體驗。但是也存在一些缺點,如果發(fā)布過程出現(xiàn)了問題,回滾很麻煩,要逐臺找到機器并且回滾。



滾動發(fā)布的方式就像是我們在餐館吃飯時,上了紅燒排骨之后、又上土豆牛腩、西紅柿蛋湯,在整個上菜的過程中,有的人吃到的是紅燒排骨,有的人是土豆牛腩,直到服務員確認所有的土豆牛腩都上齊后,才會把紅燒排骨下掉。如果服務員上錯菜了,那就呵呵了,需要去找到上錯菜的桌子,一盤盤的撤下,用戶會很莫名其妙,服務員也會很辛苦。


·灰度發(fā)布

灰度發(fā)布也稱為金絲雀發(fā)布,是在互聯(lián)網(wǎng)中比較常用的一種發(fā)布方式,尤其是C端產(chǎn)品。ABtest就是一種灰度發(fā)布方式,在新產(chǎn)品上線之后,讓一部分用戶用A,剩下的用戶用B,如果用戶對A沒有什么反對意見,則把剩下的用戶都切換A版本。

在灰度發(fā)布中,我們先把要發(fā)布的代碼版本準備好,然后選擇一臺或一組服務器,切除掉流量(在負載均衡中把該臺或該組機器去掉),在該組機器部署新的版本,然后再在負載均衡中把該臺或該組機器加上,這時候就會有用戶訪問了,如果用戶使用都還不錯,則把剩下的機器按照剛剛的流程進行操作即可,直到線上的所有服務都是使用新版本。


灰度發(fā)布的方式就像是我們在餐館吃飯時,上了紅燒排骨之后,服務員先選擇某幾桌用戶把紅燒排骨下掉、上土豆牛腩看看用戶反饋,如果都吃的還不錯,就把剩下的所有餐桌的紅燒排骨下掉、換成土豆牛腩。

事實上,藍綠發(fā)布、滾動發(fā)布、灰度發(fā)布本質(zhì)上還是一種部署行為,只不過是由于業(yè)務增加了對外周知用戶的環(huán)節(jié),因此變成了發(fā)布。從部署這個角度看,它們不僅是在生產(chǎn)環(huán)境可用,在測試環(huán)境也可以使用。再從DevOps持續(xù)集成交付角度看,開發(fā)的代碼不斷集成到代碼庫,也需要不斷的部署在測試環(huán)境、生產(chǎn)環(huán)境中,因此它們?nèi)匀话l(fā)揮著最大的價值。作為技術人員,可結合自己的企業(yè)情況,選擇最合適的發(fā)布策略~


標簽: devops
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內(nèi)鏈接