數(shù)字化時代,隨著用戶對產(chǎn)品性能和功能要求的不斷提升,應(yīng)用服務(wù)升級成了企業(yè)保持競爭力的關(guān)鍵之一。然而,傳統(tǒng)的應(yīng)用服務(wù)升級往往會給用戶帶來不必要的中斷和不便,這種“傷筋動骨”的升級方式已經(jīng)無法滿足日益增長的用戶需求,如何實現(xiàn)無感知升級,成為了許多企業(yè)亟待解決的難題。
以某企業(yè)數(shù)據(jù)中心與業(yè)務(wù)協(xié)同項目為例,在該項目過程中,形成了以美林網(wǎng)關(guān)為入口,融合多廠商業(yè)務(wù)系統(tǒng)的融合部署架構(gòu),其中美林微服務(wù)應(yīng)用作為基礎(chǔ)服務(wù),支撐其他廠商系統(tǒng)業(yè)務(wù)。
當(dāng)需要升級系統(tǒng)中的服務(wù)時,總會面臨頭疼的問題:
? 影響業(yè)務(wù)正常運行:升級服務(wù)時需要暫停服務(wù),導(dǎo)致用戶的業(yè)務(wù)功能中斷,在復(fù)雜的補(bǔ)丁升級場景中,停機(jī)時間甚至可能長達(dá)一整天。如果新版本服務(wù)出現(xiàn)問題,版本回滾的過程中仍需暫停服務(wù),且時間較長,嚴(yán)重影響業(yè)務(wù)的開展。
? 發(fā)布風(fēng)險增高:服務(wù)升級后,用戶將訪問新版本的服務(wù),由于新功能可能存在未知問題,增加了發(fā)布風(fēng)險,并可能影響整個系統(tǒng)的穩(wěn)定性和可靠性。
那么,如何才能保證在服務(wù)升級的時候,不影響用戶的體驗?zāi)兀?/span>
PART 1、解決方案
為解決傳統(tǒng)升級過程中的業(yè)務(wù)痛點,美林?jǐn)?shù)據(jù)技術(shù)專家團(tuán)隊提供了一套基于網(wǎng)關(guān)服務(wù)和Nacos實現(xiàn)的應(yīng)用服務(wù)無感知升級的解決方案。
△方案框架
01、部署兩個Nginx服務(wù)節(jié)點,通過前置負(fù)載F5代理保證Nginx服務(wù)高可用。部署兩套基礎(chǔ)服務(wù)節(jié)點(網(wǎng)關(guān)服務(wù)、系統(tǒng)管理、流程引擎、定時調(diào)度等),服務(wù)器A和服務(wù)器B上的基礎(chǔ)服務(wù)完全一致。
02、中間件如數(shù)據(jù)庫、Nacos、緩存均采用集群部署方式,基礎(chǔ)服務(wù)節(jié)點連接同一套中間件。
03、下游應(yīng)用服務(wù)基于基礎(chǔ)服務(wù)來實現(xiàn)具體的業(yè)務(wù),下游其他廠商產(chǎn)品以及客戶開發(fā)的二開服務(wù)。這些服務(wù)需要至少部署兩個節(jié)點,這兩個節(jié)點可以是不同版本的應(yīng)用。
按照此部署方案部署后的系統(tǒng)滿足高可用,且支持基礎(chǔ)服務(wù)和應(yīng)用服務(wù)的無感知升級。
1.基礎(chǔ)服務(wù)升級
基礎(chǔ)服務(wù)升級基于前置負(fù)載均衡器流量切換實現(xiàn),網(wǎng)關(guān)服務(wù)限制用戶請求優(yōu)先分發(fā)到本機(jī)應(yīng)用,即請求經(jīng)過服務(wù)器A上的網(wǎng)關(guān)服務(wù)優(yōu)先轉(zhuǎn)發(fā)到服務(wù)器A的系統(tǒng)管理、定時調(diào)度等基礎(chǔ)服務(wù)。
升級前需保證服務(wù)器A、服務(wù)器B應(yīng)用一致,包含服務(wù)版本、服務(wù)配置等。以先升級服務(wù)器B為例,進(jìn)行無感知方案升級流程演示。升級流程如下:
2.應(yīng)用服務(wù)升級
美林?jǐn)?shù)據(jù)技術(shù)專家團(tuán)隊通過版本控制技術(shù),實現(xiàn)了下游業(yè)務(wù)系統(tǒng)應(yīng)用服務(wù)無感知升級。在部署服務(wù)之前,為每個服務(wù)標(biāo)記版本號。用戶來配置訪問不同版本服務(wù)的條件,網(wǎng)關(guān)服務(wù)會根據(jù)請求信息及用戶配置,來實現(xiàn)訪問指定版本的業(yè)務(wù)應(yīng)用服務(wù)。
以根據(jù)客戶端訪問IP為例,演示業(yè)務(wù)系統(tǒng)產(chǎn)品服務(wù)的升級流程:
PART 2、方案價值
1)提高交付效率:升級服務(wù)可以在白天進(jìn)行,而且不需要停機(jī)升級,用戶業(yè)務(wù)也不會中斷,至少可以節(jié)省50%的升級時間。
2)降低升級風(fēng)險:通過訪問控制技術(shù)可以有效降低風(fēng)險。如果新版本出現(xiàn)問題或錯誤,只會影響到部分用戶,而不會對整個用戶群體造成影響,團(tuán)隊能夠在問題出現(xiàn)時快速回滾或修復(fù),減少潛在的負(fù)面影響。
3)提升系統(tǒng)可用性:采用此方案部署的系統(tǒng),如果運行中某個服務(wù)節(jié)點宕機(jī),可以快速切換到其他可用節(jié)點來保證業(yè)務(wù)正常,而且在升級過程中可以控制部分用戶訪問新版本服務(wù),方便進(jìn)行功能測試、性能測試和負(fù)載測試,可以確保新版本能夠在生產(chǎn)環(huán)境中穩(wěn)定運行,減少潛在的問題和錯誤。
小T總結(jié)
“應(yīng)用服務(wù)無感知升級解決方案”可應(yīng)用于大規(guī)模分布式應(yīng)用服務(wù)的持續(xù)性升級、企業(yè)級應(yīng)用的無縫升級、在線服務(wù)的無中斷更新等場景。不僅可以滿足用戶對零中斷的期望,提升用戶體驗,還可以保證系統(tǒng)的可靠性,減少升級過程中對業(yè)務(wù)的影響,從而促進(jìn)企業(yè)的發(fā)展。