天天看點

藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出

藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出

應用程式更新面臨最大挑戰是新舊業務切換,将軟體從測試的最後階段帶到生産環境,同時要保證系統不間斷提供服務。

長期以來,業務更新漸漸形成了幾個釋出政策:藍綠釋出、灰階釋出和滾動釋出,目的是盡可能避免因釋出導緻的流量丢失或服務不可用問題。

1. 藍綠釋出

1.1 實作原理

1)項目邏輯上分為AB組,在項目系統時,首先把A組從負載均衡中摘除,進行新版本的部署。B組仍然繼續提供服務。

藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出

2) 當A組更新完畢,負載均衡重新接入A組,再把B組從負載清單中摘除,進行新版本的部署。A組重新提供服務。

藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出

3) 最後,B組也更新完成,負載均衡重新接入B組,此時,AB組版本都已經更新完成,并且都對外提供服務。

1.2 特點

  • 如果出問題,影響範圍較大;
  • 釋出政策簡單;
  • 使用者無感覺,平滑過渡;
  • 更新/復原速度快。

1.3 缺點

  • 需要準備正常業務使用資源的兩倍以上伺服器,防止更新期間單組無法承載業務突發;
  • 短時間内浪費一定資源成本;
  • 基礎設施無改動,增大更新穩定性。

藍綠釋出在早期實體伺服器時代,還是比較昂貴的,由于雲計算普及,成本也大大降低。

2. 灰階釋出(金絲雀釋出)

2.1 實作原理

灰階釋出隻更新部分服務,即讓一部分使用者繼續用老版本,一部分使用者開始用新版本,如果使用者對新版本沒什麼意見,那麼逐漸擴大範圍,把所有使用者都遷移到新版本上面來。

藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出

2.2 特點

  • 保證整體系統穩定性,在初始灰階的時候就可以發現、調整問題,影響範圍可控;
  • 新功能逐漸評估性能,穩定性和健康狀況,如果出問題影響範圍很小,相對使用者體驗也少;
  • 使用者無感覺,平滑過渡。

2.3 缺點

自動化要求高

2.4 部署過程

  1. 從LB摘掉灰階伺服器,更新成功後再加入LB;
  2. 少量使用者流量到新版本;
  3. 如果灰階伺服器測試成功,更新剩餘伺服器。

灰階釋出是通過切換線上并存版本之間的路由權重,逐漸從一個版本切換為另一個版本的過程。

3. 滾動釋出

3.1 實作原理

滾動釋出是指每次隻更新一個或多個服務,更新完成後加入生産環境,不斷執行這個過程,直到叢集中的全部舊版本更新新版本。

藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出藍綠釋出、灰階釋出(金絲雀釋出) 和滾動釋出
  • 紅色:正在更新的執行個體
  • 藍色:更新完成并加入叢集的執行個體
  • 綠色:正在運作的執行個體

3.2 特點

  • 使用者無感覺,平滑過渡;
  • 節約資源。

3.3 缺點

  • 部署時間慢,取決于每階段更新時間;
  • 釋出政策較複雜;
  • 無法确定OK的環境,不易復原。

3.4 部署過程

  1. 先更新1個副本,主要做部署驗證;
  2. 每次更新副本,自動從LB上摘掉,更新成功後自動加入叢集;
  3. 事先需要有自動更新政策,分為若幹次,每次數量/百分比可配置;
  4. 復原是釋出的逆過程,先從LB摘掉新版本,再更新老版本,這個過程一般時間比較長; 自動化要求高。

4. 小結

綜上所述,三種方式均可以做到平滑式更新,在更新過程中服務仍然保持服務的連續性,更新對外界是無感覺的。

那生産上選擇哪種部署方法最合适呢?這取決于哪種方法最适合你的業務和技術需求。

  • 如果運維自動化能力儲備不夠,肯定是越簡單越好,建議藍綠釋出;
  • 如果業務對使用者依賴很強,建議灰階釋出;
  • 如果是K8S平台,滾動更新是現成的方案,建議先直接使用。

藍綠釋出:兩套環境交替更新,舊版本保留一定時間便于復原。

灰階釋出:根據比例将老版本更新,例如80%使用者通路是老版本,20%使用者通路是新版本。

滾動釋出:按批次停止老版本執行個體,啟動新版本執行個體。

原文位址:https://mp.weixin.qq.com/s?__biz=MzAwNTM5Njk3Mw==&mid=2247495129&idx=1&sn=6ecc1e69c647df365be3f7b92b858c72&chksm=9b1fed5bac68644d5f5b059aa0c9425a22d8e0d669f09b7f7bf5b35fb9dcfcdae771fac9ae5e&mpshare=1&scene=23&srcid=0211stGZXyDNOY6vP35eeZ57&sharer_sharetime=1613019692245&sharer_shareid=874b87929c17020edadbcebae32b2e39#rd

繼續閱讀