微服務(wù)部署之藍(lán)綠發(fā)布谋作、滾動發(fā)布芋肠、灰度發(fā)布區(qū)別

原文:微服務(wù)部署之藍(lán)綠發(fā)布、滾動發(fā)布遵蚜、灰度發(fā)布區(qū)別與特點(diǎn) - 等不到的口琴 - 博客園 (cnblogs.com)

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

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

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

藍(lán)綠發(fā)布

藍(lán)綠部署中文兢,一共有兩套系統(tǒng):一套是正在提供服務(wù)系統(tǒng)(也就是上面說的舊版)晤斩,標(biāo)記為“綠色”;另一套是準(zhǔn)備發(fā)布的系統(tǒng)姆坚,標(biāo)記為“藍(lán)色”澳泵。兩套系統(tǒng)都是功能完善的,并且正在運(yùn)行的系統(tǒng)兼呵,只是系統(tǒng)版本和對外服務(wù)情況不同兔辅。正在對外提供服務(wù)的老系統(tǒng)是綠色系統(tǒng),新部署的系統(tǒng)是藍(lán)色系統(tǒng)击喂。

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

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

藍(lán)色系統(tǒng)經(jīng)過反復(fù)的測試沸柔、修改、驗(yàn)證铲敛,確定達(dá)到上線標(biāo)準(zhǔn)之后褐澎,直接將用戶切換到藍(lán)色系統(tǒng), 切換后的一段時間內(nèi),依舊是藍(lán)綠兩套系統(tǒng)并存伐蒋,但是用戶訪問的已經(jīng)是藍(lán)色系統(tǒng)工三。這段時間內(nèi)觀察藍(lán)色系統(tǒng)(新系統(tǒng))工作狀態(tài),如果出現(xiàn)問題先鱼,直接切換回綠色系統(tǒng)徒蟆。

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

藍(lán)綠發(fā)布特點(diǎn)

  1. 藍(lán)綠部署的目的是減少發(fā)布時的中斷時間绷落、能夠快速撤回發(fā)布姥闪。

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

藍(lán)綠發(fā)布注意事項(xiàng)

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

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

  • 可能會出現(xiàn)需要同時處理“微服務(wù)架構(gòu)應(yīng)用”和“傳統(tǒng)架構(gòu)應(yīng)用”的情況账锹,如果在藍(lán)綠部署中協(xié)調(diào)不好這兩者,還是有可能會導(dǎo)致服務(wù)停止坷襟。
  • 需要提前考慮數(shù)據(jù)庫與應(yīng)用部署同步遷移 /回滾的問題奸柬。
  • 藍(lán)綠部署需要有基礎(chǔ)設(shè)施支持。
  • 在非隔離基礎(chǔ)架構(gòu)( VM 婴程、 Docker 等)上執(zhí)行藍(lán)綠部署廓奕,藍(lán)色環(huán)境和綠色環(huán)境有被摧毀的風(fēng)險。

滾動發(fā)布

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

發(fā)布流程:

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

滾動發(fā)布特點(diǎn)

  1. 這種部署方式相對于藍(lán)綠部署尉尾,更加節(jié)約資源——它不需要運(yùn)行兩個集群、兩倍的實(shí)例數(shù)埃儿。我們可以部分部署卡睦,例如每次只取出集群的20%進(jìn)行升級宴胧。

  2. 回滾困難

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

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

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

  3. 回滾困難仪或。舉個例子,在某一次發(fā)布中士骤,我們需要更新100個實(shí)例范删,每次更新10個實(shí)例,每次部署需要5分鐘拷肌。當(dāng)滾動發(fā)布到第80個實(shí)例時到旦,發(fā)現(xiàn)了問題,需要回滾巨缘,這個回滾卻是一個痛苦添忘,并且漫長的過程。

  4. 有的時候带猴,我們還可能對系統(tǒng)進(jìn)行動態(tài)伸縮昔汉,如果部署期間,系統(tǒng)自動擴(kuò)容/縮容了拴清,我們還需判斷到底哪個節(jié)點(diǎn)使用的是哪個代碼靶病。盡管有一些自動化的運(yùn)維工具,但是依然令人心驚膽戰(zhàn)口予。

  5. 因?yàn)槭侵鸩礁侣χ埽敲次覀冊谏暇€代碼的時候,就會短暫出現(xiàn)新老版本不一致的情況沪停,如果對上線要求較高的場景煤辨,那么就需要考慮如何做好兼容的問題。

灰度發(fā)布

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

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

17世紀(jì)东涡,英國礦井工人發(fā)現(xiàn),金絲雀對瓦斯這種氣體十分敏感倘待〈埽空氣中哪怕有極其微量的瓦斯,金絲雀也會停止歌唱凸舵;而當(dāng)瓦斯含量超過一定限度時祖娘,雖然魯鈍的人類毫無察覺,金絲雀卻早已毒發(fā)身亡啊奄。當(dāng)時在采礦設(shè)備相對簡陋的條件下渐苏,工人們每次下井都會帶上一只金絲雀作為“瓦斯檢測指標(biāo)”,以便在危險狀況下緊急撤離菇夸。

過程:

  1. 準(zhǔn)備好部署各個階段的工件琼富,包括:構(gòu)建工件,測試腳本庄新,配置文件和部署清單文件鞠眉。

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

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

  4. 升級“金絲雀”應(yīng)用(排掉原有流量并進(jìn)行部署)械蹋。

  5. 對應(yīng)用進(jìn)行自動化測試。

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

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

A/B測試

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

藍(lán)綠發(fā)布步做、滾動發(fā)布和金絲雀是發(fā)布策略副渴,目標(biāo)是確保新上線的系統(tǒng)穩(wěn)定,關(guān)注的是新系統(tǒng)的BUG全度、隱患煮剧。

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

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

A/B測試時宰闰,線上同時運(yùn)行多個版本的服務(wù)茬贵,這些服務(wù)通常會有一些體驗(yàn)上的差異,譬如說頁面樣式移袍、顏色解藻、操作流程不同。相關(guān)人員通過分析各個版本服務(wù)的實(shí)際效果葡盗,選出效果最好的版本螟左。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市觅够,隨后出現(xiàn)的幾起案子胶背,更是在濱河造成了極大的恐慌,老刑警劉巖蔚约,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奄妨,死亡現(xiàn)場離奇詭異,居然都是意外死亡苹祟,警方通過查閱死者的電腦和手機(jī)砸抛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來树枫,“玉大人直焙,你說我怎么就攤上這事∩扒幔” “怎么了奔誓?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搔涝。 經(jīng)常有香客問我厨喂,道長,這世上最難降的妖魔是什么庄呈? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任蜕煌,我火速辦了婚禮,結(jié)果婚禮上诬留,老公的妹妹穿的比我還像新娘斜纪。我一直安慰自己贫母,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布盒刚。 她就那樣靜靜地躺著腺劣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪因块。 梳的紋絲不亂的頭發(fā)上橘原,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音涡上,去河邊找鬼靠柑。 笑死,一個胖子當(dāng)著我的面吹牛吓懈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播靡狞,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼耻警,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了甸怕?” 一聲冷哼從身側(cè)響起甘穿,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梢杭,沒想到半個月后温兼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡武契,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年募判,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咒唆。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡届垫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出全释,到底是詐尸還是另有隱情装处,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布浸船,位于F島的核電站妄迁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏李命。R本人自食惡果不足惜登淘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望项戴。 院中可真熱鬧形帮,春花似錦槽惫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至合冀,卻和暖如春各薇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背君躺。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工峭判, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棕叫。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓林螃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親俺泣。 傳聞我的和親對象是個殘疾皇子疗认,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容