藍(lán)綠部署、灰度發(fā)布、滾動(dòng)發(fā)布

藍(lán)綠部署

image.png

簡(jiǎn)單來(lái)說(shuō)就是兩套完整的集群,版本更新的時(shí)候:
1,路由沒(méi)有介入的集群, 進(jìn)行 code update
2,更新完成后,進(jìn)行測(cè)試
3,測(cè)試驗(yàn)證OK后,通過(guò)路由切換到新版本集群,上線完成。

缺點(diǎn)

  1. 資源利用率太低
  2. 中小企業(yè)基本不會(huì)使用這種方式。成本太高

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

image.png

灰度發(fā)布是指在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式?;叶劝l(fā)布是增量發(fā)布的一種類型,灰度發(fā)布是在原有版本可用的情況下,同時(shí)部署一個(gè)新版本應(yīng)用作為“金絲雀”(金絲雀對(duì)瓦斯極敏感,礦井工人攜帶金絲雀,以便及時(shí)發(fā)發(fā)現(xiàn)危險(xiǎn)),測(cè)試新版本的性能和表現(xiàn),以保障整體系統(tǒng)穩(wěn)定的情況下,盡早發(fā)現(xiàn)、調(diào)整問(wèn)題。

灰度發(fā)布/金絲雀發(fā)布由以下幾個(gè)步驟組成:

  1. 準(zhǔn)備好部署各個(gè)階段的工件,包括:構(gòu)建工件,測(cè)試腳本,配置文件和部署清單文件。
  2. 從負(fù)載均衡列表中移除掉“金絲雀”服務(wù)器。
  3. 升級(jí)“金絲雀”應(yīng)用(排掉原有流量并進(jìn)行部署)。
  4. 對(duì)應(yīng)用進(jìn)行自動(dòng)化測(cè)試。
  5. 將“金絲雀”服務(wù)器重新添加到負(fù)載均衡列表中(連通性和健康檢查)。
  6. 如果“金絲雀”在線使用測(cè)試成功,升級(jí)剩余的其他服務(wù)器。(否則就回滾)
    灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問(wèn)題,以保證其影響度。

灰度發(fā)布/金絲雀部署適用的場(chǎng)景:

  1. 不停止老版本,額外搞一套新版本,不同版本應(yīng)用共存。
  2. 灰度發(fā)布中,常常按照用戶設(shè)置路由權(quán)重,例如90%的用戶維持使用老版本,10%的用戶嘗鮮新版本。
  3. 經(jīng)常與A/B測(cè)試一起使用,用于測(cè)試選擇多種方案。AB test就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用A,一部分用戶開(kāi)始用B,如果用戶對(duì)B沒(méi)有什么反對(duì)意見(jiàn),那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來(lái)。

滾動(dòng)發(fā)布(rolling update)

滾動(dòng)發(fā)布,一般是取出一個(gè)或者多個(gè)服務(wù)器停止服務(wù),執(zhí)行更新,并重新將其投入使用。周而復(fù)始,直到集群中所有的實(shí)例都更新成新版本。這種部署方式相對(duì)于藍(lán)綠部署,更加節(jié)約資源——它不需要運(yùn)行兩個(gè)集群、兩倍的實(shí)例數(shù)。我們可以部分部署,例如每次只取出集群的20%進(jìn)行升級(jí)。

這種方式也有很多缺點(diǎn),例如:
(1) 沒(méi)有一個(gè)確定OK的環(huán)境。使用藍(lán)綠部署,我們能夠清晰地知道老版本是OK的,而使用滾動(dòng)發(fā)布,我們無(wú)法確定。
(2) 修改了現(xiàn)有的環(huán)境。
(3) 如果需要回滾,很困難。舉個(gè)例子,在某一次發(fā)布中,我們需要更新100個(gè)實(shí)例,每次更新10個(gè)實(shí)例,每次部署需要5分鐘。當(dāng)滾動(dòng)發(fā)布到第80個(gè)實(shí)例時(shí),發(fā)現(xiàn)了問(wèn)題,需要回滾。此時(shí),脾氣不好的程序猿很可能想掀桌子,因?yàn)榛貪L是一個(gè)痛苦,并且漫長(zhǎng)的過(guò)程。
(4) 有的時(shí)候,我們還可能對(duì)系統(tǒng)進(jìn)行動(dòng)態(tài)伸縮,如果部署期間,系統(tǒng)自動(dòng)擴(kuò)容/縮容了,我們還需判斷到底哪個(gè)節(jié)點(diǎn)使用的是哪個(gè)代碼。盡管有一些自動(dòng)化的運(yùn)維工具,但是依然令人心驚膽戰(zhàn)。
并不是說(shuō)滾動(dòng)發(fā)布不好,滾動(dòng)發(fā)布也有它非常合適的場(chǎng)景。

這里說(shuō)了這么多,滾動(dòng)發(fā)布的缺點(diǎn)哦,但是如果使用docker、kubernetes
進(jìn)行容器化操作,就可以避免環(huán)境上的問(wèn)題,回滾也是自動(dòng)化、動(dòng)態(tài)伸縮也可以
這里面涉及了kubernetes很多不過(guò)多介紹
想了解的可以看下下面這個(gè)
https://kubernetes.feisky.xyz/ji-chu-ru-men/201

我的Bolg連接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容