天天看點

金絲雀釋出(CanaryRelease),又叫作灰階釋出,是一種将流量逐漸轉移到新版本的部署方式,以便出現問題後控制受影

作者:從頭開始自學java

金絲雀釋出(Canary Release),又叫作灰階釋出,是一種将流量逐漸轉移到新版本的部署方式,以便出現問題後控制受影響範圍,降低風險。和藍綠部署相比,它是以漸進的方式進行流量轉移,相對更安全。

金絲雀釋出的具體流程如下。首先将系統新版本以子集的方式部署在架構中,此時沒有任何流量導入

在新版本準備完畢後,将一小部分使用者流量轉移過來,比如圖5-5中所示的5%。有多種政策來确定轉移哪些使用者,比如随機選擇、使用者ID尾号、公司内部使用者或者地理位置等。

在新版本經過測試沒有問題後,就可以把全部的流量都切換到新版本上

金絲雀釋出的名稱來源于一個典故。在17世紀,英國礦井勞工發現,金絲雀對瓦斯這種氣體十分敏感,空氣中哪怕有極其微量的瓦斯,金絲雀也會停止歌唱;當瓦斯含量超過一定限度時,人類毫無察覺,但金絲雀卻會毒發身亡。當時在采礦裝置相對簡陋的條件下,勞工們每次下井都會帶上一隻金絲雀作為“瓦斯檢測名額”,以便在危險狀況下緊急撤離。金絲雀釋出也是基于這樣的考慮,先用少量流量進行新版本的檢驗。

金絲雀釋出的優點是可以利用真實的線上環境和使用者資料進行測試。在很多情況下一些隐蔽的Bug很難在開發環境中被發現,隻有線上上環境中才能暴露出來,是以能利用真實環境和資料測試是發現疑難雜症的重要手段。另外,當發現問題時也可以很安全地復原,并控制受影響的範圍。它的缺點是需要在同一時間點管理多個版本(通常是兩個,也可以同時部署更多版本)。另一個案例是,當釋出的是用戶端版本(如手機的App)時,就很難控制終端使用者去更新版本,此時如果不同的用戶端版本和後端進行通信,則需要進行向後相容。

金絲雀釋出經常和A/B測試一起使用,隻不過側重點不同。金絲雀釋出的最終目的是釋出新版本并完全替代舊版本,而A/B測試的主要目的是收集資料,比較兩個版本的優劣。

金絲雀釋出(CanaryRelease),又叫作灰階釋出,是一種将流量逐漸轉移到新版本的部署方式,以便出現問題後控制受影
金絲雀釋出(CanaryRelease),又叫作灰階釋出,是一種将流量逐漸轉移到新版本的部署方式,以便出現問題後控制受影
金絲雀釋出(CanaryRelease),又叫作灰階釋出,是一種将流量逐漸轉移到新版本的部署方式,以便出現問題後控制受影

繼續閱讀