CORBA在数字电视城域VOD城间件技术的系统中的应用
来源:岁月联盟
时间:2010-08-30
1 引言
数字电视城域VOD(Video On Demand)系统,利用现有HFC单向,把数字电视传输技术和互联网络技术结合起来,用数字电视信道作为下传通道,用互联网络、电话、短信等手段作为上传通道,改变了用户只能被迫接受的现状,用户可以通过自己的终端(如装有机顶盒的电视机,联网的机等)随时点播自己想看的节目,访问自己需要的信息。因为要处理大量的用户点播请求、视频节目分发推送等事务,用一台计算机来架设整套VOD系统是远远不够的。因此,本系统采用分布式系统架构,由通过VPN(Virtual Private Network 虚拟专用网络)连接的接入系统、管理站、呼叫中心以及小区点播服务中心的多台计算机协同工作,从而全面满足用户的点播要求。这样一个大规模系统中,实现各个模块之间的通信和异构数据资源的共享,是VOD系统需要解决的主要问题。 公用对象请求代理体系结构(CORBA, Common Object Request Broker Architecture)是由对象管理组织(OMG, Object Management Group)定义的面向对象的通用体系结构,它作为一种新兴的面向对象分布式计算技术,为解决分布式处理环境中系统互连提供了新的解决方案。由于CORBA支持不同程序设计语言,不同操作系统之间互操作性,使得借助于CORBA技术能够有效地实现各个模块之间的通信。CORBA可以在多个服务器之间实现负载均衡,保证了系统的高效性。 此外,CORBA提供了较好的容错机制,使得系统拥有很高的稳定性。 在数字电视城域点播系统中我们选择CORBA分布式对象技术作为建立服务应用框架和软件构件的核心技术。本文将结合CORBA的体系结构及其工作原理对其在数字电视城域VOD城间件技术的系统中的应用加以探讨。2 CORBAR的体系结构及其工作原理
2.1 CORBAR的体系结构
CORBA是由OMG为了适应当今快速增长的软硬件的协同工作能力的要求而制定的一种标准的面向对象应用程序体系规范。CORBA体系结构与规范是建立在OMG对象模型基础之上,主要由三个关键的部分组成:作为分布式对象通信基础设施的对象请求代理(ORB)的体系结构、接口定义语言IDL(Interface Definition Language)、保证可互操作性的标准ORB的通信协议GIOP/IIOP。CORBA体系结构如图1所示:图1 CORBAR的体系结构
其中: (1)GIOP(General Inter-ORB Protocol): GIOP是描述不同的ORB之间如何进行互操作的协议。IIOP(Internet Inter-ORB Protocol)是TCP/IP之上的ORB互操作协议。IIOP是GIOP到TCP/IP协议的映射,它定义了用于Internet的一种标准互操作协议,它利用的传输层协议就是Internet所采用的TCP协议。 (2)ORB:对象请求代理程序(Object Request Broker, ORB)是组成CORBA的基础,即通常我们所说的“软件总线”。通过它,对象可以向本地或远端的其它对象发出请求或接收响应,实现了对象在分布式环境和独立于对象实现的平台之间的交互。 (3)ORB接口:提供一组标准的API来完成客户端和服务器端共同需要的功能。 (4)动态调用接口(Dynamic Invocation Interface):支持客户端的调用请求。利用DII,客户方应用可以在运行时动态地向任何对象发出请求,而不像静态调用那样,必须在编译时就知道特定的目标对象的接口信息。 (5)存根(或桩IDL Stubs):为客户提供了一种机制,使客户能够不关心ORB的存在,而把请求交给存根,存根负责对请求参数的封装和发送,以及返回结果的接收和解封装。 (6)静态框架(Static IDL Skeleton):把对象实现与ORB连接起来,将请求参数解封装,识别客户所请求的服务,向上调用对象实现,并把执行结果封装,然后返回给服务方。 (7)动态框架接口(Dynamic Skeleton Interface , DSI):接受远端对象的调用请求。在服务器端,既可以使用静态框架,又可以使用DSI来接受远端对象的调用请求,还可以两者都使用。 (8)对象适配器(Object Adaptor):提供执行对象可以访问ORB服务的基本接口,其作用是产生解析对象的引用、安全交互、登记和执行等。 (9)接口库和实现库:其中接口库用来存储、发布、管理相关对象接口定义的集合。实现库包含了允许ORB查找和调用对象实现的相关信息,它是ORB进行对象匹配的场所。接口库和实现库是ORB的辅助部件。
2.2 CORBA工作原理
IDL编译器将对象的IDL文件编译成客户端的存根文件(Stub)和服务器端(对象实现)的框架文件(Skeleton)。由图1可见,底层使用的传送层(Network)机制使用的TCP/IP通信协议。CORBA封包的传送和沟通是使用得所谓的GIOP(General Inter-ORB Protocol)或者IIOP协议。在CORBA客户端, Stub 要通过安装在客户端的 ORB 软件来处理接口调用, ORB 又通过 Smart Agent(可能运行在局域网中的其他机器上)所提供的目录服务来动态地定位一个可用的服务器,该服务器才真正实现了接口。ORB提供一个发送操作调用的接口,把客户发出的请求传递给目标对象;Stub为客户端提供了静态调用方式,它负责把客户端的请求进行编码,通过ORB发送到对象实现端,并把返回的应答解码后传给客户端。在CORBA 服务器端,ORB 通过对象适配器把客户的接口调用传给框架文件(Skeleton)。框架文件为对象实现提供了静态实现方式,它负责把客户端经 ORB 发送来的请求解码,定位对象方法并执行,然后把结果编码后作为应答经 ORB返送给客户端。3 CORBA在数字电视城域点播系统中的应用
3.1 基于CORBA的数字电视城域VOD系统的体系结构
数字电视VOD系统是一套覆盖全城的可扩展分布式系统,它兼容支持各种数字电视机顶盒产品,能与通用数字电视平台互连,全面支持各种节目来源,全面支持城域VOD点播的各种相关业务。通过建立方便快捷的接入通道,系统支持各种方式的用户点播业务,能为用户提供方便快捷、稳定流畅的高品质VOD服务。此外,系统还具有完善的用户管理和节目管理功能,全面支持用户相关的各种业务(入网、缴费和注销等)、节目相关的各种业务(包括节目制作,分发,统计分析等),全面支持系统设备监控和管理。 基于以上数字电视城域点播系统的基本功能和CORBA技术在本系统的应用,系统目前的软件设计架构是以C/S结构(Client/Server)为基础,其体系模型如图2所示:3.2 CORBA在数字电视VOD系统中的应用
在数字电视VOD系统中,服务器和各个客户端的应用之间需要协同工作,这就需要选择的软件体系结构具有较高的异构性。作为一种开放式的、独立于厂商、用于上机应用的底层结构,CORBA能让系统实现较好的异构性。任何厂家、计算机、操作系统、编程语言及网络环境下的CORBA 应用均使用IIOP标准协议,能给系统提供可靠的、标准的底层结构体系。系统客户端及服务器端的应用程序可以构建、运行在不同平台上的、用不同编程语言实现。CORBA还能解决系统的负载问题,可以在多个服务器之间实现负载均衡,大大增强了分布式系统的高效性。 此外,CORBA还为系统提供了较好的容错机制,能使每一个对象同时在两个或多个服务器上运行,当其中的一个出现故障时,系统能自动切换到另一个服务器。下面介绍CORBA的自身特点在数字电视VOD系统的应用。3.2.1 利用CORBA实现数字电视VOD系统内部通信 根据系统功能的要求数字电视城域VOD系统体系结构如图2所示,由于呼叫控制中心是整个VOD系统的呼叫处理中枢,因此,我们将呼叫控制中心作为CORBA系统的服务器,其他模块作为CORBA系统的客户端。客户端模块通过CORBA接口实现与呼叫中心的数据交互,即实现VOD系统中其它模块之间的通信。下面给出一个运用CORBA实现客户端和服务器通信的实例。图3是管理工作站中的系统管理中点播节目单生成方法的接口。图3 接口VodListCreateMenthodManager示意图
VodListCreateMenthodManager所对应的IDL接口如下所示:module CallCenter {struct TVodListCreateMethodStruct { /* 生成方法ID号 */ long CreateMethodID; /* 生成方法名称 */ string CreateMethodName; /* 生成方法规则 */ string CreateMethodRule; };interface VodListCreateMenthodManager {CallCenter::HResult VodListCreateMethod_AddNew(in CallCenter::TVodListCreateMethodStruct ValCreateMethod, //规则的信息out long RetCreateMethodID //返回的点播生//成规则ID号);};}; 在设计服务器端和各个客户端共享的IDL接口时,采用了建模工具 Rational ROSE 2003规划IDL接口并实现了从UML到IDL的映射工作。如图3,在接口VodListCreate MenthodManager中,定义了增加一条点播节目单生成方法VodListCreateMethod_AddNew,点播节目单生成方法的结构包括了生成方法ID号、生成方法名称、节目单的生成方法规则,这些信息被按值封装在TVodListCreateMethodStruct结构中。系统管理模块把VodListCreateMethod_AddNew方法传Stub,Stub又把调用信息打包,经过编码后由ORB传递给呼叫中心。呼叫中心端的框架文件把包打开并解码,在程序代码中实现该接口,把结果编码后,以long的形式作为应答经 ORB返送给系统管理模块。3.2.2利用CORBA实现系统的高可靠性 通常系统的高可靠性,可通过设备的冗余来实现。在CORBA环境中,通过高可靠性服务实现服务方冗余,使客户与服务方的关系变为1:N的关系。因此可以运行多个呼叫中心,当呼叫中心的某一个出现故障,系统可快速定位,并将整个服务方进行迁移到备用的呼叫中心,继续完成客户端的请求。如果多个服务器的硬件配置相同,服务器会拥有很高的稳定性。3.2.3 利用CORBA实现系统的负载均衡 Smart Agent提供了动态的分布式目录服务,用来定位一个实现特定对象的可用的服务器。对于客户和服务器来说,Smart Agent 是完全透明的,客户和服务器都不需要知道 Smart Agent 的具体位置。如果所选择的呼叫中心无效,Smart Agent会自动选择另一个呼叫中心。如果有多个呼叫中心可供选择,Smart Agent 会基于负载平衡选择其中一个。