隨著時代的發展,移動(dòng)辦公已(yǐ)經成為了常態,大家也越來越離不開手機,微信、QQ、網遊、郵(yóu)件、電話會議等等,網絡通信(xìn)幾乎一刻都不能中(zhōng)斷。對(duì)於電信運營商來說,繳費、充值、複機等關鍵應用幾乎不(bú)能中斷,否則就會導致終端(duān)用戶無法使用手機業務,引(yǐn)起客戶的投訴。然而(ér)軟(ruǎn)件產品出現故障有時候又是不可(kě)避免的,出現故障(zhàng)的原因(yīn)也是五花八門,有網絡的,有硬件的,有中間價的,有數據庫的等等(děng),因而實現這(zhè)一目標並非易事。
本文重點闡述計費領域在高可用方麵的一些思考和實踐。
軟件係統的高可用架構演進通常經曆以下幾(jǐ)個階段:
單點故障:初始階段,係統中存在單點故障,即某個關鍵組件(jiàn)或服務的(de)故(gù)障會導致(zhì)整個(gè)係統不可用。
水平擴展(zhǎn):通過增加更多的節點來擴展係統的處理能力和容量(liàng)。水平擴展可以通過添加更多的服務器、分(fèn)布式存儲或數據庫節點(diǎn)來實現。
負載均(jun1)衡:引入(rù)負(fù)載(zǎi)均衡器,將流量均勻地分發到多個節點上,以避免單個節點(diǎn)過載。負載(zǎi)均衡器還可以檢測節點的健康狀態,並在節(jiē)點故障時自動將流量轉移到其他健康節點上。
冗(rǒng)餘(yú)備(bèi)份:為了提高可用性,引入冗餘備份的概念。通過複製關鍵組件或服務,當一個節點故障時(shí),可以切換到備份節點繼續提供服務。
容錯(cuò)設計:在架構中引入容錯機製(zhì),以應對節(jiē)點故障(zhàng)或網絡故障。例如,使用多個數據中心進行跨(kuà)區(qū)域備份和容災(zāi),或者使用分布式存(cún)儲和數據庫係(xì)統來實現數據的冗餘和恢複(fù)能力。
自動化運維:引入自動化工(gōng)具和流程,減少人工幹預,提高係統(tǒng)的可靠性和可恢複性。自動化運維可以包括自動監控、故障檢測和恢複、自動擴展(zhǎn)等。
2019年(nián),中國電信完成了BSS3.0係統的升級改造,實現了全麵(miàn)去IOE,全麵引進中國電信集(jí)團的各種組件,包括分布式數據庫(kù)組件、分布式消息中間件、分布式緩存、分布式文件係統、微服務框(kuàng)架等,全麵實現了分布式架構的提升,在係統高可用方麵實現了全麵的提(tí)升,已經基本上解決了單點故障、水平擴展(zhǎn)、負載均衡等能力。但是隨著係統引入的分(fèn)布式組件越來越多,係統架構越來越複雜,不可避免的會引入一些新的問(wèn)題,比如分布(bù)式組件集群出現問題時,如何能夠做(zuò)到業務(wù)的永不中斷呢?比(bǐ)如數據庫變(biàn)慢,分布(bù)式內存數據庫出(chū)現問題,該如何確保充值能夠及時複機?
針對這些影響高可用的問題,先(xiān)思考下(xià)策略(luè):
數據庫變慢了,數據庫(kù)短時不可用,該怎麽辦?可不可以脫庫(kù)運行呢?能不能把數據加(jiā)載到分布式內存數(shù)據庫,減少對數據庫的依賴?
分布式內存數據庫也不行了怎麽辦?能不能多部署一套(tào)分布式內存數(shù)據庫,實現藍綠(lǜ)部署?
分布式(shì)消息中間件、分布式緩存不行了怎麽辦(bàn)?能不(bú)能多部署一套,實現一鍵切換呢?
如何(hé)做到一鍵切換(huàn)呢?當前係統中有多(duō)種方式實現(xiàn)參數配置,有在業務代碼中的(de),有(yǒu)在參數(shù)組(zǔ)件中的,有(yǒu)在共享內存中的,能否引入配置中心(xīn),實現一點配(pèi)置即時生效呢?
根據上述的(de)一(yī)些(xiē)思考和(hé)細化討論,形成了關鍵(jiàn)解決方案和舉措:
充值複機全內存化,徹底避免了Teledb/TelePG/TeleHTAP等物理庫異常帶來(lái)的故障風險,提升(shēng)了充值服務的性能及穩定性。
異常異步充值,充值服務異常時(shí)先返回充值成功,觸發異步(bù)充值重(chóng)試,屏蔽充值(zhí)服(fú)務異常報錯時對用戶的直接(jiē)感知。
綠色複機通道,通過充值端(duān)到端消(xiāo)息追蹤實時監測充值業務異常,針對係(xì)統環節異常積壓造成的複機不及時場景(jǐng),優先保障充值用戶(hù)及時複機,避免用戶投(tóu)訴。
藍綠故障(zhàng)轉移,針對PAAS組件集群級故障,包括資料內存庫集群、CTGMQ集群、CTGCache集群異常時,自動觸發藍綠自動切換,保障充值服務不(bú)受影響。

充值&衝賬全內存化,脫離對(duì)TelePG和TeleDB的依賴,從而避免分布式事務問題(tí),以及(jí)防止物理庫故障或並發性能波動影響充值服務,提升充(chōng)值服務的性能及穩定性。

充值、衝賬、餘額預占(zhàn)、快速(sù)複機等服務中涉及到資料查詢、餘額(é)欠(qiàn)費、收費記(jì)錄、接口流水、餘額來源支(zhī)出、餘額(é)支出明細、未打單記錄等均需(xū)要進行內存化。通過(guò)MDB的持久(jiǔ)化服務(wù)同步數據到物理庫。
充值複機任何環節出現異常時,先(xiān)觸發用戶綠通複機,保障(zhàng)用戶及時複機,不影(yǐng)響用戶的(de)業務使用。
針對充(chōng)值到賬不及時場景,異步自動重試補充值。
充值到複機端到端流程進行jaeger調用鏈埋點,實時(shí)監控從充值到賬及複機處理的及(jí)時率,針對端到端時延超過閥值的充(chōng)值交易(yì)記錄,觸發告警並自動啟用綠色通道先行開機,平均複機及(jí)時率達到(dào)一定閥值時全麵開(kāi)啟綠色(sè)通道。

充值複機綠色通道監控大屏
方案關鍵亮點如下:
充值異常監測服務,實時監測充值端到端日誌,識別異常工單實(shí)時自動觸(chù)發綠色通(tōng)道開機。
充值到賬(zhàng)不及時(shí):以集團充值接口日誌(zhì)和GPRC充值(zhí)成功日誌(覆蓋全渠道)為基準時間,3分鍾內沒有充值成功日誌,調用openapi補充值。
複機處理不及時(shí):以集團(tuán)充值接口日誌和GPRC充值成(chéng)功日誌(覆蓋全渠(qú)道)為基準時間,在3分鍾內沒有(yǒu)查詢到快(kuài)速複機或者(zhě)信控(kòng)處理的消息,觸發綠(lǜ)色通道直接複機。
複機(jī)工(gōng)單發送不及時:以快速複機或信控處理日誌複機工單日誌為基準時間,在3分鍾內沒有查詢到複(fù)機發送的日誌,則(zé)記錄充值複機異常工單,觸發綠色通道直接複機。
綠色通道開(kāi)機服(fú)務(wù)均不能依賴業務係統使用的組件和數據庫,覆(fù)蓋全充值渠道及複機(jī)工單發送異常(cháng)的場景。
通過充值業務監控大屏,實時監控各渠道充值業務情況,直觀展示係統端(duān)到端各環節性能、積壓及異常情況,以及綠色通道服(fú)務情況。支持人工一鍵開通(tōng)綠色(sè)通道。
MDB資料庫、 CTGMQ、CTGCACHE采用雙集群互備(bèi),業務應用服務采用藍綠部署,PAAS組件集群級異常時,故障自動轉移、藍綠一鍵切換。

MDB資料(liào)庫通過資料刷新應用雙邊刷新,保障兩套MDB資料庫集群的數據一致性。
CTGCACHE通過參(cān)數(shù)刷新應用(yòng),在參數發生變更時兩套集群同時刷(shuā)新。
CTMMQ集(jí)群藍綠各自使用一套集群,集群間不做數據同步,藍綠兩套MQ消費者各自消費各自的MQ集(jí)群。
接(jiē)口層(céng)服務保持一套:僅啟動時依賴數據(jù)庫,運行過程中不依賴(lài)數據庫、MQ、CACHE組件,無需藍綠部署。
Dubbo服務、Grpc服務、MQ消費者服務采用(yòng)藍綠部署,分別連接藍綠兩套的MDBCUST、CTGMQ、CTGCACHE集群,可(kě)通過istio服務網格的服務路由規則,實現藍綠服務(wù)負載均衡。
故障自動轉移(yí)、藍綠一鍵切換:當發生MDB資料庫、CTGMQ、CTGCache集群級異常(cháng)時,配(pèi)置istio的故障自動轉移規則,故障服務自(zì)動熔斷,業務路由自動轉移到正常服務;通過健康探(tàn)針機製(zhì)實現服務故障自愈,並自動恢複業務路由(yóu)。當故障短期無法恢複時,通過修(xiū)改istio路由規則,人工(gōng)一鍵藍綠切(qiē)換。
通(tōng)過Istio控製(zhì)藍(lán)綠路由策(cè)略,支持默(mò)認三種路由策(cè)略,三種策略可以一鍵切換:
自動負載均衡,故障自動轉移(推薦)
全部路由到藍色服務
全部路由到綠色(sè)服務
賬務中心監控(kòng)大屏,實時(shí)檢測IAAS、PAAS、SAAS三層立體監控,實時檢測藍綠業務流量負載及業務服務情況,異常時一鍵切換(huàn)。

第一層:監控(kòng)各個應用服務的情況,包括(kuò)調用(yòng)成功率、實時調用量、性能時延及(jí)服務狀態等關鍵指(zhǐ)標,異常時紅色預(yù)警;按充值、查詢、發(fā)票、其(qí)他(tā)四(sì)類業(yè)務(wù)類別分別展示藍綠服務各自的情況,以及(jí)藍(lán)綠當前(qián)實(shí)時業務流量總(zǒng)占比(bǐ)。
第二層:監(jiān)控MDB、MQ、CACHE、UDAL等數據庫及PAAS組件的狀態、訪問量等指標,異常時紅色預警;
第三層:監控各個PAAS組件、數據庫及應用主機的情況(kuàng),對於主機CPU、內存、IO及主(zhǔ)機狀態進行監控,當主(zhǔ)機異常時可以紅色(sè)預警。
通過賬務中心監控(kòng)大(dà)屏,可(kě)鏈接到各PAAS組件及應用監控的子屏,進行更詳細(xì)的指標監控
主機監控:展示包括數據庫、PAAS組件(jiàn)及應用主(zhǔ)機等所(suǒ)有主機的詳細監控指標,快速發現主機故障問題,並生成預(yù)警。
MQ集群監控:實時檢測 MQ集群的消息生產和消費情況(kuàng)。
CtgCache集群(qún)監控:實時檢測cache集群(qún)的訪問量及內存使用率等情況(kuàng)
MDB集群監控:實時檢測MDB集群的連接數、服務(wù)狀態、讀寫性能、持久化、刷新積壓等各類指標。
賬務中心服務(wù)性能監控:檢測賬務中心各渠道各層級服務的交易量、性能時延、成(chéng)功率等關鍵指標,快速定位異常(cháng)服務。
充值業務監(jiān)控大屏
通過以(yǐ)上的服務內(nèi)存化、綠色通道以及(jí)藍綠(lǜ)部署等舉措,實現了国产亚洲熟妇在线视频科(kē)技新一代賬務係(xì)統的高(gāo)可用,保障(zhàng)充值複機業務的永不間斷。