时间:2024-05-04
万畅 李剑锋 金晶
(1.广东科学技术职业学院 广东省珠海市 519090 2.广工揭阳理工学院(筹) 广东省揭阳市 522000)
(3.珠海市斗门区文化广电旅游体育局旅游促进室 广东省珠海市 519090)
随着网络、多媒体技术的飞速发展,人们对音视频指挥调度系统不断提出新的功能需求,甚至提出新的部署设想,从而导致音视频指挥调度系统的业务功能、媒体处理方式和系统部署形式不断发生变化,传统的业务、控制、媒体面集中处理的模式早已不能跟上新业务的发展速度和需求,因此很多音视频指挥调度系统也在不断地学习软交换甚至IMS(IP Multimedia Subsystem)的架构模式,功能网元不断实体化、网元不断分布化,将业务、控制、媒体彻底分离,以达到最大的架构灵活性。
本项目中的音视频指挥调度系统正是一个基于IMS 架构形式的音视频综合指挥调度系统,将上层业务分解为很多功能内聚的应用服务器AS(Application Server),底层媒体由统一的媒体处理服务器MRS(Media Resource Server)处理,其中MRS 内部又按控制与媒体分离进一步细化为MRFC(Multimedia Resource Function Control) 网元和多个分布的MRFP(Multimedia Resource Function Processor)网元。为了将来业务的统一拓展,抽象定义了MRS 和AS 间的业务控制接口,使所有AS 都可按统一的接口访问和使用媒体资源,并向AS 屏蔽了底层具体媒体处理的细节,将媒体处理与业务控制彻底解耦,最大可能适应上层业务、或底层媒体处理硬件设备(或板卡)的变化。然而在该分层架构设计中,MRFC 作为一个中间子网元,不仅要适应上层业务(AS)的快速发展变化,也要不断适应底层媒体处理设备(MRFP)快速发展变化,因此对MRFC 网元的设计和实现都提出了极高可扩展的要求。本文档主要描述该项目中如何在MRFC 网元上设计灵活的业务框架,以满足整个音视频指挥调度系统对上述扩展性的需求。
本系统中主要参考业界已成熟应用的X/Open DTP 分布式事务模型,以及当前软件业界流行的微服务架构、智适应和组件化思想,结合本项目特点,对分布式事务模型进行适度的改进,提出了一套具有一定智适应的媒体处理框架,并使用面向对象的方法进行实现,在项目实施中取得了满意的效果。
本系统中主要参考业界已成熟应用的X/Open DTP 分布式事务模型,以及当前软件业界流行的微服务架构、智适应和组件化思想,结合本项目特点,对分布式事务模型进行了适度的改进。
图1
X/Open DTP(X/Open Distributed Transaction Processing Reference)是X/Open 组织织 (即现在的 OpenGroup)定义的一套被广泛接受的分布式事务处理模型,在X/Open DTP 模型中定义了如下三类角色:
AP(Application Program):应用程序,主要是定义事务边界以及那些组成事务的特定于应用程序的操作。RM(Resouces Manager):资源管理器,管理一些共享资源的自治域,如提供对诸如数据库之类的共享资源的访问。TM(Transaction Manager):事务管理器,管理全局事务,协调事务的提交或者回滚,并协调故障恢复。其中AP 通过TX 接口与TM 交互,开始或提交全局事务,TM给事务分配标识符,与RM 间使用XA 规范(X/Open 提出的分布式事务处理规范,分布事务处理的工业标准),通过两阶段提交协议(2PCP,two Phase Commit Protocol)来完成一个全局事务。2PCP由两个阶段组成,准备阶段和提交阶段,其基本思想是:当且仅当全部子事务均提交时,全局事务才能提交,如果有任何一个子事务不能正常提交,则全部子事务都要终止。
微服务是一种新型架构风格,受到了工业界和学术界的广泛关注。微服务提倡将应用程序划分为一组细粒度的服务,以实现对解决方案的解耦,服务间采用轻量级的通信机制进行交互,通常,这些细粒度的微服务是具有单一职责的小程序,能够被独立地开发、测试、部署和扩展。
与传统单体架构相比,微服务架构具有高维护性、高扩展性、高适应性、去中心化、容器化的运行环境等特征,能满足大规模分布式应用对可扩展性、去耦合的需求,近年来得到了越来越广泛的应用。
本质上,微服务架构思想来源于面向服务的架构(Service Oriented Architecture, SOA)[6],是对SOA 架构的二次迭代,其目的是去除SOA 中不必要的复杂程度,进一步专注于实现单一功能的细粒度服务。SOA 将服务端应用视为多个粗粒度服务的组合,各个服务可以分布部署在不同地理位置的容器中,服务间通过企业服务总线进行通信组合并共享同一个数据库;微服务架构则服务端应用视为多个细粒度微服务的组合,每个微服务是高内聚的小程序,可拥有自己私有的数据库并在其独立的容器中运行,微服务间通过轻量级协议进行通信。
组件化是一种高效的处理复杂应用系统,更好地明确各功能模块的作用的设计、开发方式,其目的也是为了更好地进行功能解耦,把复杂系统拆分成多个功能内聚的组件,分离组件责任和边界,便于独立升级和维护。单体架构的组件化是通过模块来实现,而微服务架构的组件化通过高度解耦的细粒度微服务来实现。
本项目中,MRFC 网元以X/Open DTP 事务模型为基础,将该模型中的事务管理器(TM)和资源管理器(RM)抽象化为处理框架,并进一步将微服务和组件化思想应用于资源管理器部分,把各种媒体处理功能组件化。分布式事务处理部分分为4 层,资源和组件管理层包括资源管理器、媒体组件代理工厂、媒体组件代理;事务管理层即分布式事务管理包括事务管理工厂、事务管理器、事务存储器;协议层用于处理分布式通信协议,包括业务接口自解析容器、媒体组件接口自解析、XML 通用协议、JSON 通用协议;网络层包括TCP、UDP 协议等。
为最大可能地实现框架的可扩展性,满足不同AS(应用服务器)、不同媒体组件的扩展或更新,框架中“业务接口自解析容器”、“媒体组件接口自解析容器”、“媒体组件代理工厂”、“媒体组件代理”功能支持通过注册方式进行扩展,通过这几个模块的配合,既能满足AS 网元和媒体组件的扩展,也能满足其上接口功能的扩展。其中事务管理器完成事务子任务的分解,按两阶段提交协议的思想提交任务:首先将子任务提交给合适的媒体组件代理进行预处理,媒体组件代理能够根据媒体组件具体实现方式,将子任务进一步分解为一个或多个动作,并将这些动作反向登记到事务存储中;每个子任务登记成功后,事务管理器正式通知对应的媒体组件代理执行该子任务,此时媒体组件代理会将此子任务分解的动作转的为合适的媒体组件接口协议向各媒体组件发送动作请求,并将各动作执行结果反馈给事务管理器,由事务管理器根据事务规则判断事务执行结果。
在此项目中,考虑到项目业务方的实际需求和设计要求,对X/Open DTP 模型进行了如下改进:
(1)对事务管理按层级进行细化[6],扩展出Task(子任务)、Action(动作)概念,以Task(子任务)为单位进行两阶段提交,同时允许同一个Action 归属于不同的Task(子任务),以便于外部媒体组件灵活处理,极大地增加了媒体处理设备(板卡)的接口灵活性,减少耦合,提高可扩展性。
在图1 中,动作(Action)1、动作(Action)2、动作(Action)3 同时归属在不同的子任务(Task)1、子任务(Task)2、子任务(Task)3 中。
(2)对事务失败结果的判定规则进行改进[5]。根据项目的需要,以及AS 业务接口协议的设计要求,将事务(Transaction)中各子任务(Task)间的关联关系适度进行弱化,保留各子任务(Task)间的顺序依赖性,但去除整个事务(Transaction)的原子性要求,即允许事务中的前面部分子任务执行成功,MRFC 网元向上层AS 网元返回执行成功的子任务个数。这种改进可以给上层AS 提供更灵活的子任务组织方式,也给上层AS 提供更大的失败处理策略。
(3)将X/Open DTP 模型中的AP(Application Program)应用程序部分向上层AS 网元迁移,同时将MRFC 网元与这些AS 网元间的接口抽象化、容器化,最大地提供框架的扩展性。后续可以根据与AS 网元间的协议扩展,在此容器部分增加或修改对应的事务(Transaction)、子任务(Task)定义和协议自解析功能代码,即能提供新的业务接口功能。
(4)结合微服务和组件化思想,将媒体处理设备(板卡)组件化,框架中只提供抽象的资源管理处理框架,具体的媒体处理设备可以通过相应的组件工厂和组件代理注册到资源管理部分中,以实现资源组件的扩展。
(5)智适应:本框架通过“业务接口自解析容器”、“媒体组件自解析容器”、“媒体组件代理工厂”、“媒体组件代理”等模块结合,一起提供一套抽象的事务、子任务、动作处理流程,使本框架能够透明地处理媒体事务,也即使框架能够具备一定的智适应能力,能够适配各种具体的业务接口和媒体组件接口,达到上下接口的智适应和自扩展效果。
X/Open DTP 分布式事务模型、微服务和组件化等思想都是业界比较成熟的软件思想和技术,通过将这些成熟的思想和技术应用于项目中,并针对项目的实际需求进行合理的优化、改进,实现了一套具有一定智适应能力的媒体事务处理框架,并在实际项目应用中取得了很好的效果,极大地提高了系统的灵活性和可扩展性,为项目的持续发展作出了极大的贡献,也达到了一定的经济效果,值得进一步在实际应用中研究探索;当然,在实施过程中也发现了一些问题,需要我们继续不断地加以完善改进。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!