隨著時代的發展,移動辦公已經成為了常態,大家也越來越離不開手機,微信、QQ、網游、郵件、電話會議等等,網絡通信幾乎一刻都不能中斷。對于電信運營商來說,繳費、充值、復機等關鍵應用幾乎不能中斷,否則就會導致終端用戶無法使用手機業務,引起客戶的投訴。然而軟件產品出現故障有時候又是不可避免的,出現故障的原因也是五花八門,有網絡的,有硬件的,有中間價的,有數據庫的等等,因而實現這一目標并非易事。
本文重點闡述計費領域在高可用方面的一些思考和實踐。
軟件系統的高可用架構演進通常經歷以下幾個階段:
單點故障:初始階段,系統中存在單點故障,即某個關鍵組件或服務的故障會導致整個系統不可用。
水平擴展:通過增加更多的節點來擴展系統的處理能力和容量。水平擴展可以通過添加更多的服務器、分布式存儲或數據庫節點來實現。
負載均衡:引入負載均衡器,將流量均勻地分發到多個節點上,以避免單個節點過載。負載均衡器還可以檢測節點的健康狀態,并在節點故障時自動將流量轉移到其他健康節點上。
冗余備份:為了提高可用性,引入冗余備份的概念。通過復制關鍵組件或服務,當一個節點故障時,可以切換到備份節點繼續提供服務。
容錯設計:在架構中引入容錯機制,以應對節點故障或網絡故障。例如,使用多個數據中心進行跨區域備份和容災,或者使用分布式存儲和數據庫系統來實現數據的冗余和恢復能力。
自動化運維:引入自動化工具和流程,減少人工干預,提高系統的可靠性和可恢復性。自動化運維可以包括自動監控、故障檢測和恢復、自動擴展等。
2019年,中國電信完成了BSS3.0系統的升級改造,實現了全面去IOE,全面引進中國電信集團的各種組件,包括分布式數據庫組件、分布式消息中間件、分布式緩存、分布式文件系統、微服務框架等,全面實現了分布式架構的提升,在系統高可用方面實現了全面的提升,已經基本上解決了單點故障、水平擴展、負載均衡等能力。但是隨著系統引入的分布式組件越來越多,系統架構越來越復雜,不可避免的會引入一些新的問題,比如分布式組件集群出現問題時,如何能夠做到業務的永不中斷呢?比如數據庫變慢,分布式內存數據庫出現問題,該如何確保充值能夠及時復機?
針對這些影響高可用的問題,先思考下策略:
數據庫變慢了,數據庫短時不可用,該怎么辦?可不可以脫庫運行呢?能不能把數據加載到分布式內存數據庫,減少對數據庫的依賴?
分布式內存數據庫也不行了怎么辦?能不能多部署一套分布式內存數據庫,實現藍綠部署?
分布式消息中間件、分布式緩存不行了怎么辦?能不能多部署一套,實現一鍵切換呢?
如何做到一鍵切換呢?當前系統中有多種方式實現參數配置,有在業務代碼中的,有在參數組件中的,有在共享內存中的,能否引入配置中心,實現一點配置即時生效呢?
根據上述的一些思考和細化討論,形成了關鍵解決方案和舉措:
充值復機全內存化,徹底避免了Teledb/TelePG/TeleHTAP等物理庫異常帶來的故障風險,提升了充值服務的性能及穩定性。
異常異步充值,充值服務異常時先返回充值成功,觸發異步充值重試,屏蔽充值服務異常報錯時對用戶的直接感知。
綠色復機通道,通過充值端到端消息追蹤實時監測充值業務異常,針對系統環節異常積壓造成的復機不及時場景,優先保障充值用戶及時復機,避免用戶投訴。
藍綠故障轉移,針對PAAS組件集群級故障,包括資料內存庫集群、CTGMQ集群、CTGCache集群異常時,自動觸發藍綠自動切換,保障充值服務不受影響。
充值&沖賬全內存化,脫離對TelePG和TeleDB的依賴,從而避免分布式事務問題,以及防止物理庫故障或并發性能波動影響充值服務,提升充值服務的性能及穩定性。
充值、沖賬、余額預占、快速復機等服務中涉及到資料查詢、余額欠費、收費記錄、接口流水、余額來源支出、余額支出明細、未打單記錄等均需要進行內存化。通過MDB的持久化服務同步數據到物理庫。
充值復機任何環節出現異常時,先觸發用戶綠通復機,保障用戶及時復機,不影響用戶的業務使用。
針對充值到賬不及時場景,異步自動重試補充值。
充值到復機端到端流程進行jaeger調用鏈埋點,實時監控從充值到賬及復機處理的及時率,針對端到端時延超過閥值的充值交易記錄,觸發告警并自動啟用綠色通道先行開機,平均復機及時率達到一定閥值時全面開啟綠色通道。
充值復機綠色通道監控大屏
方案關鍵亮點如下:
充值異常監測服務,實時監測充值端到端日志,識別異常工單實時自動觸發綠色通道開機。
充值到賬不及時:以集團充值接口日志和GPRC充值成功日志(覆蓋全渠道)為基準時間,3分鐘內沒有充值成功日志,調用openapi補充值。
復機處理不及時:以集團充值接口日志和GPRC充值成功日志(覆蓋全渠道)為基準時間,在3分鐘內沒有查詢到快速復機或者信控處理的消息,觸發綠色通道直接復機。
復機工單發送不及時:以快速復機或信控處理日志復機工單日志為基準時間,在3分鐘內沒有查詢到復機發送的日志,則記錄充值復機異常工單,觸發綠色通道直接復機。
綠色通道開機服務均不能依賴業務系統使用的組件和數據庫,覆蓋全充值渠道及復機工單發送異常的場景。
通過充值業務監控大屏,實時監控各渠道充值業務情況,直觀展示系統端到端各環節性能、積壓及異常情況,以及綠色通道服務情況。支持人工一鍵開通綠色通道。
MDB資料庫、 CTGMQ、CTGCACHE采用雙集群互備,業務應用服務采用藍綠部署,PAAS組件集群級異常時,故障自動轉移、藍綠一鍵切換。
MDB資料庫通過資料刷新應用雙邊刷新,保障兩套MDB資料庫集群的數據一致性。
CTGCACHE通過參數刷新應用,在參數發生變更時兩套集群同時刷新。
CTMMQ集群藍綠各自使用一套集群,集群間不做數據同步,藍綠兩套MQ消費者各自消費各自的MQ集群。
接口層服務保持一套:僅啟動時依賴數據庫,運行過程中不依賴數據庫、MQ、CACHE組件,無需藍綠部署。
Dubbo服務、Grpc服務、MQ消費者服務采用藍綠部署,分別連接藍綠兩套的MDBCUST、CTGMQ、CTGCACHE集群,可通過istio服務網格的服務路由規則,實現藍綠服務負載均衡。
故障自動轉移、藍綠一鍵切換:當發生MDB資料庫、CTGMQ、CTGCache集群級異常時,配置istio的故障自動轉移規則,故障服務自動熔斷,業務路由自動轉移到正常服務;通過健康探針機制實現服務故障自愈,并自動恢復業務路由。當故障短期無法恢復時,通過修改istio路由規則,人工一鍵藍綠切換。
通過Istio控制藍綠路由策略,支持默認三種路由策略,三種策略可以一鍵切換:
自動負載均衡,故障自動轉移(推薦)
全部路由到藍色服務
全部路由到綠色服務
賬務中心監控大屏,實時檢測IAAS、PAAS、SAAS三層立體監控,實時檢測藍綠業務流量負載及業務服務情況,異常時一鍵切換。
第一層:監控各個應用服務的情況,包括調用成功率、實時調用量、性能時延及服務狀態等關鍵指標,異常時紅色預警;按充值、查詢、發票、其他四類業務類別分別展示藍綠服務各自的情況,以及藍綠當前實時業務流量總占比。
第二層:監控MDB、MQ、CACHE、UDAL等數據庫及PAAS組件的狀態、訪問量等指標,異常時紅色預警;
第三層:監控各個PAAS組件、數據庫及應用主機的情況,對于主機CPU、內存、IO及主機狀態進行監控,當主機異常時可以紅色預警。
通過賬務中心監控大屏,可鏈接到各PAAS組件及應用監控的子屏,進行更詳細的指標監控
主機監控:展示包括數據庫、PAAS組件及應用主機等所有主機的詳細監控指標,快速發現主機故障問題,并生成預警。
MQ集群監控:實時檢測 MQ集群的消息生產和消費情況。
CtgCache集群監控:實時檢測cache集群的訪問量及內存使用率等情況
MDB集群監控:實時檢測MDB集群的連接數、服務狀態、讀寫性能、持久化、刷新積壓等各類指標。
賬務中心服務性能監控:檢測賬務中心各渠道各層級服務的交易量、性能時延、成功率等關鍵指標,快速定位異常服務。
充值業務監控大屏
通過以上的服務內存化、綠色通道以及藍綠部署等舉措,實現了浩鯨科技新一代賬務系統的高可用,保障充值復機業務的永不間斷。