實時融合計費系統的設計與實現
對一次性費用計算、使用費計算、周期費用計算和優惠計算等提供統一的屬性訪問接口,使得費用計算和數據源的變化無關,實現通用的費用計算引擎。當增加新的業務(新的格式、內容)時,只要增加實現一個適配器就可以被批價引擎接受。傳統的資費模型通常通過用戶資料中的多個屬性,組合運算后得到若干條資費規則,資費規則只有在程序運行時才知道用戶適用的資費。資費配置后是否正確生效具有不確定性。基于適配器模式的批價引擎采用了資費規則包的資費模型,形成可供用戶選擇的資費計劃,這樣用戶所匹配的資費規則可以從用戶資料中直接查詢出來,可靠性更能得到保證。通過對各種話單、事件進行分析,資費配置和對抽象的“事件屬性”進行定義,對新的網絡(業務)計費只要在基礎數據配置表中增加相應的事件屬性描述即可。
為了解決基于C/C++語言實現的批價引擎可擴展性差的問題,批價引擎還創新性的采用了嵌入Python腳本技術,利用C++程序運行時的動態解析Python腳本和Python本身強大的表達能力,可以使計費規則的表達無限靈活。Python語言是面向對象的腳本語言,同時也支持傳統的結構化編程,具有很好的動態解釋性。復雜的資費策略可以通過腳本實現。腳本就像插件一樣,可以根據需要任意配置,極大地提高系統的表達能力和擴展性。為運營商提供強大的運營支撐能力,方便運營商的業務快速推出和開展。
2.3 虛擬余額技術
傳統的計費系統沒有虛擬余額的概念,只支持一種余額類型,即金額。其他類型的消費都要轉換為金額才能實現。隨著電信業務的發展,各種各樣的基于時長、次數、流量等消費的方式越來越多,都轉成金額也是一種方式,但不靈活。在余額管理模塊設計中,系統引入了虛擬余額的概念。系統支持用戶的余額可以是除了金額外的其他類型“余額”,如時長、次數、流量等。同時支持虛擬類型的擴充,有效增加用戶消費的方式,方便電信業務的拓展。
3 共享內存數據庫
計費系統中各種業務程序需要對數據庫中的數據進行頻繁的查詢操作,涉及的數據量非常巨大,訪問數據庫的頻率很高,由此產生過多的數據庫交互導致程序性能降低。使用共享內存技術將數據庫待查詢的數據上載到業務程序所在的系統內存中,結合業務需求建立快速有效的查詢方式,提高查詢速度,減少對數據庫性能的依賴。
根據需要查詢的數據量,在系統內存中開辟足夠的共享內存段,用于存放數據記錄。同時根據數據查詢的需求建立對應的查詢方式(即建立索引),創建對應的共享內存段,用于存放索引及輔助維護數據。共享內存數據庫框架如圖4所示。

守護進程根據預先定義,查詢并獲取數據庫中的原始數據,經過處理形成需要存放的記錄并插入共享內存的數據段,同時根據查詢方式形成對應的索引記錄,插入共享內存的索引段。在數據被批量上載后,業務進程可以連接共享內存,先訪問索引段,然后獲取對應的數據記
錄。數據庫數據發生變動時,守護進程根據相應的機制獲取變動的數據,依照前面業務進程查詢數據的方法,如果找到指定數據就更新,如果沒找到就插入新記錄。
4 結語
隨著電信技術的不斷發展,傳統的準實時計費系統已不能滿足電信運營商的需求。本文設計了一種實時融合認證在線計費系統,該系統采用可定制規則分揀的預處理引擎、基于適配器模式的批價引擎和嵌入式腳本等技術滿足了靈活的多種業務融合計費需求。同時,該系統還采用了多級消息分發、共享內存數據庫等技術,保證了系統的實時性。該系統消息平均響應時間99.9%小于400 ms。系統單節點支持用戶數由現在的300萬提升到2 000萬,系統容量提升后,一般的電信企業部署單節點,最多兩個節點即可滿足容量要求。系統的單節點混合呼叫處理能力由現在的2 400 CaPs提升到4 000 Caps。數據處理性能提升后,將能滿足未來海量數據處理的需要。





評論