張超 劉學(xué)軍 王國環(huán) 王全江
近年來,隨著互聯(lián)網(wǎng)技術(shù)的飛速迭代和數(shù)字化轉(zhuǎn)型的推進(jìn),數(shù)字化系統(tǒng)作為企業(yè)業(yè)務(wù)發(fā)展的基礎(chǔ)設(shè)施之一,各企業(yè)紛紛擁抱新技術(shù)對老舊系統(tǒng)進(jìn)行改造升級,強(qiáng)化對系統(tǒng)的自主掌控能力,與此同時,由于早期的技術(shù)方案以單點煙囪式為主,系統(tǒng)繁多,給老舊系統(tǒng)的升級改造帶來了較大的挑戰(zhàn),在數(shù)字化系統(tǒng)的升級和改造中,通常需要系統(tǒng)停機(jī)、數(shù)據(jù)備份、系統(tǒng)遷移等操作,這些操作會帶來數(shù)據(jù)丟失、業(yè)務(wù)異常、賬務(wù)差錯、系統(tǒng)回退等問題,這些問題對于金融類服務(wù)系統(tǒng)尤其敏感。為了解決這些問題,業(yè)務(wù)不間斷架構(gòu)升級改造方案應(yīng)運而生。該方案可以在客戶無感知的情況下進(jìn)行架構(gòu)升級和改造,保證業(yè)務(wù)的連續(xù)性和數(shù)據(jù)的完整性。
中國聯(lián)通財務(wù)公司承接集團(tuán)委托,將金融業(yè)務(wù)能力與科技研發(fā)能力有機(jī)結(jié)合,在財務(wù)公司行業(yè)率先以云原生技術(shù)、微服務(wù)架構(gòu)體系,打造了富有聯(lián)通特色的“司庫系統(tǒng)及金融服務(wù)平臺”。
平臺建設(shè)初期,考慮到云原生底座的成熟度和網(wǎng)絡(luò)安全防護(hù)能力,為全面保障系統(tǒng)安全,在設(shè)計思路上,采用了“金融與非金融服務(wù)隔離”的原則,雖然在最大程度上保障了系統(tǒng)安全,但是其代價是犧牲了部分資源的利用率,在部署架構(gòu)上,分為若干個自治集群,每個集群各自治理集群內(nèi)的資源。隨著云原生底座自身能力的迭代提升,原來為保障安全而分為多個集群的部署架構(gòu)在新的技術(shù)模式下,逐步暴露出資源調(diào)度靈活性不足,服務(wù)器資源使用效率降低的缺點。與此同時,在舊的架構(gòu)下,每次迭代升級均面臨著系統(tǒng)之間交互復(fù)雜、每次均需停機(jī)維護(hù)、業(yè)務(wù)中斷、升級過程中經(jīng)常回退的痛點.為進(jìn)一步提高部署效率,盤活資源使用效率,提高客戶滿意度,研發(fā)團(tuán)隊經(jīng)過審慎調(diào)研、周密計劃,制定了詳細(xì)的融合割接方案,實現(xiàn)了業(yè)務(wù)不間斷前提下的多集群合并的架構(gòu)升級。
(一)方案介紹
基于服務(wù)質(zhì)量、數(shù)據(jù)同步、系統(tǒng)安全考慮,研發(fā)團(tuán)隊制定出如下兩個備選方案:
1.增量式架構(gòu)升級
即將架構(gòu)升級分為多個步驟進(jìn)行,每一步驟只合并兩個集群,測試通過后再進(jìn)行下一步驟,以此類推。這樣可以降低整個架構(gòu)升級的風(fēng)險,避免由于一次性修改過多功能導(dǎo)致系統(tǒng)崩潰等問題。
2.基于藍(lán)綠部署的架構(gòu)升級
在架構(gòu)升級前,劃分為藍(lán)綠兩個區(qū)域,并在藍(lán)綠區(qū)前置負(fù)載均衡器,用于控制流量切換,其中,綠區(qū)為完全空白服務(wù)器,部署統(tǒng)一的云原生管理底座,后逐步將藍(lán)區(qū)內(nèi)應(yīng)用遷移至綠區(qū),經(jīng)過充分測試后,通過負(fù)載均衡器逐步往綠區(qū)切入流量,直至全部切換完成。
(二)方案對比
1.增量式架構(gòu)升級
增量式架構(gòu)升級是指將當(dāng)前集群進(jìn)行編號A\B\ C\D,集群前置負(fù)載均衡器,首先完成A和B集群的合并,即將B集群的應(yīng)用部署至A集群,通過負(fù)載均衡器逐步將B集群的流量切換至A集群,切換完畢后B集群服務(wù)器拆除,資源并入A集群,以此類推,將C和D集群逐步合并至A集群。
本方案優(yōu)點如下:
(1)分步合并降低了架構(gòu)升級的整體風(fēng)險,發(fā)生問題后,影響范圍可控,回退方案簡單。
(2)將整個架構(gòu)升級分為多個階段進(jìn)行,每個階段只修改一小部分的功能。在每個階段結(jié)束后,需要進(jìn)行測試和驗證,確保該部分功能的穩(wěn)定性和正確性。
本方案缺點如下:
(1)時間周期長:每次合并均需制定詳細(xì)的升級方案,步驟繁瑣,而且需要經(jīng)過一定周期的測試和驗證,最終完成的時間周期長。
(2)內(nèi)部調(diào)用改造方案復(fù)雜:前端負(fù)載均衡器雖然能夠分發(fā)流量,但是主要分發(fā)的是外部訪問的流量,與此同時,在微服務(wù)架構(gòu)下,服務(wù)與服務(wù)之間存在大量的頻繁相互調(diào)用,屬于內(nèi)部交互范疇,在集群合并并行過程中,存在同一個服務(wù)部署在不同集群內(nèi)的情況,對于調(diào)用方,調(diào)用哪個服務(wù)需要預(yù)先提前指定,客觀上增加了集群合并的方案復(fù)雜度。
2.基于藍(lán)綠部署的架構(gòu)升級
基于藍(lán)綠部署的架構(gòu)升級方案需要劃分兩個區(qū),一個區(qū)為當(dāng)前正在運行的藍(lán)區(qū),另一個區(qū)為升級后的綠區(qū),其中綠區(qū)為完全空白服務(wù)器,基于統(tǒng)一的云原生底座,將藍(lán)區(qū)所有的應(yīng)用一次性部署至綠區(qū),從應(yīng)用維度藍(lán)綠區(qū)保持完全一致,實現(xiàn)藍(lán)綠區(qū)雙活,同時發(fā)揮前端負(fù)載均衡器的作用,將用戶訪問流量按照訪問來源IP或訪問目標(biāo)IP等策略逐步分流至綠區(qū),直至完全切換。
本方案優(yōu)點如下:
(1)通過藍(lán)綠區(qū)的方式,避免了分步合并,實施周期短。
(2)由于采用的是藍(lán)綠區(qū)雙活的方式,可以按照不同的分流策略靈活分流,引流過程中可以隨時在客戶無感知狀態(tài)下靈活回退至藍(lán)區(qū)。
(3)規(guī)避了微服務(wù)內(nèi)調(diào)用的復(fù)雜度,藍(lán)區(qū)和綠區(qū)只在本區(qū)內(nèi)調(diào)用。
(4)采用應(yīng)用與數(shù)據(jù)分離方案,規(guī)避了數(shù)據(jù)同步的復(fù)雜度。
本方案缺點如下:
由于綠區(qū)為全新服務(wù)器,需要在當(dāng)前部署架構(gòu)內(nèi),將各集群內(nèi)冗余服務(wù)器資源逐步拆除后部署至綠區(qū),綠區(qū)自身服務(wù)器資源在應(yīng)對業(yè)務(wù)高峰期存在困難。
(三)部署架構(gòu)方案選擇
通過對比增量式架構(gòu)升級方案和基于藍(lán)綠區(qū)部署架構(gòu)升級方案,最終研發(fā)團(tuán)隊選擇基于藍(lán)綠區(qū)部署架構(gòu)升級的方案。
具體操作步驟為:劃定藍(lán)區(qū),即原有生產(chǎn)環(huán)境資源所有應(yīng)用服務(wù)構(gòu)成的區(qū)域;劃定綠區(qū),使用新服務(wù)器設(shè)備搭建一套全新的運行環(huán)境,部署新的k8s集群,部署一套完整的司庫系統(tǒng)及金融服務(wù)平臺服務(wù)構(gòu)成綠區(qū);在綠區(qū)部署完應(yīng)用后,先在測試環(huán)境進(jìn)行全面驗證,驗證通過后再部署到生產(chǎn)環(huán)境;然后在藍(lán)區(qū)部署用戶流量切換網(wǎng)關(guān),藍(lán)區(qū)和綠區(qū)并行運行,通過流量切換網(wǎng)關(guān)控制用戶流量精準(zhǔn)控制,部分目標(biāo)用戶訪問流量切換到綠區(qū),觀察綠區(qū)業(yè)務(wù)運行情況,有問題隨時將流量切回藍(lán)區(qū);實施過程中數(shù)據(jù)庫、平臺中間件及容器云平臺保持一套,不涉及數(shù)據(jù)庫數(shù)據(jù)移植;為實現(xiàn)藍(lán)綠區(qū)并行處理,文件存儲區(qū)需進(jìn)行藍(lán)綠區(qū)域共享,將業(yè)務(wù)文件從原藍(lán)區(qū)存儲轉(zhuǎn)移到藍(lán)綠共享區(qū)。
(一)實踐步驟
第一步制定升級計劃,整個實施工作分為四個里程碑階段:部署驗證期,生產(chǎn)環(huán)境部署期,新老環(huán)境并行期,新環(huán)境獨立運行期;第二步數(shù)據(jù)備份,實施前進(jìn)行數(shù)據(jù)備份,確保業(yè)務(wù)的連續(xù)性和數(shù)據(jù)的完整性;第三步測試驗證,在完成升級改造后,進(jìn)行測試驗證,確保升級改造后系統(tǒng)的穩(wěn)定性和高效性;第四步收尾,待業(yè)務(wù)全部切換到綠區(qū)后,將藍(lán)區(qū)的服務(wù)器逐步摘離并逐步加入到綠區(qū),同時關(guān)閉之前為架構(gòu)升級開通的網(wǎng)絡(luò)策略。
(二)實踐結(jié)果
通過實施后的生產(chǎn)運行實踐,業(yè)務(wù)不間斷部署架構(gòu)升級改造方案取得了良好的效果。具體結(jié)果如下:
第一,實現(xiàn)了應(yīng)用的100%容器化云化部署,降低了運維復(fù)雜程度,減少生產(chǎn)環(huán)境部署類型,簡化了運維流程,降低了運維難度;實現(xiàn)統(tǒng)一運維,容器化部署使得各類應(yīng)用可以在同一平臺進(jìn)行部署與管理,實現(xiàn)了統(tǒng)一的運維管理,提升了運維管理效率;。
第二,提高資源使用效率,通過容器云平臺實現(xiàn)對計算資源及存儲資源的統(tǒng)一管理,優(yōu)化資源取用粒度,提高資源使用效率。通過架構(gòu)升級,節(jié)省物理資源1/3以上。
本文介紹了業(yè)務(wù)不間斷部署架構(gòu)升級改造方案,針對現(xiàn)有系統(tǒng)升級改造過程中可能出現(xiàn)的業(yè)務(wù)中斷和數(shù)據(jù)丟失等問題,提出了基于藍(lán)綠部署的升級改造方案。通過實踐,該方案取得了良好的效果,確保了業(yè)務(wù)的連續(xù)性和數(shù)據(jù)的完整性,同時,該方案還可以作為后續(xù)灰度發(fā)布的基礎(chǔ)架構(gòu),進(jìn)一步提高運維效率。
在實際業(yè)務(wù)中,業(yè)務(wù)不間斷部署架構(gòu)升級改造方案具有重要意義,可以有效提升系統(tǒng)的穩(wěn)定性和高效性,滿足業(yè)務(wù)需求,提升用戶體驗,為企業(yè)發(fā)展提供有力支持。