應用程式升級面臨最大挑戰是新舊業務切換,將軟體從測驗的最后階段帶到生產環境,同時要保證系統不間斷提供服務,
長期以來,業務升級漸漸形成了幾個發布策略:藍綠發布、灰度發布和滾動發布,目的是盡可能避免因發布導致的流量丟失或服務不可用問題,一、 藍綠發布
專案邏輯上分為AB組,在專案系統時,首先把A組從負載均衡中摘除,進行新版本的部署,B組仍然繼續提供服務,

當A組升級完畢,負載均衡重新接入A組,再把B組從負載串列中摘除,進行新版本的部署,A組重新提供服務,

最后,B組也升級完成,負載均衡重新接入B組,此時,AB組版本都已經升級完成,并且都對外提供服務,
特點
-
如果出問題,影響范圍較大;
-
發布策略簡單;
-
用戶無感知,平滑過渡;
-
升級/回滾速度快,
缺點
-
需要準備正常業務使用資源的兩倍以上服務器,防止升級期間單組無法承載業務突發;
-
短時間內浪費一定資源成本;
-
基礎設施無改動,增大升級穩定性,
藍綠發布在早期物理服務器時代,還是比較昂貴的,由于云計算普及,成本也大大降低,
二、 灰度發布
灰度發布只升級部分服務,即讓一部分用戶繼續用老版本,一部分用戶開始用新版本,如果用戶對新版本沒什么意見,那么逐步擴大范圍,把所有用戶都遷移到新版本上面來,

特點
-
保證整體系統穩定性,在初始灰度的時候就可以發現、調整問題,影響范圍可控;
-
新功能逐步評估性能,穩定性和健康狀況,如果出問題影響范圍很小,相對用戶體驗也少;
-
用戶無感知,平滑過渡,
缺點
-
自動化要求高
部署程序
-
從LB摘掉灰度服務器,升級成功后再加入LB;
-
少量用戶流量到新版本;
-
如果灰度服務器測驗成功,升級剩余服務器,
灰度發布是通過切換線上并存版本之間的路由權重,逐步從一個版本切換為另一個版本的程序,
三、 滾動發布
滾動發布是指每次只升級一個或多個服務,升級完成后加入生產環境,不斷執行這個程序,直到集群中的全部舊版本升級新版本,

-
紅色:正在更新的實體
-
藍色:更新完成并加入集群的實體
-
綠色:正在運行的實體
特點
-
用戶無感知,平滑過渡;
-
節約資源,
缺點
-
部署時間慢,取決于每階段更新時間;
-
發布策略較復雜;
-
無法確定OK的環境,不易回滾,
部署程序
-
先升級1個副本,主要做部署驗證;
-
每次升級副本,自動從LB上摘掉,升級成功后自動加入集群;
-
事先需要有自動更新策略,分為若干次,每次數量/百分比可配置;
-
回滾是發布的逆程序,先從LB摘掉新版本,再升級老版本,這個程序一般時間比較長;
-
自動化要求高,
小結
綜上所述,三種方式均可以做到平滑式升級,在升級程序中服務仍然保持服務的連續性,升級對外界是無感知的,那生產上選擇哪種部署方法最合適呢?這取決于哪種方法最適合你的業務和技術需求,如果你們運維自動化能力儲備不夠,肯定是越簡單越好,建議藍綠發布,如果業務對用戶依賴很強,建議灰度發布,如果是K8S平臺,滾動更新是現成的方案,建議先直接使用,
-
藍綠發布:兩套環境交替升級,舊版本保留一定時間便于回滾,
-
灰度發布:根據比例將老版本升級,例如80%用戶訪問是老版本,20%用戶訪問是新版本,
-
滾動發布:按批次停止老版本實體,啟動新版本實體,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/110885.html
標籤:其他
上一篇:互聯網常用網路基礎命令
