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