天天看點

灰階釋出與滾動釋出、藍綠釋出介紹灰階釋出與滾動釋出、藍綠釋出介紹一、灰階釋出與滾動釋出、藍綠釋出介紹二、灰階釋出好處三、Gitee上高熱度的開源灰階釋出系統四、安裝使用

文章目錄

  • 灰階釋出與滾動釋出、藍綠釋出介紹
  • 一、灰階釋出與滾動釋出、藍綠釋出介紹
    • 1、藍綠部署
    • 2、滾動釋出
    • 3、灰階釋出
  • 二、灰階釋出好處
  • 三、Gitee上高熱度的開源灰階釋出系統
  • 四、安裝使用

灰階釋出與滾動釋出、藍綠釋出介紹

一、灰階釋出與滾動釋出、藍綠釋出介紹

​ 引用文章:關于藍綠部署、滾動釋出、灰階釋出的介紹以及最佳實踐

​ 在一般情況下,更新伺服器端應用,需要将應用源碼或程式包上傳到伺服器,然後停止掉老版本服務,再啟動新版本。但是這種簡單的釋出方式存在兩個問題,一方面,在新版本更新過程中,服務是暫時中斷的,另一方面,如果新版本有BUG,更新失敗,復原起來也非常麻煩,容易造成更長時間的服務不可用。

為了解決這些問題,人們研究出了多種釋出政策,下面我們一一介紹。

1、藍綠部署

灰階釋出與滾動釋出、藍綠釋出介紹灰階釋出與滾動釋出、藍綠釋出介紹一、灰階釋出與滾動釋出、藍綠釋出介紹二、灰階釋出好處三、Gitee上高熱度的開源灰階釋出系統四、安裝使用

​ 所謂藍綠部署,是指同時運作兩個版本的應用,如上圖所示,藍綠部署的時候,并不停止掉老版本,而是直接部署一套新版本,等新版本運作起來後,再将流量切換到新版本上。但是藍綠部署要求在更新過程中,同時運作兩套程式,對硬體的要求就是日常所需的二倍,比如日常運作時,需要10台伺服器支撐業務,那麼使用藍綠部署,你就需要購置二十台伺服器。

2、滾動釋出

​ 滾動釋出能夠解決掉藍綠部署時對硬體要求增倍的問題。

灰階釋出與滾動釋出、藍綠釋出介紹灰階釋出與滾動釋出、藍綠釋出介紹一、灰階釋出與滾動釋出、藍綠釋出介紹二、灰階釋出好處三、Gitee上高熱度的開源灰階釋出系統四、安裝使用

​ 所謂滾動更新,就是在更新過程中,并不一下子啟動所有新版本,是先啟動一台新版本,再停止一台老版本,然後再啟動一台新版本,再停止一台老版本,直到更新完成,這樣的話,如果日常需要10台伺服器,那麼更新過程中也就隻需要11台就行了。

​ 但是滾動更新有一個問題,在開始滾動更新後,流量會直接流向已經啟動起來的新版本,但是這個時候,新版本是不一定可用的,比如需要進一步的測試才能确認。那麼在滾動更新期間,整個系統就處于非常不穩定的狀态,如果發現了問題,也比較難以确定是新版本還是老版本造成的問題。

​ 為了解決這個問題,我們需要為滾動更新實作流量控制能力。

3、灰階釋出

​ 灰階釋出也叫金絲雀釋出,起源是,礦井勞工發現,金絲雀對瓦斯氣體很敏感,礦工會在下井之前,先放一隻金絲雀到井中,如果金絲雀不叫了,就代表瓦斯濃度高。

灰階釋出與滾動釋出、藍綠釋出介紹灰階釋出與滾動釋出、藍綠釋出介紹一、灰階釋出與滾動釋出、藍綠釋出介紹二、灰階釋出好處三、Gitee上高熱度的開源灰階釋出系統四、安裝使用

​ 在灰階釋出開始後,先啟動一個新版本應用,但是并不直接将流量切過來,而是測試人員對新版本進行線上測試,啟動的這個新版本應用,就是我們的金絲雀。如果沒有問題,那麼可以将少量的使用者流量導入到新版本上,然後再對新版本做運作狀态觀察,收集各種運作時資料,如果此時對新舊版本做各種資料對比,就是所謂的A/B測試。

​ 當确認新版本運作良好後,再逐漸将更多的流量導入到新版本上,在此期間,還可以不斷地調整新舊兩個版本的運作的伺服器副本數量,以使得新版本能夠承受越來越大的流量壓力。直到将100%的流量都切換到新版本上,最後關閉剩下的老版本服務,完成灰階釋出。

​ 如果在灰階釋出過程中(灰階期)發現了新版本有問題,就應該立即将流量切回老版本上,這樣,就會将負面影響控制在最小範圍内。

二、灰階釋出好處

​ 飛速發展的網際網路公司,灰階其實就是根據設定的規則将請求路由到我們的灰階版本(灰階機器)上來。比如對于API來說,一般有如下幾個需求:特定使用者(比如測試帳号)、 特定的App(比如測試app或者合作App)、特定的子產品、接口(隻有某些接口需要灰階,這種一般是API Container的修改,拿一些不是很重要的API做灰階測試)、特定的機器(某些請求IP轉發到灰階機)等。

​ 在傳統軟體産品釋出過程中(例如微軟的Windows 7的釋出過程中),一般都會經曆Pre-Alpha、Alpha、Beta、Release candidate(RC)、RTM、General availability or General Acceptance (GA)等幾個階段(參考Software release life cycle)。可以看出傳統軟體的釋出階段是從公司内部->外部小範圍測試>外部大範圍測試->正式釋出,涉及的使用者數也是逐漸放量的過程。

​ 灰階可以解決的問題:

1、在釋出過程中降低上線風險

2、降低影響範圍,并且範圍可控

3、降低對測試的依賴,減少線下自測的資料構造成本

4、特定的請求能夠指向特定的伺服器,友善集中監控日志,友善跟蹤完整的調用鍊路

5、友善系統流量切入

6、友善復原

7、指定特定人群,友善系統回訪,友善産品需求收集,完善産品功能,提升産品品質

8、在無狀态的情況下保障使用者使用到的版本一緻

9、避免停服給使用者帶來壞的體驗用

三、Gitee上高熱度的開源灰階釋出系統

​ 是一款全開源的灰階管理系統,本系管理統主要采用java技術開發、資料庫采用mysql、灰階引擎目前采用java和lua兩種技術開發。并且介紹一個灰階系統在一個網際網路公司的重要性,尤其是對于小公司,沒有精力去做也就無法保障系統上線的平穩。這套灰階管理系統能夠靈活配置http和dubbo的請求接入,豐富的擴充性。願景是能夠為小公司提供一種解決方案,希望能夠作為大公司灰階更好參考,為公司的營運提供多一點選擇。交流qq群 575301105https://my.oschina.net/izhangll/blog/884713。

四、安裝使用

安裝使用見:https://gitee.com/xiaoleiziemail/gray。

繼續閱讀