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