《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于CORBA的电信计费系统的研究
基于CORBA的电信计费系统的研究
刘 艳1 覃中平1 史泽兵1 苗世洪1 宋宇鹏2
1. 武汉华中科技大学(430074); 2. 深圳傲天信息技术(深圳)有限公司(518057)
摘要: 提出了一种新型的基于CORBA的分布式开放多层体系结构的计费系统设计方案,给出了详细的智能代理设计过程和负载平衡策略。
Abstract:
Key words :

摘   要: 提出了一种新型的基于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
 

此内容为AET网站原创,未经授权禁止转载。