0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

微服務(wù)如何讓用戶切換到新的版本

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-06-25 14:45 ? 次閱讀

在項目迭代的過程中,不可避免需要”上線“。上線對應(yīng)著部署,或者重新部署;部署對應(yīng)著修改;修改則意味著風險。目前有很多部署發(fā)布的技術(shù), 這兒將常見的做一個總結(jié)。

上面所說難免有些抽象, 舉一個情景例子, 加入你是微博項目負責人員, 現(xiàn)在新版本較原來的老版本有很大的改變, 這設(shè)計到服務(wù)架構(gòu)、前端UI等等, 經(jīng)過測試功能沒有障礙, 那么這時候如何讓用戶切換到新的版本呢?

顯而易見, 第一次發(fā)布的應(yīng)用是沒有所謂的這個問題的, 這種如何發(fā)布的思考只會出現(xiàn)在后面的版本迭代中。

藍綠發(fā)布

藍綠部署中,一共有兩套系統(tǒng):一套是正在提供服務(wù)系統(tǒng)(也就是上面說的舊版),標記為“綠色”;另一套是準備發(fā)布的系統(tǒng),標記為“藍色”。兩套系統(tǒng)都是功能完善的,并且正在運行的系統(tǒng),只是系統(tǒng)版本和對外服務(wù)情況不同。正在對外提供服務(wù)的老系統(tǒng)是綠色系統(tǒng),新部署的系統(tǒng)是藍色系統(tǒng)。

17adcd76-124a-11ee-962d-dac502259ad0.png

藍色系統(tǒng)不對外提供服務(wù),用來做啥?

用來做發(fā)布前測試,測試過程中發(fā)現(xiàn)任何問題,可以直接在藍色系統(tǒng)上修改,不干擾用戶正在使用的系統(tǒng)。

藍色系統(tǒng)經(jīng)過反復(fù)的測試、修改、驗證,確定達到上線標準之后,直接將用戶切換到藍色系統(tǒng), 切換后的一段時間內(nèi),依舊是藍綠兩套系統(tǒng)并存,但是用戶訪問的已經(jīng)是藍色系統(tǒng)。這段時間內(nèi)觀察藍色系統(tǒng)(新系統(tǒng))工作狀態(tài),如果出現(xiàn)問題,直接切換回綠色系統(tǒng)。

當確信對外提供服務(wù)的藍色系統(tǒng)工作正常,不對外提供服務(wù)的綠色系統(tǒng)已經(jīng)不再需要的時候,藍色系統(tǒng)正式成為對外提供服務(wù)系統(tǒng),成為新的綠色系統(tǒng)。原先的綠色系統(tǒng)可以銷毀,將資源釋放出來,用于部署下一個藍色系統(tǒng)。

藍綠發(fā)布特點

藍綠部署的目的是減少發(fā)布時的中斷時間 、能夠快速撤回發(fā)布

兩套系統(tǒng)沒有耦合的時候才能百分百保證不干擾

藍綠發(fā)布注意事項

藍綠部署只是上線策略中的一種,它不是可以應(yīng)對所有情況的萬能方案。藍綠部署能夠簡單快捷實施的前提假設(shè)是目標系統(tǒng)是非常內(nèi)聚的,如果目標系統(tǒng)相當復(fù)雜,那么如何切換、兩套系統(tǒng)的數(shù)據(jù)是否需要以及如何同步等,都需要仔細考慮。

當你切換到藍色環(huán)境時,需要妥當處理未完成的業(yè)務(wù)和新的業(yè)務(wù)。如果你的數(shù)據(jù)庫后端無法處理,會是一個比較麻煩的問題;

可能會出現(xiàn)需要同時處理“微服務(wù)架構(gòu)應(yīng)用”和“傳統(tǒng)架構(gòu)應(yīng)用”的情況,如果在藍綠部署中協(xié)調(diào)不好這兩者,還是有可能會導(dǎo)致服務(wù)停止。

需要提前考慮數(shù)據(jù)庫與應(yīng)用部署同步遷移 /回滾的問題。

藍綠部署需要有基礎(chǔ)設(shè)施支持。

在非隔離基礎(chǔ)架構(gòu)( VM 、 Docker 等)上執(zhí)行藍綠部署,藍色環(huán)境和綠色環(huán)境有被摧毀的風險。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

滾動發(fā)布

一般是取出一個或者多個服務(wù)器停止服務(wù),執(zhí)行更新,并重新將其投入使用。周而復(fù)始,直到集群中所有的實例都更新成新版本。

17cba0c6-124a-11ee-962d-dac502259ad0.png

發(fā)布流程:

相對于藍綠發(fā)布需要一套完備的機器不同, 滾動發(fā)布只需要一臺機器(這兒這是為了理解, 實際可能是多臺), 我們只需要將部分功能部署在這臺機器上, 然后去替換正在運行的機器, 如上圖, 將更新后的功能部署在Server1 上, 然后Server1去替換正在運行的Server, 替換下來的物理機又可以繼續(xù)部署Server2的新版本, 然后去替換正在工作的Server2 , 以此類推, 直到替換完所有的服務(wù)器, 至此 ,服務(wù)更新完成。

滾動發(fā)布特點

這種部署方式相對于藍綠部署,更加節(jié)約資源——它不需要運行兩個集群、兩倍的實例數(shù)。我們可以部分部署,例如每次只取出集群的20%進行升級。

回滾困難

滾定發(fā)布注意事項

滾動發(fā)布沒有一個確定可行的環(huán)境。使用藍綠部署,我們能夠清晰地知道老版本是可行的,而使用滾動發(fā)布,我們無法確定。

修改了現(xiàn)有的環(huán)境。

回滾困難 。舉個例子,在某一次發(fā)布中,我們需要更新100個實例,每次更新10個實例,每次部署需要5分鐘。當滾動發(fā)布到第80個實例時,發(fā)現(xiàn)了問題,需要回滾,這個回滾卻是一個痛苦,并且漫長的過程。

有的時候,我們還可能對系統(tǒng)進行動態(tài)伸縮,如果部署期間,系統(tǒng)自動擴容/縮容了,我們還需判斷到底哪個節(jié)點使用的是哪個代碼。盡管有一些自動化的運維工具,但是依然令人心驚膽戰(zhàn)。

因為是逐步更新,那么我們在上線代碼的時候,就會短暫出現(xiàn)新老版本不一致的情況,如果對上線要求較高的場景,那么就需要考慮如何做好兼容的問題。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

灰度發(fā)布

灰度發(fā)布, 也叫金絲雀發(fā)布。是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。AB test就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用A,一部分用戶開始用B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面來?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度,而我們平常所說的金絲雀部署也就是灰度發(fā)布的一種方式。

具體到服務(wù)器上, 實際操作中還可以做更多控制,譬如說,給最初更新的10臺服務(wù)器設(shè)置較低的權(quán)重、控制發(fā)送給這10臺服務(wù)器的請求數(shù),然后逐漸提高權(quán)重、增加請求數(shù)。一種平滑過渡的思路, 這個控制叫做“流量切分”。

17世紀,英國礦井工人發(fā)現(xiàn),金絲雀對瓦斯這種氣體十分敏感??諝庵心呐掠袠O其微量的瓦斯,金絲雀也會停止歌唱;而當瓦斯含量超過一定限度時,雖然魯鈍的人類毫無察覺,金絲雀卻早已毒發(fā)身亡。當時在采礦設(shè)備相對簡陋的條件下,工人們每次下井都會帶上一只金絲雀作為“瓦斯檢測指標”,以便在危險狀況下緊急撤離。

17e469da-124a-11ee-962d-dac502259ad0.png

準備好部署各個階段的工件,包括:構(gòu)建工件,測試腳本,配置文件和部署清單文件。

將“金絲雀”服務(wù)器部署進服務(wù)器中, 測試。

從負載均衡列表中移除掉“金絲雀”服務(wù)器。

升級“金絲雀”應(yīng)用(排掉原有流量并進行部署)。

對應(yīng)用進行自動化測試。

將“金絲雀”服務(wù)器重新添加到負載均衡列表中(連通性和健康檢查)。

如果“金絲雀”在線使用測試成功,升級剩余的其他服務(wù)器。(否則就回滾)

A/B測試

A/B測試和藍綠發(fā)布、滾動發(fā)布以及金絲雀發(fā)布,完全是兩回事。

藍綠發(fā)布、滾動發(fā)布和金絲雀是發(fā)布策略,目標是確保新上線的系統(tǒng)穩(wěn)定,關(guān)注的是新系統(tǒng)的BUG、隱患。

A/B測試是效果測試,同一時間有多個版本的服務(wù)對外服務(wù),這些服務(wù)都是經(jīng)過足夠測試,達到了上線標準的服務(wù),有差異但是沒有新舊之分(它們上線時可能采用了藍綠部署的方式)。

A/B測試關(guān)注的是不同版本的服務(wù)的實際效果,譬如說轉(zhuǎn)化率、訂單情況等。

A/B測試時,線上同時運行多個版本的服務(wù),這些服務(wù)通常會有一些體驗上的差異,譬如說頁面樣式、顏色、操作流程不同。相關(guān)人員通過分析各個版本服務(wù)的實際效果,選出效果最好的版本。18029374-124a-11ee-962d-dac502259ad0.png
責任編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3712

    瀏覽量

    64023
  • 機器
    +關(guān)注

    關(guān)注

    0

    文章

    772

    瀏覽量

    40637
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    126

    瀏覽量

    7303

原文標題:微服務(wù)下必須了解的4種部署策略!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    微服務(wù)架構(gòu)和CQRS架構(gòu)基本概念介紹

    微服務(wù)架構(gòu)現(xiàn)在很熱,到處可以看到各大互聯(lián)網(wǎng)公司的微服務(wù)實踐的分享總結(jié)。但是,我今天的分享和微服務(wù)沒有關(guān)系,希望可以帶給大家一些新的東西。如果一定要說微服務(wù)和CQRS架構(gòu)的關(guān)系,那我覺得
    發(fā)表于 05-22 09:03

    微服務(wù)完整的增刪改查功能

    微服務(wù) SpringBoot 20(七):使用JdbcTemplates訪問Mysql
    發(fā)表于 08-20 14:28

    微服務(wù)網(wǎng)關(guān)gateway的相關(guān)資料推薦

    目錄微服務(wù)網(wǎng)關(guān) gateway 概述[路由器網(wǎng)關(guān) Zuul 概述]嵌入式 Zuul 反向代理微服務(wù)網(wǎng)關(guān) gateway 概述1、想象一下一個購物應(yīng)用程序的產(chǎn)品詳情頁面展示了指定商品的信息:2、若是
    發(fā)表于 12-23 08:19

    soa和微服務(wù)的區(qū)別

    微服務(wù)究竟是壓垮SOA的最后一根稻草,還是能夠拯救整個軟件工程行業(yè)的萬能藥?人們對于微服務(wù)的概念進行了大量的討論,其中有許多討論是關(guān)于微服務(wù)與SOA之間的關(guān)聯(lián)。本文將對soa和微服務(wù)
    的頭像 發(fā)表于 02-07 14:11 ?1.4w次閱讀
    soa和<b class='flag-5'>微服務(wù)</b>的區(qū)別

    什么是微服務(wù)_微服務(wù)知識點全面總結(jié)

    微服務(wù)是一個新興的軟件架構(gòu),就是把一個大型的單個應(yīng)用程序和服務(wù)拆分為數(shù)十個的支持微服務(wù)。一個微服務(wù)的策略可以工作變得更為簡便,它可擴展單個
    的頭像 發(fā)表于 02-07 16:06 ?1.5w次閱讀

    微服務(wù)是如何演變的

    微服務(wù)的概念產(chǎn)生是順應(yīng)這樣的需求:為了開發(fā)出速度更快、更有彈性且用戶體驗更佳的應(yīng)用。這個概念等同于具有可擴展性的自動化系統(tǒng),在簡單的商業(yè)化架構(gòu)上運行軟件。應(yīng)用快速開發(fā)的需求影響到了全部公司,以及如何看待歷來業(yè)務(wù)安排的方式。那么微服務(wù)
    的頭像 發(fā)表于 02-07 16:25 ?3585次閱讀

    java微服務(wù)架構(gòu)有哪些

    本文首先簡單介紹了微服務(wù)的概念以及使用微服務(wù)所能帶來的優(yōu)勢,然后結(jié)合實例介紹了幾個常見的Java微服務(wù)框架。微服務(wù)在開發(fā)領(lǐng)域的應(yīng)用越來越廣泛,因為開發(fā)人員致力于創(chuàng)建更大、更復(fù)雜的應(yīng)用程
    的頭像 發(fā)表于 02-09 10:34 ?8552次閱讀
    java<b class='flag-5'>微服務(wù)</b>架構(gòu)有哪些

    什么是微服務(wù)和容器?微服務(wù)和容器的作用是什么

    微服務(wù)是將應(yīng)用程序拆分為多個服務(wù)的一種架構(gòu)類型,這些服務(wù)具備構(gòu)成整個應(yīng)用程序的細粒度功能。每個微服務(wù)將具備針對您的應(yīng)用程序的不同邏輯功能。與應(yīng)用程序的所有組件和功能都在單個實例中的單體
    的頭像 發(fā)表于 01-13 10:54 ?3.2w次閱讀
    什么是<b class='flag-5'>微服務(wù)</b>和容器?<b class='flag-5'>微服務(wù)</b>和容器的作用是什么

    谷歌提醒用戶從Chromium Edge切換到Chrome瀏覽器

    Google會發(fā)出警告,提醒用戶切換到Chrome瀏覽器安全使用擴展?,F(xiàn)在看來,Chrome 網(wǎng)絡(luò)商店并不是谷歌展示彈出窗口要求用戶切換到 Chrome 的唯一地方。
    的頭像 發(fā)表于 02-24 10:11 ?1834次閱讀
    谷歌提醒<b class='flag-5'>用戶</b>從Chromium Edge<b class='flag-5'>切換到</b>Chrome瀏覽器

    Vivox60如何切換系統(tǒng),如何切換到經(jīng)典桌面

    如果用戶在傳統(tǒng)桌面上,想要切換到vivox60的OS系統(tǒng),具體操作就是打開手機,在手機桌面上找到變形金剛,點擊打開,然后點擊頁面右下角的OS系統(tǒng)圖標,切換進入。
    的頭像 發(fā)表于 02-18 16:44 ?2.2w次閱讀

    T-Mobile建議用戶從5G切換到2G以節(jié)省電池

    的事情。但T-Mobile似乎并沒有從這個例子中吸取教訓(xùn),反而似乎束手無策。Verizon告訴用戶切換到LTE,而T-Mobile的許多支持頁面卻告訴用戶要一直切換到2G。
    發(fā)表于 03-05 11:49 ?1168次閱讀

    微服務(wù)架構(gòu)有哪些_微服務(wù)架構(gòu)設(shè)計模式

    小伙伴們知道常用的微服務(wù)架構(gòu)框架有哪些嗎?上回我們介紹了一些常用的微服務(wù)架構(gòu)設(shè)計模式,這次我們就來了解一下一些常用的微服務(wù)架構(gòu)框架吧。
    的頭像 發(fā)表于 05-17 17:06 ?2.9w次閱讀
    <b class='flag-5'>微服務(wù)</b>架構(gòu)有哪些_<b class='flag-5'>微服務(wù)</b>架構(gòu)設(shè)計模式

    微服務(wù)架構(gòu)簡介和優(yōu)勢

    微服務(wù)是小型的獨立服務(wù),可以獨立演進并單獨部署,以支持持續(xù)集成和持續(xù)交付。微服務(wù)架構(gòu)促進開發(fā)和部署由獨立、自主、模塊化、自包含單元組成的應(yīng)用程序或一組功能。每個單位都被分配給擁有它的團隊進行改進。采用
    的頭像 發(fā)表于 11-30 15:41 ?1579次閱讀
    <b class='flag-5'>微服務(wù)</b>架構(gòu)簡介和優(yōu)勢

    linux切換到命令行模式

    在Linux中,可以通過以下步驟切換到命令行模式: 打開終端??梢栽趹?yīng)用菜單中找到終端或命令行終端。 在終端中輸入命令“exit”或“l(fā)ogout”,然后按回車鍵。 系統(tǒng)會提示您輸入管理員密碼。輸入
    的頭像 發(fā)表于 11-13 16:47 ?1466次閱讀

    設(shè)計微服務(wù)架構(gòu)的原則

    微服務(wù)是一種軟件架構(gòu)策略,有利于改善整體性能和可擴展性。你可能會想,我的團隊需不需要采用微服務(wù),設(shè)計微服務(wù)架構(gòu)有哪些原則?本文會給你一些靈感。文章速覽:微服務(wù)設(shè)計的要素
    的頭像 發(fā)表于 11-26 08:05 ?453次閱讀
    設(shè)計<b class='flag-5'>微服務(wù)</b>架構(gòu)的原則