摘 要: 提出了一種新型的基于CORBA的分布式開放多層體系結構的計費系統設計方案,給出了詳細的智能代理設計過程和負載平衡策略。
關鍵詞: 計費系統 CORBA技術 智能代理 負載平衡
隨著電信行業市場的快速發展,電信技術日新月異,用戶群體及其相應的通信需求快速增長,這使得國內電信計費系統面臨著巨大的壓力。傳統模式的計費系統在實際應用中已暴露出一些問題。如:系統的負載不均衡,面對業務量迅猛增加,系統的數據流量和計算強度也會相應增大,從而使計費系統的性能降低,影響電信業務服務的質量;系統的可擴展性較差,不支持廣闊的通信方式和具有明確潛在發展需求的業務,一旦現有的機制發生改變,系統將很難滿足電信運營商提出的需求。為此,本文提出一種基于CORBA的分布式開放多層體系結構的新一代電信計費系統。這種系統不僅具有良好的可擴展性和靈活性,而且實現了系統的負載平衡,從而能夠滿足服務客戶和自身管理的需求,提高電信企業的綜合素質。
1 計費系統的功能結構
電信計費系統按模塊化的組件思想來設計,根據各功能模塊所起作用可將它們分為四個層次:網絡設備層、系統設備接口支持層、系統業務處理層和系統管理層。圖1為系統功能結構。
(1)網絡設備層主要是各種各樣的網絡設備、連接設備等,它們是生產系統的組成部分,用來處理各種業務的原始數據。(2)系統設備接口支持層主要負責對各種設備提交的業務請求進行響應(如RADIUS服務器)。(3)系統業務處理層主要處理各種業務數據,包括數據庫、計費子系統和賬務子系統等。這些子系統又分別包含了對業務的支持功能模塊,它們與具體的業務操作設備相連,通過Mediation對上層提供一致的數據格式和控制接口。(4)系統管理層主要處理業務的統計分析、業務的快速生成、整個系統的運行管理和維護以及用戶的業務受理等,為系統提供外部的應用接口。
由圖1可以看出計費系統的規模大,處理流程十分復雜;承載的業務種類多,涉及眾多網絡設備及相關協議;數據的處理量大,模塊的相互調用相當頻繁等。這些都是傳統模式的計費系統很難實現的。
2 基于CORBA的計費系統軟件架構
CORBA是一種異構平臺下的語言無關的對象互操作模型。它通過ORB屏蔽了底層的通信細節,實現真正的跨平臺;通過IDL(Interface Definition Language)接口定義語言,實現語言無關性。基于CORBA的計費系統軟件架構如圖2所示。
整個系統按照請求/服務的方式進行設計,各核心功能模塊統一中間層(Mediation Service Component)、業務處理層(Billing Service Component)、外部接口OMS(Out Interface Management Service)、數據訪問平臺DAP(Data Access Platform),以組件的方式連接在CORBA上,通過CORBA自身的分布式對象服務支持的功能,實現分布環境中的透明對象服務,保證系統的開放性和擴展性。同時,圖中各組件之間的接口功能簡單,有利于實現系統的邊緣智能化和功能的任意組合。各核心功能模塊關鍵技術的設計思路如下:
(1)統一中間層可實現系統對業務的靈活支持。前端各種業務的生產數據采集器Agent將采集到的由不同協議封裝的各種不同數據格式的原始設備數據提交給統一中間層,由統一中間層依據對業務分析的理解,生成統一的系統處理數據格式XDR(extended Detailed Record),即擴展的詳細記錄,從而提高系統運行層資源的計算能力。(2)數據訪問平臺DAP作為數據庫中間件和一組服務的集成,位于數據庫和CORBA數據總線之間,是數據操作的統一通道。DAP通過實現數據存儲與業務處理邏輯相分離,保證數據存儲與業務的無關性,有利于實現高性能的數據存儲事務操作。同時,該系統可根據需要連接多個DAP在CORBA總線上,使其能夠自動有效地實現負載平衡。(3)業務處理是計費系統的重要部分,主要包括計費管理、結算管理、賬務管理和信用管理等功能模塊。這些模塊構建在CORBA總線上,在邏輯上和物理上是對等的,具有可重復性,可以實現業務處理的均衡負載,有助于新業務的擴展。(4)外部接口是一系列面向系統管理員、操作員和最終用戶的輔助工具集,主要提供統計、查詢、出賬、結算和系統配置等功能。因為CORBA具有語言無關性,開發人員可使用熟悉或高效的語言進行開發和實現外部接口,從而提高開發的效率和降低開發人員的勞動強度。同時這種語言無關的特性也有利于實現計費系統的無縫集成。(5)CORBA中間件作為計費系統的核心模塊,主要負責各主機間的連接和通信。在該系統架構中,CORBA中間件擔當對象Servent資源管理器的角色,為分布式應用提供實時的、高效的、可靠的、跨越不同操作系統、不同網絡環境、不同編程語言的對象傳送服務。
同時,CORBA中間件還構造了一個多層結構的應用和開發平臺,其主要組成部分包括應用程序開發接口SmartAgent、運行核心、負載平衡等。SmartAgent是一組功能完善的函數,應用程序通過此組函數與各個節點上的對象交換信息,獲取該節點對象提供的服務;運行核心是給應用進程提供服務,對網絡狀態進行監控,處理各種異常情況;負載平衡允許動態加載模塊等。
3 SmartAgent和負載平衡策略
3.1 SmartAgent
CORBA中間件提供的是一個開發平臺,與一般的應用程序不同,其表現形式主要是通過API或Class來給客戶程序調用。在基于CORBA計費系統中,所有服務和調用都是基于對象的,而這些對象服務程序分布在網絡上的大量節點上,因此當一個節點要獲取另外一個節點的計算結果時,只需要獲取這個節點的對象服務程序的引用。依據這些特點設計了SmartAgent類圖,如圖3所示。
圖3說明了一個節點通過SmartAgent獲得另外一個節點的引用過程。在SmartAgent類中存在一個Object_Group_Factory的對象,此對象封裝了“各類對象引用集合”的管理和操作,其中resolve( )可以得到一個“引用集合”的指針,Make_group( )可以創建一個“引用集合”。而“引用集合”Object_Group負責同一類引用的管理和操作,其中Resolve_with_id( )可以獲得該集合中的一個元素,Bind( )可以將一個元素插入到該集合中,Unbind( )可以把一個元素從該集合中刪除。
SmartAgent的作用主要有二點:(1)屏蔽底層ORB的編程細節。當客戶端要獲得一個引用時,客戶程序不需要了解CORBA編程細節和底層通信問題,只需調用SmartAgent的resolve( )方法就可得到,或直接利用數據路由調用SmartAgent的Do( )方法。(2)為實現靈活的負載平衡策略提供條件。SmartAgent在初始化時和各個需要通信的模塊預先建立多個數據通道,此數據通道的表現形式為Object_Group_
Factory類。當客戶端請求和另外的模塊進行通信時,SmartAgent自動從自己的對象引用池中根據系統配置的負載平衡策略找出空閑的引用,交給客戶程序使用。若客戶程序發現引用已失效,SmartAgent將自動從LoadBalance服務器中重新取得對象引用。
3.2 負載平衡策略
負載平衡策略是解決分布式系統可擴展性的有效方法之一,它主要對已分配給各節點的任務進行重新調度,并通過進程遷移(又稱任務遷移),使各節點負載大致相等。
基于CORBA中間件的負載平衡策略如下:所有服務接口在“LoadBalance服務器中注冊”,對每個Servent的method都有一個負載因子。客戶端在初始化時,一次性調用SmartAgent從LoadBalance獲得所需要的所有服務對象引用。其中,每個Servent的負載情況算法為:interface的負載因子=(各個method的負載系數?鄢單位時間內調用次數)?鄢硬件系數。每個Interface會在單位時間內將自己的負載情況統計出來。當SmartAgent從LoadBalance獲取引用時,LoadBalance根據各個Servent的負載因子分配相應的引用。
負載平衡策略的IDL描述如下:
module LoadBalance{
typedef string Member_ID;
typedef sequence<Member_ID> Member_ID_List;
struct ObjMember {
Object obj;
Member_ID id; };
typedef string Group_ID;
typedef sequence<Group_ID> Group_List;
interface Object_Chain;
interface Object_Chain_Store{
Object_Chain make(in Group_ID);
Object_Chain resolve(in Group_ID) raise (no_such_group);
Group_List List( ); };
interface Object_Chain{
readonly attribute string id;
void bind (in Member member_) raises (duplicate_member);
void unbind (in Member_ID id) raises (no_such_member);
Object resolve( ) raises (no_such_member);
Object resolve_with_id (in Member_ID id) raises (no_such_member);
Member_ID_List members( );
void destroy( ); }; }
4 結 論
綜上所述,基于CORBA的電信計費系統有如下特點:支持跨平臺和語言無關的特性,能夠滿足電信級的多平臺、多語言的復雜分布式計算環境的要求;具有良好的可擴展性和靈活性,不僅有利于滿足電信用戶的新需求,而且有利于電信運營商自身推廣新業務和改善經營機制;靈活有效的負載平衡策略,使系統自動實現了負載的均衡,有助于增強系統的穩定性和提高系統的性能。目前,該系統已經在湖北聯通運營,效果良好。
參考文獻
1 李光.計費系統.電信企業競爭的焦點.軟件世界,2002;(1)
2 Otte R著,李師賢譯校.CORBA教程:公共對象請求代理體系結構.北京:清華大學出版社,1999