藍綠髮布、滾動發佈、灰度發佈(A/B測試 、金絲雀)這些是在說啥?

經常聽說這些名詞,多少有些瞭解,但是說起熟悉卻不能說出個一二,在看書學習了這部分內容後做些總結分享,也以備隨時查看複習。以下總結當前幾種主流的系統發佈更新方式。

目錄

藍綠髮布

滾動發佈

灰度發佈

A/B測試

金絲雀

各方式比較


藍綠髮布

藍綠髮布(Blue & Green Deployment)是一種可以“零停服”的應用發佈方式,可以保證應用平滑切換上線。其原理十分簡單,即用藍與綠來區分兩套版本不一樣的環境,一般用綠環境來表示舊版本,此時全部的流量由該環境承擔,藍環境則是一套獨立的新版本應用環境,在部署之後如果測試通過,則將流量由綠切換到藍,完成一次幾乎無感知的上線過程,其過程分別如下兩圖所示:

滾動發佈

滾動發佈(Rolling Update Deployment)一般是將集羣裏的少量節點進行更新上線,然後再更新其他節點,每次只更新少量節點,直到全部更新完畢,整個系統變爲新版本,過程如下兩圖所示:

灰度發佈

灰度發佈(Gray Deployment)是一個統稱,它是目前應用面比較廣的一種發佈方式,它的思想是在線上環境中部署一個新版本應用,然後引入一小部分流量進入其中,如果沒有發現問題就切換上線,這種方式對於測試應用在線上環境的實際表現情況極其有效,我們在灰度階段就可以發現問題,及時調整,並且用戶無感知。目前灰度發佈可以分爲兩種,一種是A/B測試,另一種是金絲雀部署。

A/B測試

A/B測試(A/B Testing),A版本是線上穩定版本,B版本是迭代版本,如果一下子切到B環境,可能用戶會難以適應,所以先部署一個B環境,分一部分流量過來,收集用戶反饋然後逐步改進B版本,直到用戶可以接受完全用B版本替換A版本的程度,如下圖:

可能你會覺得藍綠髮布與A/B測試是一個概念,其實不然,藍綠髮布關注的是新版本的發佈,而A/B測試關注的是一個測試的過程,兩者還是有本質的區別的。

金絲雀

金絲雀部署(Canary Deployment)
背景出自“礦井中的金絲雀”:17世紀,英國礦井工人發現,金絲雀對瓦斯這種氣體十分敏感。哪怕空氣中只有極其微量的瓦斯,金絲雀也會停止歌唱;當瓦斯含量超過一定限度時,雖然魯鈍的人類毫無察覺,金絲雀卻早已毒發身亡。當時在採礦設備相對簡陋的條件下,工人們每次下井都會帶上一隻金絲雀作爲瓦斯檢測指標,以便及時發現危險狀況並緊急撤離。
後來的軟件工程師借鑑這個典故來升級應用,在黑白之間平滑發佈過渡,一般是在應用集羣中部署一臺實例作爲“金絲雀”,引入一小部分流量,收集問題,及時調整,待達到上線標準再替換集羣中其他實例,如下圖:

 

各方式比較

在“開發-測試-上線”階段,對於用戶與系統服務商,不難看出,對整個流程皆要兼顧的是灰度發佈,這也就是目前灰度發佈較爲流行的原因

 

學無止境 學海無涯 加油!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章