本文檔講述基於Rainbond實現微服務常見的三種發佈方式,滾動發佈,藍綠髮布及灰度發佈的原理、思路、及具體方式。ios
Rainbond平臺無狀態應用滾動更新與有狀態應用滾動更新區別:web
**無狀態應用:**滾動更新時,首先會生成新的實例,新的實例啓動後在後臺運行,平臺會使用健康監測機制去監聽端口,判斷新實例內應用是否運行正常,一旦監聽到應用運行正常,就會上線新的應用,銷燬舊的應用,以此完成滾動發佈的流程。app
**有狀態應用:**若是是非集羣化的應用,生成新的實例前,舊的實例會中止運行,待新的實例更新完畢,舊的實例會被廢除,若是是集羣化的應用,沒必要擔憂服務會中斷,能夠進行分批次更新。以保障服務的運行。微服務
Rainbond平臺滾動發佈實踐測試
這裏以無狀態應用爲例3d
藍綠部署是不停老版本,部署新版本而後進行測試,確認OK,將流量切到新版本,而後老版本同時也升級到新版本。blog
基於權重使用平臺網關功能的藍綠髮布實踐文檔
Web服務 | 域名 | 權重 |
---|---|---|
Web V1 | www.test.com | 100 |
Web V2 | www.test.com | 0 |
此時查看流量已經轉移到Web V2,藍綠髮布已經完成。
灰度發佈是指在黑與白之間,可以平滑過渡的一種發佈方式。灰度發佈能夠保證總體系統的穩定,在初始灰度的時候就能夠發現、調整問題,以保證其影響度。
基於權重的灰度發佈實踐
從流量的維度進行控制,好比開始先 10%流量切換到新版本,後續逐步增長這個權重,在正常的狀況下直到舊版權重較少到 0;即完成了灰度發佈。
依然經過 應用網關 -> 訪問策略添加如下兩個HTTP訪問策略:
Web服務 | 域名 | 權重 |
---|---|---|
Web V1 | www.test.com | 90 |
Web V2 | www.test.com | 10 |
根據須要逐步減小Web V1權重,增長Web V2權重,直到Web V1權重減小到0便可。
關於Rainbond的應用A/B測試操做方案請參閱 A/B測試實踐