實(shí)時(shí)融合計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
對(duì)一次性費(fèi)用計(jì)算、使用費(fèi)計(jì)算、周期費(fèi)用計(jì)算和優(yōu)惠計(jì)算等提供統(tǒng)一的屬性訪(fǎng)問(wèn)接口,使得費(fèi)用計(jì)算和數(shù)據(jù)源的變化無(wú)關(guān),實(shí)現(xiàn)通用的費(fèi)用計(jì)算引擎。當(dāng)增加新的業(yè)務(wù)(新的格式、內(nèi)容)時(shí),只要增加實(shí)現(xiàn)一個(gè)適配器就可以被批價(jià)引擎接受。傳統(tǒng)的資費(fèi)模型通常通過(guò)用戶(hù)資料中的多個(gè)屬性,組合運(yùn)算后得到若干條資費(fèi)規(guī)則,資費(fèi)規(guī)則只有在程序運(yùn)行時(shí)才知道用戶(hù)適用的資費(fèi)。資費(fèi)配置后是否正確生效具有不確定性?;谶m配器模式的批價(jià)引擎采用了資費(fèi)規(guī)則包的資費(fèi)模型,形成可供用戶(hù)選擇的資費(fèi)計(jì)劃,這樣用戶(hù)所匹配的資費(fèi)規(guī)則可以從用戶(hù)資料中直接查詢(xún)出來(lái),可靠性更能得到保證。通過(guò)對(duì)各種話(huà)單、事件進(jìn)行分析,資費(fèi)配置和對(duì)抽象的“事件屬性”進(jìn)行定義,對(duì)新的網(wǎng)絡(luò)(業(yè)務(wù))計(jì)費(fèi)只要在基礎(chǔ)數(shù)據(jù)配置表中增加相應(yīng)的事件屬性描述即可。
為了解決基于C/C++語(yǔ)言實(shí)現(xiàn)的批價(jià)引擎可擴(kuò)展性差的問(wèn)題,批價(jià)引擎還創(chuàng)新性的采用了嵌入Python腳本技術(shù),利用C++程序運(yùn)行時(shí)的動(dòng)態(tài)解析Python腳本和Python本身強(qiáng)大的表達(dá)能力,可以使計(jì)費(fèi)規(guī)則的表達(dá)無(wú)限靈活。Python語(yǔ)言是面向?qū)ο蟮哪_本語(yǔ)言,同時(shí)也支持傳統(tǒng)的結(jié)構(gòu)化編程,具有很好的動(dòng)態(tài)解釋性。復(fù)雜的資費(fèi)策略可以通過(guò)腳本實(shí)現(xiàn)。腳本就像插件一樣,可以根據(jù)需要任意配置,極大地提高系統(tǒng)的表達(dá)能力和擴(kuò)展性。為運(yùn)營(yíng)商提供強(qiáng)大的運(yùn)營(yíng)支撐能力,方便運(yùn)營(yíng)商的業(yè)務(wù)快速推出和開(kāi)展。
2.3 虛擬余額技術(shù)
傳統(tǒng)的計(jì)費(fèi)系統(tǒng)沒(méi)有虛擬余額的概念,只支持一種余額類(lèi)型,即金額。其他類(lèi)型的消費(fèi)都要轉(zhuǎn)換為金額才能實(shí)現(xiàn)。隨著電信業(yè)務(wù)的發(fā)展,各種各樣的基于時(shí)長(zhǎng)、次數(shù)、流量等消費(fèi)的方式越來(lái)越多,都轉(zhuǎn)成金額也是一種方式,但不靈活。在余額管理模塊設(shè)計(jì)中,系統(tǒng)引入了虛擬余額的概念。系統(tǒng)支持用戶(hù)的余額可以是除了金額外的其他類(lèi)型“余額”,如時(shí)長(zhǎng)、次數(shù)、流量等。同時(shí)支持虛擬類(lèi)型的擴(kuò)充,有效增加用戶(hù)消費(fèi)的方式,方便電信業(yè)務(wù)的拓展。
3 共享內(nèi)存數(shù)據(jù)庫(kù)
計(jì)費(fèi)系統(tǒng)中各種業(yè)務(wù)程序需要對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行頻繁的查詢(xún)操作,涉及的數(shù)據(jù)量非常巨大,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的頻率很高,由此產(chǎn)生過(guò)多的數(shù)據(jù)庫(kù)交互導(dǎo)致程序性能降低。使用共享內(nèi)存技術(shù)將數(shù)據(jù)庫(kù)待查詢(xún)的數(shù)據(jù)上載到業(yè)務(wù)程序所在的系統(tǒng)內(nèi)存中,結(jié)合業(yè)務(wù)需求建立快速有效的查詢(xún)方式,提高查詢(xún)速度,減少對(duì)數(shù)據(jù)庫(kù)性能的依賴(lài)。
根據(jù)需要查詢(xún)的數(shù)據(jù)量,在系統(tǒng)內(nèi)存中開(kāi)辟足夠的共享內(nèi)存段,用于存放數(shù)據(jù)記錄。同時(shí)根據(jù)數(shù)據(jù)查詢(xún)的需求建立對(duì)應(yīng)的查詢(xún)方式(即建立索引),創(chuàng)建對(duì)應(yīng)的共享內(nèi)存段,用于存放索引及輔助維護(hù)數(shù)據(jù)。共享內(nèi)存數(shù)據(jù)庫(kù)框架如圖4所示。
守護(hù)進(jìn)程根據(jù)預(yù)先定義,查詢(xún)并獲取數(shù)據(jù)庫(kù)中的原始數(shù)據(jù),經(jīng)過(guò)處理形成需要存放的記錄并插入共享內(nèi)存的數(shù)據(jù)段,同時(shí)根據(jù)查詢(xún)方式形成對(duì)應(yīng)的索引記錄,插入共享內(nèi)存的索引段。在數(shù)據(jù)被批量上載后,業(yè)務(wù)進(jìn)程可以連接共享內(nèi)存,先訪(fǎng)問(wèn)索引段,然后獲取對(duì)應(yīng)的數(shù)據(jù)記
錄。數(shù)據(jù)庫(kù)數(shù)據(jù)發(fā)生變動(dòng)時(shí),守護(hù)進(jìn)程根據(jù)相應(yīng)的機(jī)制獲取變動(dòng)的數(shù)據(jù),依照前面業(yè)務(wù)進(jìn)程查詢(xún)數(shù)據(jù)的方法,如果找到指定數(shù)據(jù)就更新,如果沒(méi)找到就插入新記錄。
4 結(jié)語(yǔ)
隨著電信技術(shù)的不斷發(fā)展,傳統(tǒng)的準(zhǔn)實(shí)時(shí)計(jì)費(fèi)系統(tǒng)已不能滿(mǎn)足電信運(yùn)營(yíng)商的需求。本文設(shè)計(jì)了一種實(shí)時(shí)融合認(rèn)證在線(xiàn)計(jì)費(fèi)系統(tǒng),該系統(tǒng)采用可定制規(guī)則分揀的預(yù)處理引擎、基于適配器模式的批價(jià)引擎和嵌入式腳本等技術(shù)滿(mǎn)足了靈活的多種業(yè)務(wù)融合計(jì)費(fèi)需求。同時(shí),該系統(tǒng)還采用了多級(jí)消息分發(fā)、共享內(nèi)存數(shù)據(jù)庫(kù)等技術(shù),保證了系統(tǒng)的實(shí)時(shí)性。該系統(tǒng)消息平均響應(yīng)時(shí)間99.9%小于400 ms。系統(tǒng)單節(jié)點(diǎn)支持用戶(hù)數(shù)由現(xiàn)在的300萬(wàn)提升到2 000萬(wàn),系統(tǒng)容量提升后,一般的電信企業(yè)部署單節(jié)點(diǎn),最多兩個(gè)節(jié)點(diǎn)即可滿(mǎn)足容量要求。系統(tǒng)的單節(jié)點(diǎn)混合呼叫處理能力由現(xiàn)在的2 400 CaPs提升到4 000 Caps。數(shù)據(jù)處理性能提升后,將能滿(mǎn)足未來(lái)海量數(shù)據(jù)處理的需要。
評(píng)論