張巍
摘要:目前實(shí)時(shí)消息的服務(wù)能力業(yè)務(wù)種類(lèi)增加,業(yè)務(wù)量大幅提升,對(duì)各相關(guān)系統(tǒng)的要求不斷提高。在系統(tǒng)硬件有限的情況下,一旦短時(shí)業(yè)務(wù)量峰值超負(fù)荷或者某業(yè)務(wù)節(jié)點(diǎn)異常,容易引發(fā)雪崩效應(yīng),導(dǎo)致業(yè)務(wù)流程整體不可用且難以恢復(fù)。經(jīng)過(guò)研究分析,我們提出了一系列方法來(lái)提升實(shí)時(shí)消息服務(wù)能力和恢復(fù):各系統(tǒng)接口具備消息隊(duì)列蓄水能力;增加超時(shí)消息預(yù)判和下游截?cái)喙δ?;?duì)關(guān)鍵系統(tǒng)設(shè)置復(fù)制庫(kù)等。這方法在很大程度上提升消息服務(wù)能力,減少了異常狀況的影響,便于快速維護(hù),快速定位問(wèn)題,同時(shí)避免影響用戶(hù)感知和對(duì)周邊系統(tǒng)造成壓力。
關(guān)鍵詞: 實(shí)時(shí)消息;服務(wù)能力提升;超時(shí)預(yù)判;復(fù)制數(shù)據(jù)
中圖分類(lèi)號(hào):F626.11 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-9129(2018)07-0015-02
Abstract: at present, the service capacity of real-time information is increasing, the business volume is greatly improved, and the requirements of all related systems are constantly improved. In the case of limited system hardware, it is easy to cause the avalanche effect once the peak load of short-term business volume or abnormal business node can cause the whole business process to be unusable and difficult to recover. Through research and analysis, we propose a series of methods to improve the capability and recovery of real-time message service. Increase timeout message anticipation and downstream truncation function; Set up replication libraries for key systems. This method to a large extent promote message service ability, reduce the influence of abnormal conditions, to facilitate rapid maintenance, rapid positioning problem, at the same time to avoid impact the user awareness and pressure on surrounding system.
Key words: real-time information; Service enhancement; Overtime pre-judgment; Copy the data
緒論
中國(guó)電信作為一家全網(wǎng)全業(yè)務(wù)運(yùn)營(yíng)的綜合性運(yùn)營(yíng)商,與中國(guó)移動(dòng)、中國(guó)聯(lián)通三足鼎立。隨著移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展,新型態(tài)支付、電子商務(wù)等更多新業(yè)務(wù)的逐漸成熟,中國(guó)電信上海公司建立了計(jì)費(fèi)運(yùn)營(yíng)網(wǎng)(Billing Operation Network,下面簡(jiǎn)稱(chēng)BON),整合全網(wǎng)各網(wǎng)元的業(yè)務(wù)能力,對(duì)外提供統(tǒng)一接入及標(biāo)準(zhǔn)化服務(wù)能力,為新業(yè)務(wù)的發(fā)展打下基礎(chǔ)。
1 實(shí)時(shí)消息流程現(xiàn)狀分析
1.1 實(shí)時(shí)消息處理流程
實(shí)時(shí)消息按照指定的業(yè)務(wù)流程在新BON網(wǎng)的各個(gè)網(wǎng)元之間流轉(zhuǎn)。網(wǎng)元按照不同的功能分為:數(shù)據(jù)網(wǎng)元,是計(jì)費(fèi)網(wǎng)元中主要提供公共 數(shù)據(jù)訪問(wèn)、變更及同步等數(shù)據(jù)業(yè)務(wù)能力的網(wǎng)元;業(yè)務(wù)網(wǎng)元,是BON中提供各種應(yīng)用類(lèi)業(yè)務(wù)能力的網(wǎng)元;控制網(wǎng)元,負(fù)責(zé)BON的安全、路由、消息轉(zhuǎn)發(fā)、全網(wǎng)配置管理等。Subscriber Server,以下簡(jiǎn)稱(chēng)HSS)的用戶(hù)資料下發(fā)為例,消息會(huì)在全國(guó)中心HSS、全國(guó)中心的業(yè)務(wù)路由(Service Router,以下簡(jiǎn)稱(chēng)SR)、省SR、省HSS之間流轉(zhuǎn),(Credit-Control-Request,以下簡(jiǎn)稱(chēng)CCR)消息至下游網(wǎng)元,等待下游系統(tǒng)返回信用控制應(yīng)答(Credit-Control-Answer,以下簡(jiǎn)稱(chēng)CCA)消息。超過(guò)閾值時(shí)間仍未收到,則判定為超時(shí);正常收到,則解析消息內(nèi)容,根據(jù)返回的結(jié)果碼正?;虍惓_M(jìn)行不同的后續(xù)業(yè)務(wù)處理。對(duì)于中間網(wǎng)元(上例中為全國(guó)中心SR和省SR),監(jiān)聽(tīng)到上游發(fā)來(lái)的CCR消息后,根據(jù)業(yè)務(wù)邏輯判斷下游網(wǎng)元,并向下游轉(zhuǎn)發(fā)CCR消息。超過(guò)閾值時(shí)間未收到CCA消息,則判定為超時(shí),向上游返回標(biāo)識(shí)下游系統(tǒng)超時(shí)的CCA消息;正常收到CCA消息則轉(zhuǎn)發(fā)收到的CCA消息。對(duì)于接收方(上例中為省HSS),監(jiān)聽(tīng)到上游發(fā)來(lái)的CCR消息后,進(jìn)行驗(yàn)證、解密、業(yè)務(wù)處理等工作,根據(jù)業(yè)務(wù)處理結(jié)果,生成處理結(jié)果、業(yè)務(wù)代碼等,組成CCA消息,并進(jìn)行加密、簽名等工作,再將CCA發(fā)送至上游網(wǎng)元。
1.2 目前實(shí)時(shí)消息處理碰到的問(wèn)題及分析
目前在實(shí)時(shí)消息處理的運(yùn)營(yíng)過(guò)程中,發(fā)現(xiàn)存在如下一些問(wèn)題:
1.2.1 業(yè)務(wù)網(wǎng)元由于升級(jí)、維護(hù)等原因需要在升級(jí)窗口進(jìn)行停機(jī)。在停機(jī)期間查詢(xún)等各類(lèi)服務(wù)中斷較多,無(wú)法轉(zhuǎn)發(fā)消息或處理業(yè)務(wù),很大程度上影響了用戶(hù)感知。
1.2.2 各業(yè)務(wù)網(wǎng)元采用簡(jiǎn)單的單隊(duì)列方式進(jìn)行串行消息調(diào)度,消息調(diào)度水平不足,消息處理效率低,擴(kuò)展性、靈活性差,并容易產(chǎn)生積壓、堵塞等問(wèn)題。一旦當(dāng)前消息發(fā)生超時(shí)等異常情況,唯一隊(duì)列里的后續(xù)消息會(huì)越積越多,最終導(dǎo)致隊(duì)列溢出,系統(tǒng)異常。
1.2.3 消息超時(shí)判斷機(jī)制簡(jiǎn)單。目前網(wǎng)元的消息超時(shí)判斷僅僅是在發(fā)出CCR消息后,等待下游返回CCA消息時(shí)判斷消息是否超時(shí)。由于業(yè)務(wù)流程和處理的復(fù)雜性,通常該超時(shí)閾值也設(shè)置的較長(zhǎng)。這導(dǎo)致一條超時(shí)消息會(huì)大幅消耗系統(tǒng)資源,且所有上游網(wǎng)元的系統(tǒng)資源都會(huì)被占用受影響,批量的超時(shí)消息很容隱引發(fā)雪崩效應(yīng)。
上述問(wèn)題都曾引起過(guò)單個(gè)或者多個(gè)系統(tǒng)的異常。“一點(diǎn)接入、服務(wù)全網(wǎng)”的移動(dòng)互聯(lián)網(wǎng)跨地域業(yè)務(wù)需求,要求BON對(duì)外提供穩(wěn)定、可靠、高效的能力封裝調(diào)用,因此實(shí)時(shí)消息服務(wù)能力必須進(jìn)一步的提升。
2 實(shí)時(shí)消息服務(wù)能力提升方法分析研究
根據(jù)對(duì)現(xiàn)狀和問(wèn)題的分析,我們提出從以下幾個(gè)方面來(lái)實(shí)現(xiàn)實(shí)時(shí)消息服務(wù)能力的提升:
2.1 業(yè)務(wù)網(wǎng)元永遠(yuǎn)在線
各個(gè)業(yè)務(wù)網(wǎng)元都不可避免的會(huì)有升級(jí)、系統(tǒng)異常等,按照系統(tǒng)現(xiàn)狀,類(lèi)似情況下必然會(huì)導(dǎo)致系統(tǒng)不可用。針對(duì)此,我們提出網(wǎng)元永遠(yuǎn)在線的思路,解決這一問(wèn)題。而要實(shí)現(xiàn)永遠(yuǎn)在線,主要需要實(shí)現(xiàn)以下兩方面:
2.1.1 數(shù)據(jù)庫(kù)永遠(yuǎn)在線。查詢(xún)類(lèi)消息、業(yè)務(wù)操作類(lèi)消息的主要目的分別是獲取數(shù)據(jù)、更新數(shù)據(jù)。而目前各個(gè)系統(tǒng)的數(shù)據(jù)都是存在數(shù)據(jù)庫(kù)內(nèi)的,因此數(shù)據(jù)庫(kù)永遠(yuǎn)在線是業(yè)務(wù)網(wǎng)元永遠(yuǎn)在線須首要實(shí)現(xiàn)的。用復(fù)制庫(kù)的方法可實(shí)現(xiàn)原數(shù)據(jù)庫(kù)不可用時(shí)的數(shù)據(jù)庫(kù)永遠(yuǎn)在線。復(fù)制庫(kù)的實(shí)現(xiàn)可基于Oracle GoldenGate(OGG)技術(shù)建立復(fù)制庫(kù),復(fù)制庫(kù)數(shù)據(jù)從原有數(shù)據(jù)庫(kù)進(jìn)行“1比1”復(fù)制。各應(yīng)用程序添加復(fù)制庫(kù)以及生產(chǎn)庫(kù)鏈接配置,只需修改配置,通過(guò)腳本實(shí)現(xiàn)一鍵切換生產(chǎn)以及復(fù)制庫(kù),保證對(duì)外無(wú)感知。
2.1.2 應(yīng)用永遠(yuǎn)在線。在數(shù)據(jù)庫(kù)永遠(yuǎn)在線的基礎(chǔ)上,就可實(shí)現(xiàn)應(yīng)用永遠(yuǎn)在線。各個(gè)網(wǎng)元情況不同,需要根據(jù)各自的情況進(jìn)行改進(jìn)來(lái)以支持應(yīng)用永遠(yuǎn)在線。如:主、備機(jī)結(jié)構(gòu),當(dāng)異常時(shí)從主機(jī)HA等方式切換到備機(jī);多機(jī)負(fù)載均衡,當(dāng)其中一臺(tái)主機(jī)升級(jí)或異常時(shí),將該臺(tái)主機(jī)的業(yè)務(wù)配比修改為0,使業(yè)務(wù)消息不轉(zhuǎn)發(fā)到該臺(tái)主機(jī);系統(tǒng)云化,基于云平臺(tái)統(tǒng)一調(diào)度各個(gè)集群,任何一臺(tái)業(yè)務(wù)集群故障,不影響后續(xù)業(yè)務(wù)處理,且在系統(tǒng)升級(jí)時(shí)可實(shí)現(xiàn)按批次灰度發(fā)布。另外為實(shí)現(xiàn)數(shù)據(jù)庫(kù)永遠(yuǎn)在線,應(yīng)用除了自身永遠(yuǎn)在線外,還需具備快速主備動(dòng)切換到數(shù)據(jù)庫(kù)復(fù)制庫(kù)的能力。
業(yè)務(wù)網(wǎng)元永遠(yuǎn)在線可以有效避免系統(tǒng)升級(jí)、異常等內(nèi)部原因?qū)е碌耐耆豢捎茫似陂g還是可能導(dǎo)致處理性能下降。因此系統(tǒng)升級(jí)仍應(yīng)選擇凌晨等系統(tǒng)閑時(shí),而發(fā)生異常時(shí)也需盡可能快的修復(fù),及時(shí)恢復(fù)系統(tǒng)至最大處理能力。
2.2 業(yè)務(wù)網(wǎng)元消息隊(duì)列優(yōu)化
目前各業(yè)務(wù)網(wǎng)元采用簡(jiǎn)單的單一隊(duì)列方式進(jìn)行串行消息調(diào)度,很容易在性能不足或下游異常等情況時(shí)發(fā)生堵塞、擠壓,進(jìn)而導(dǎo)致整個(gè)網(wǎng)元不可用性。對(duì)于網(wǎng)元內(nèi)部消息隊(duì)列的優(yōu)化,可以從隊(duì)列的數(shù)量、隊(duì)列蓄水能力和高低水動(dòng)態(tài)擴(kuò)展等方面進(jìn)行。
除了數(shù)量,還可為消息隊(duì)列增加蓄水能力。當(dāng)上游消息到達(dá)時(shí)不超過(guò)隊(duì)列深度,則接收該消息繼續(xù)處理;如果上游消息到達(dá)時(shí)超過(guò)隊(duì)列深度,立刻返回系統(tǒng)錯(cuò)誤,不再向下游發(fā)送消息,或者丟棄。錯(cuò)誤或被丟棄消息的業(yè)務(wù)會(huì)被發(fā)起方回滾或者一定時(shí)間后重試。消息隊(duì)列作為消息池的蓄水能力,可平衡消息到達(dá)高峰期與非高峰期的消息處理能力,形成錯(cuò)峰,緩解消息到達(dá)高峰期的消息處理壓力。
在多消息隊(duì)列基礎(chǔ)上,還可新增隊(duì)列高低水可動(dòng)態(tài)擴(kuò)展功能進(jìn)行優(yōu)化。業(yè)務(wù)網(wǎng)元的系統(tǒng)消息處理量隨時(shí)間是一個(gè)存在很多個(gè)波峰波谷的隨機(jī)過(guò)程,在消息高峰期需要加大業(yè)務(wù)處理模塊的處理能力,而在波谷期則可以適當(dāng)減少處理能力,將處理資源適量釋放用于處理節(jié)點(diǎn)中的其他業(yè)務(wù)的處理。具體步驟如下:
系統(tǒng)增加高低水監(jiān)控線程,對(duì)CPU、內(nèi)存等主機(jī)資源、業(yè)務(wù)處理進(jìn)程內(nèi)部消息隊(duì)列積壓消息數(shù)進(jìn)行循環(huán)掃描。
在主機(jī)資源滿(mǎn)足的前提下,當(dāng)積壓消息數(shù)超過(guò)高水位閾值的消息隊(duì)列數(shù)超過(guò)總消息隊(duì)列數(shù)百分比閾值(如50%)時(shí)觸發(fā)動(dòng)態(tài)線程擴(kuò)展,通過(guò)創(chuàng)建新處理線程和線程對(duì)應(yīng)消息隊(duì)列,提高整體并發(fā)處理能力,線程擴(kuò)展設(shè)置擴(kuò)展上限(可配置),避免無(wú)限擴(kuò)展。
當(dāng)消息隊(duì)列積壓消息數(shù)低于低水位閾值的隊(duì)列數(shù)超過(guò)總隊(duì)列數(shù)百分比閾值時(shí),動(dòng)態(tài)減少線程數(shù)及對(duì)應(yīng)的消息隊(duì)列,減少后的線程數(shù)不能小于線程數(shù)下限(配置好的線程數(shù)初始值),消息隊(duì)列增加一個(gè)是否不再接收新消息字段,線程的減少通過(guò)先設(shè)置線程對(duì)應(yīng)隊(duì)列的該字段,不再分配消息到該隊(duì)列,等線程處理完已有的消息后,該線程和該消息隊(duì)列銷(xiāo)毀。
以上的高低水位閾值,占總消息隊(duì)列的百分比閾值以及線程數(shù)上、下限值均為可配置參數(shù)。
消息隊(duì)列的優(yōu)化可以在有限的系統(tǒng)資源下盡可能的優(yōu)化資源使用率,智能的進(jìn)行調(diào)度,并增加系統(tǒng)容錯(cuò)率,保證持續(xù)可用。
2.3 消息超時(shí)機(jī)制優(yōu)化
目前的簡(jiǎn)單消息超時(shí)判斷機(jī)制在異常情況下會(huì)占用大量系統(tǒng)時(shí)間,消耗系統(tǒng)資源,擴(kuò)大異常的影響,DCC消息超時(shí)或在消息隊(duì)列中積壓情況下丟棄處理機(jī)制亟待增加完善,因此我們制定了進(jìn)一步的策略加以改進(jìn):
2.3.1 上游消息到達(dá),網(wǎng)元接口接收后,查看消息體內(nèi)容,有時(shí)間信息的,可直接判斷超時(shí)后返回,或者丟棄,不再向下游發(fā)送消息或者執(zhí)行業(yè)務(wù)操作。超時(shí)閾值需要視網(wǎng)元和業(yè)務(wù)而定,因此應(yīng)該是可配置的閾值。
2.3.2 網(wǎng)元接口在向下游發(fā)送消息前,消息體內(nèi)容有時(shí)間信息的也直接判斷是否在自身隊(duì)列中已經(jīng)超時(shí),超時(shí)后直接返回,或者丟棄,不再向下游發(fā)送消息或者執(zhí)行業(yè)務(wù)操作。超時(shí)閾值同樣應(yīng)為可配置閾值。
2.3.3 如消息本身沒(méi)有消息時(shí)間戳或者消息包內(nèi)不具備時(shí)間的,則業(yè)務(wù)網(wǎng)元記錄下消息到達(dá)自身接口的時(shí)間點(diǎn),以此作為判斷超時(shí)的標(biāo)準(zhǔn)。
2.3.4 接口向下游發(fā)送消息后,下游超時(shí)未返回時(shí),向上游返回錯(cuò)誤碼的同時(shí)自動(dòng)殺死該超時(shí)線程,以及時(shí)釋放資源,防止自身服務(wù)夯死或者占用更大量的系統(tǒng)資源。
2.3.5 各個(gè)業(yè)務(wù)網(wǎng)元時(shí)間必須一致,才能用時(shí)間戳準(zhǔn)確進(jìn)行超時(shí)的判斷,因此需要所有系統(tǒng)對(duì)標(biāo)自身服務(wù)器,確認(rèn)是否配置ntp服務(wù),進(jìn)行時(shí)鐘同步。
優(yōu)化后的消息超時(shí)機(jī)制幾乎不會(huì)占用額外的系統(tǒng)資源和系統(tǒng)處理時(shí)間,但在消息超時(shí)的情況下能盡可能提前、優(yōu)化的處理,騰出系統(tǒng)資源處理可正常處理的消息,保證整體流程正常。
3 實(shí)時(shí)消息服務(wù)能力提升的后續(xù)建議
在研究、制定了以上的實(shí)時(shí)消息服務(wù)能力提升的策略后,我們先后在SR、準(zhǔn)實(shí)時(shí)計(jì)費(fèi)系統(tǒng)、計(jì)費(fèi)業(yè)務(wù)網(wǎng)關(guān)、綜合賬務(wù)等系統(tǒng)逐步擴(kuò)大改造范圍,效果明細(xì)。但同時(shí)我們也發(fā)現(xiàn),改造后仍不可避免的還是會(huì)有一些消息被丟棄或返回錯(cuò)誤,如果其中包含受理等操作類(lèi)消息的話,會(huì)對(duì)客戶(hù)體驗(yàn)有較大的影響。因此我們提出如下將來(lái)可能的改進(jìn)方向:
3.1 對(duì)不同的消息設(shè)置不同的優(yōu)先級(jí)。在消息隊(duì)列處理消息時(shí)將優(yōu)先級(jí)和先后順序等統(tǒng)一考慮,在保證整體可用性的前提下,保證受理等操作類(lèi)消息優(yōu)先于查詢(xún)類(lèi)消息,發(fā)生異常必須丟棄時(shí)先丟棄優(yōu)先級(jí)較低的查詢(xún)類(lèi)消息。
3.2 查詢(xún)受理分離。受理類(lèi)業(yè)務(wù)從主數(shù)據(jù)庫(kù)進(jìn)行操作,原查詢(xún)功能從復(fù)制庫(kù)獲取數(shù)據(jù)進(jìn)行改造。受理類(lèi)和查詢(xún)類(lèi)的消息隊(duì)列也相互分離,互不影響。由于通常查詢(xún)類(lèi)消息的數(shù)量遠(yuǎn)大于受理類(lèi)消息,避免查詢(xún)類(lèi)的消息峰值對(duì)受理造成沖擊。
上述建議由于消息的具體種類(lèi)、業(yè)務(wù)場(chǎng)景繁多,受理和查詢(xún)等各類(lèi)消息數(shù)量不均衡等原因,必須謹(jǐn)慎的進(jìn)行優(yōu)化,否則可能導(dǎo)致系統(tǒng)性能無(wú)法充分利用或者消息隊(duì)列調(diào)度混亂,因此還需在之后通過(guò)實(shí)際運(yùn)維中觀察、總結(jié)經(jīng)驗(yàn),進(jìn)一步的摸索后來(lái)加以完善。
4 結(jié)論
在實(shí)施了以上這些方法對(duì)消息業(yè)務(wù)流程中的各個(gè)網(wǎng)元進(jìn)行了系統(tǒng)升級(jí)、優(yōu)化后,我們通過(guò)對(duì)月初開(kāi)賬、批量業(yè)務(wù)查詢(xún)等消息峰值期間業(yè)務(wù)可用率、消息成功率的觀察,發(fā)現(xiàn)實(shí)時(shí)消息服務(wù)能力得到了切實(shí)提升,保證了系統(tǒng)永遠(yuǎn)在線,能持續(xù)可靠的提供服務(wù),完成了盡可能多的業(yè)務(wù)需求,提升了用戶(hù)感知,同時(shí)避免了對(duì)周邊系統(tǒng)的不良影響。
但是同時(shí)也應(yīng)看到目前的業(yè)務(wù)流程中仍有不足,當(dāng)短時(shí)的消息峰值超過(guò)了網(wǎng)絡(luò)、系統(tǒng)性能的最大值時(shí),優(yōu)先級(jí)較高的受理類(lèi)消息會(huì)和優(yōu)先級(jí)較低的查詢(xún)消息一并丟棄。因此我們后續(xù)需要再進(jìn)一步摸索和研究,考慮業(yè)務(wù)量的持續(xù)增長(zhǎng)和新發(fā)展的業(yè)務(wù)需求,不斷的對(duì)系統(tǒng)結(jié)構(gòu)和處理機(jī)制優(yōu)化以提升服務(wù)能力,滿(mǎn)足更高的業(yè)務(wù)支撐能力要求。
參考文獻(xiàn)
[1]中國(guó)電信計(jì)費(fèi)結(jié)算處.全網(wǎng)計(jì)費(fèi)系統(tǒng)適應(yīng)移動(dòng)互聯(lián)網(wǎng)能力封裝及調(diào)用的協(xié)議框架優(yōu)化改造規(guī)范[M].中國(guó)電信股份有限公司,2016.
[2]中國(guó)電信集團(tuán)公司.中國(guó)電信計(jì)費(fèi)運(yùn)營(yíng)網(wǎng)安全框架 V1.0 [M].中國(guó)電信股份有限公司,2012.
[3]中國(guó)電信上海公司.中國(guó)電信上海公司2018年智能交換平臺(tái)系統(tǒng)優(yōu)化項(xiàng)目建設(shè)方案[M].中國(guó)電信股份有限公司上海分公司,2018.
[4]敖錦蓉,王小峰,古英杰,周衛(wèi)星.基于消息重發(fā)的電信在線計(jì)費(fèi)系統(tǒng)可靠性提升研究[J].移動(dòng)通信,2016(06).
[5]陳龍等.電信運(yùn)營(yíng)支撐系統(tǒng)[M].人民郵電出版社,2017.