日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

微服務(wù) | 推薦幾種最佳「發(fā)布」實踐方式

 測試開發(fā)技術(shù) 2022-06-18 發(fā)布于廣東
閱讀全文大概需要 6分鐘。

在上一篇中,介紹了開源實戰(zhàn)項目STP-智慧測試平臺:十分鐘了解:開源實戰(zhàn)項目STP-智慧測試平臺,本文聊一聊產(chǎn)品研發(fā)生產(chǎn)必備環(huán)節(jié)之一:發(fā)布。

在項目研發(fā)迭代的過程中,不可避免需要對“應(yīng)用服務(wù)部署上線”。而對于應(yīng)用程序升級面臨最大挑戰(zhàn)是新舊業(yè)務(wù)切換的同時還要保證系統(tǒng)不間斷提供服務(wù)。特別是微服務(wù)盛行的今天,對服務(wù)發(fā)布的粒度、發(fā)布策略控制更佳尤為重要。

最近幾年,市面上流行了很多與顏色相關(guān)的部署、發(fā)布方法,常見的比如有:藍綠部署、紅黑部署、灰度發(fā)布(金絲雀發(fā)布)、滾動發(fā)布等。接下來,就和大家聊一聊這幾種帶“色”的發(fā)布方法以及他們之間的區(qū)別和優(yōu)缺點。

從部署到發(fā)布的幾個階段


部署、發(fā)布、上線這幾個名詞,其實區(qū)分不太明顯,我們平時在討論服務(wù)部署上線時,也經(jīng)常會混用。在這里,先給大家明確區(qū)分一下這幾個階段。

  • 部署(deploy),指的是我們把一個代碼包拷貝到服務(wù)器上運行,但并不把它暴露給用戶,也就是并不給用戶提供服務(wù)。這個階段比較耗時,但因為還沒有面向用戶,所以風(fēng)險很小。

  • 發(fā)布(release),是把部署好的服務(wù)暴露給用戶的過程,也就是開始真正上線服務(wù)用戶了。這個過程可以通過負載均衡的切換很快實現(xiàn),但風(fēng)險很大,一旦出現(xiàn)問題損失就會比較大。

  • 發(fā)布后(post-release),指的是服務(wù)完全上線以后的階段。因為產(chǎn)品已經(jīng)完全上線,我們的主要工作不再是預(yù)防,而是變成了監(jiān)控和降低損失。

幾種帶“色”的部署方式定義


我們再來看看藍綠部署(Blue-green Deployment)、紅黑部署(Red-black Deployment)和灰度發(fā)布(Gray Release ,或 Dark Launch)、滾動發(fā)布(Rolling Update)的定義和流程。

1、藍綠部署

藍綠部署,是采用兩個分開的集群對軟件版本進行升級的一種方式。它的部署模型中包括一個藍色集群 A 和一個綠色集群 B,在沒有新版本上線的情況下,兩個集群上運行的版本是一致的,同時對外提供服務(wù)。

系統(tǒng)升級時,藍綠部署的流程是:

  • 首先,從負載均衡器列表中刪除集群 A,讓集群 B 單獨提供服務(wù)。

  • 然后,在集群 A 上部署新版本。


  • 接下來,集群 A 升級完畢后,把負載均衡列表全部指向 A,并刪除集群 B,由 A 單獨提供服務(wù)。


  • 在集群 B 上部署完新版本后,再把它添加回負載均衡列表中。

這樣,我們就完成了兩個集群上所有機器的版本升級。

細心的讀者,從上述的部署流程中,也能發(fā)現(xiàn),藍綠部署它的優(yōu)點在于發(fā)布策略簡單、對于用戶來說無感知,可以實現(xiàn)升級平滑過渡。但它的缺點也很明顯:需要準備正常業(yè)務(wù)使用資源的兩倍以上服務(wù)器,需要投入較大的資源成本。當然對于不差錢、追求服務(wù)穩(wěn)定性的公司而言,較為推薦這種部署模式。

2、紅黑部署

紅黑部署是Netflix采用的部署手段,Netflix的主要基礎(chǔ)設(shè)施是在AWS上,它與藍綠部署類似,紅黑部署也是通過兩個集群完成軟件版本的升級。

當前提供服務(wù)的所有機器都運行在紅色集群 A 中,當需要發(fā)布新版本的時候,具體流程是這樣的:

  • 先在云上申請一個黑色集群 B,在 B 上部署新版本的服務(wù);

  • 等到 B 升級完成后,我們一次性地把負載均衡全部指向 B;

  • 把 A 集群從負載均衡列表中刪除,并釋放集群 A 中所有機器。

這樣就完成了一個版本的升級。

可以看到,與藍綠部署相比,紅黑部署只不過是充分利用了云計算的彈性伸縮優(yōu)勢,從而獲得了兩個收益:一是,簡化了流程;二是,避免了在升級的過程中,由于只有一半的服務(wù)器提供服務(wù),而可能導(dǎo)致的系統(tǒng)過載問題。

3、灰度發(fā)布

灰度發(fā)布,也被叫作金絲雀發(fā)布。與藍綠部署、紅黑部署不同的是,灰度發(fā)布屬于增量發(fā)布方法。也就是說,服務(wù)升級的過程中,新舊版本會同時為用戶提供服務(wù)。

灰度發(fā)布的具體流程是這樣的:在集群的一小部分機器上部署新版本,給一部分用戶使用,以測試新版本的功能和性能;確認沒有問題之后,再對整個集群進行升級。簡單地說,灰度發(fā)布就是把部署好的服務(wù)分批次、逐步暴露給越來越多的用戶,直到最終完全上線。

之所以叫作灰度發(fā)布,是因為它介于黑與白之間,并不是版本之間的直接切換,而是一個平滑過渡的過程。

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

之所以又被叫作金絲雀發(fā)布,是因為金絲雀對瓦斯極其敏感,17 世紀時英國礦井工人會攜帶金絲雀下井,以便及時發(fā)現(xiàn)危險。這就與灰色發(fā)布過程中,先發(fā)布給一部分用戶來測試相似,因而得名。

對于灰度發(fā)布來說,它的優(yōu)點在于如果前期出問題影響范圍很小,相對用戶體驗也少;可以做到及時發(fā)現(xiàn)、及時調(diào)整問題,影響范圍可控。但是采取這種模式對自動化以及運維監(jiān)控能力的要求非常高。

4、滾動發(fā)布

滾動發(fā)布是指每次只升級一個或多個服務(wù),升級完成后加入生產(chǎn)環(huán)境,不斷執(zhí)行這個過程,直到集群中的全部舊版本升級新版本。 

  • 紅色:正在更新的實例

  • 藍色:更新完成并加入集群的實例

  • 綠色:正在運行的實例

這種部署方式相對于藍綠部署,更加節(jié)約資源——它不需要運行兩個集群、兩倍的實例數(shù)。我們可以部分部署,例如每次只取出集群的20%進行升級,比較節(jié)約資源,但同時缺點也很明顯:采用滾動發(fā)布方式部署時,沒有一個確定OK的環(huán)境。如果使用藍綠部署,我們能夠清晰地知道老版本是OK的,而使用滾動發(fā)布,我們無法確定。并且一旦發(fā)布過程出現(xiàn)問題,需要回滾,回滾過程非常困難。

在實際工作當中,升級過程中需要保持服務(wù)的連續(xù)性、穩(wěn)定,對外界無感知是幾個基本的要求。在生產(chǎn)上選擇哪種部署方法最合適?這取決于哪種方法最適合你的業(yè)務(wù)和技術(shù)需求。

如果你們運維自動化能力儲備不夠,肯定是越簡單越好,建議藍綠發(fā)布,如果業(yè)務(wù)對用戶依賴很強,建議灰度發(fā)布。如果是K8S平臺,滾動更新是現(xiàn)成的方案,建議先直接使用。

好了,以上就是當前市面常見的幾種有顏色的部署發(fā)布方式。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多