學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

為何互聯(lián)網(wǎng)大廠都在采用藍(lán)綠發(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ā)布新功能。早期的時(shí)候互聯(lián)網(wǎng)剛剛發(fā)展起來,涌入互聯(lián)網(wǎng)的網(wǎng)民還比較少,服務(wù)器資源也比較昂貴、緊張,這時(shí)候的發(fā)布一般就是把舊版本下掉,然后再部署新版本,在發(fā)布期間,服務(wù)不可用。這樣的體驗(yàn)其實(shí)不太好,因?yàn)榘l(fā)布期間我在這個(gè)應(yīng)用上無法進(jìn)行任何操作。

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


·藍(lán)綠發(fā)布

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


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


·滾動發(fā)布

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



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


·灰度發(fā)布

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

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


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

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


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