本站小编为你精心准备了ICT融合通信服务器中间件研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
《小型微型计算机系统杂志》2016年第一期
摘要:
随着信息通信技术的兴起,融合通信服务器中间件的重要性越来越凸显.通过“中间件”技术,在融合通信服务器基础上打造一个对外的中间件平台即融合通信服务器中间件,不仅屏蔽了融合通信服务器内部的复杂性,还对外提供了一套符合互联网规范的开放的简洁的应用程序接口.通过对融合通信服务器中间件的背景研究,提出融合通信服务器中间件的分层架构,阐述了一些重要数据结构及内部模块的实现,完成外部消息格式的定义.最后通过功能和性能测试,证明了融合通信服务器中间件的可用性.
关键词:
1引言
CTI(ComputerTelephonyIntegration)即计算机电话集成,是传统的语音通信与数据通信网络的结合,是连接通信设备和计算机的枢纽[1].大多数企业经过近几年的信息化建设,已拥有较完善的IT(InformationTechnology)系统,传统的IT系统以局域网或Internet为载体,需要办公人员有PC终端并连接上网才能发挥作用.而CT(CommunicationTechnolo-gy)系统虽然可以提供有效的通信方式,但不能与企业的业务紧密关联.通过对多个企业的IT系统进行分析,我们发现移动信息化的实现过程里很多工作都是共性的,如对基本通信协议的开发、同运营商网络的连接、通信业务逻辑解析、IT系统对接等,而定制工作主要集中在业务流程的实现.如今的电信网络和数据通信网络正在互相渗透融合,ICT(Informa-tionandCommunicationTechnology)代表着这种发展与融合的趋势.ICT信息通信技术,它是信息技术和通信技术相融合而形成的一个新的范畴[2],ICT平台的概念全面准确地反映支撑现代信息社会发展的方向.融合开放的ICT综合业务平台,吸收了传统智能网的特点以及软交换“业务与控制分离”,最终将完全融合CTI平台[3].ICT融合通信服务器便是一种代表着ICT融合的载体,在其基础上打造的ICT融合通信服务器中间件提供了一套符合互联网规范的开放API(ApplicationProgrammingInter-face)接口.ICT融合通信服务器中间件向互联网开放了ICT融合通信服务器的基础通信能力,实现互联网与通信网络业务的融合与应用的混搭(Mhup).同时,通过建立良好的商业模式,吸引互联网SP(ServiceProvider)入驻,让SP自己开发适合市场的“杀手级应用”.
2中间件技术的介绍
中间件(Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑.在现代信息技术应用框架如Web服务、面向服务的体系结构等中应用比较广泛[4].早期内部服务器和外部应用客户端是一种紧耦合的集成模式,内部服务器直接提供对外API,应用客户端通过这些接口的调用直接操纵内部服务器.在这种集成模式下,存在着许多问题:程序可移植性差、安全性差、稳定性差.可以在内部服务器和外部应用客户端之间添加连接软件中间件,通过中间件间接提供给外部应用客户端统一的规范的简洁的API,实现异构环境的通讯,屏蔽了异构系统中复杂的操作系统和网络协议,其总体结构如图1所示.这样实现了内服务器专用接口对于上层应用客户端的透明,在不改变中间件对外API的条件下可随意更改中间件的具体实现,应用客户端几乎不需任何修改还可复用.这样对于SP而言可以专注于应用客户端的开发,而不必过于关注内部服务器端的变化,从而保护了企业在应用软件开发和维护中重大投资成本[5,6].
3ICT融合通信服务器中的中间件
ICT融合通信服务器体系结构设计如图2所示,采用总线结构,各个组件分别挂在消息队列总线上,各个服务组件高内聚,低耦合,不会相互调用.所有模块之间不发生直接的交互,所有消息的收发都通过消息队列总线,消息队列总线负责消息的接收以及将该消息推送到对应的目标组件上.这种结构易维护性和易扩展性是显而易见的,如果要添加新的模块,不需要考虑它与其他模块之间交互而要写众多的接口,只需要将其挂到总线上即可.ICT融合通信服务器是一个整体系统,里面包含多个服务组件进程,不同的服务组件提供不同的基本服务接口.外部应用客户端可以使用这些基本服务接口或者多个基本服务接口的组合完成复杂业务.ICT中间融合通信服务器中间件是二者之间的连接软件,其设计的核心思想就是定义通信服务接口协议标准(见4.3),每种基本服务接口对应的是一种规定好外部消息格式,应用客户端需要什么服务就向ICT融合通信服务器中间件发送特定外部请求,其作为中间者收到外部请求,按照预先设定路由规则(见4.2.2),适配到不同内部组件解析器完成消息处理,将外部消息转化成内部组件可识别格式,发送到服务组件并由其提供相应的服务,并将收到响应消息按原路发回给应用客户端.
4ICT融合通信服务器中间件的设计与实现
ICT融合通信服务器中间件与传统CTI中间件相比:实现代价小,其主要提供CTI中间件最基本服务,以及其他额外功能会议控制,通信录设置查询,业务设置查询等,整合各种网络业务能力,采用统一消息调用的方式向应用开放,通过灵活组合各种网络业务能力开发多样化业务应用;采用Linux下Epoll方法实现对TCP的Socket端口监控管理,完全可以满足外部多客户端的并发、长短连接的需求.内部采用缓冲区链表有效缓存大量高并发消息.这样有效保证性能的稳定性和可靠性;具有一定先进性,ICT融合通信服务器中间件的架构设计有效考虑项目现实应用场景,其主要从分层、模块化、可扩展等方面考虑组织软件架构,分成三层:IO抽象层、消息路由层、消息适配层.ICT融合通信服务器中间件的架构如图3所示.
4.1ICT融合通信中间件的架构设计TCP输入输出,对外IO,主要完成对外多应用客户端的IO,包括消息的接收与发送.MQ输入输出,对内IO,主要完成对内消息队列的IO,包括消息的接收与发送.IO抽象层,对外IO、对内IO的抽象,便于IO接口扩展.消息路由层,根据路由配置信息,将消息分发到不同的解析器上.消息适配层,为上层路由选择层提供了一个统一的接口,根据收到的消息的类型不同适配到不同解析器.解析器,将收到外部消息处理成内部组件的可识别的消息格式,或者是将收到内部消息处理成外部应用客户端可识别的消息格式.
4.2实现采用C语言开发实现,并将ICT融合通信服务器中间件实现为一个服务端的应用程序.
4.2.1缓冲区结构ICT融合通信服务器中间件运行过程中需要处理成千上万的消息,为了达到减少IO开销、增大并发、临时存储的目的,需要在ICT融合通信服务器中间件中定义缓冲区.下面定义了四个消息缓冲区:TCP接收缓冲区、TCP发送缓冲区、MQ输出缓冲区、MQ输入缓冲区.TCP接收缓冲区数据结构structTcpRecvData,各字段的定义见下页表1.T_LIST_ENTRY(TcpRecvBuf)list是一个宏定义,代表本结构的链表即TCP接收缓冲区.应用客户端向ICT融合通信服务器中间件发送请求,ICT融合通信服务器中间件将接收到所有客户端的请求消息依次放入TCP输入缓冲区.TCP发送缓冲区、MQ输出缓冲区、MQ输入缓冲区实现类同TCP发送缓冲区,不再赘述.TCP发送缓冲区中存放的是ICT融合通信服务器中间件已经处理完成的响应或事件消息,即将要发送到对应的应用客户端.MQ输出缓冲区存放的是ICT融合通信服务器中间件解析处理完成的请求消息,即将要发送到消息队列上,由消息队列发送到对应组件去处理.MQ输入缓冲区存放的是ICT融合通信服务器中间件定时从消息队列接收各个组件的消息.
4.2.2消息路由器这里参考消息队列总线中路由模式的实现,不同解析器可订阅自己想要的消息类型,采用静态配置文件配置,并针对每一种消息类型配置一条消息路由,如图4所示.对收到一条消息(这条消息既可能来自外部应用客户端的请求,也可能来自内部的消息队列总线),根据配置文件可选择发送到多个解析器,或只选择发送到一个解析器,或选择直接丢弃.在配置文件/etc/ict_mid_router.conf中,[INTERPRETER]下定义各解析器在MK串中的固定位置,如IN-TER1:1表示解析器IN-TER1在MK串中第一个位置.[MESSAGE]下定义了每个类型消息关于解析器MK串,0表示发送到该解析器,1表示不发送.例如:MSGTYPE1=>0000000000000000代表MS-GTYPE1类型的消息丢弃;MSGTYPE2=>1100000000000000代表MSGTYPE2类型的消息发送到第一个位置解析器IN-TER1及第二个位置解析器INTER2.路由信息的初始化在ICT融合通信服务器中间件应用程序启动时将路由表信息以链表结构形式加载到内存中,程序运行后,之后会一直保存在内存中.
4.2.3消息适配器不同解析器对应着不同入口函数,将所有解析器入口数再次封装包裹,这样为上层路由选择层提供了一个统一的函数接口,如图5所示.消息队列上增加一个与ICT融合通信服务器中间件交互的组件,并且这个组件需要对外开放服务功能,那么只需在ICT融合通信服务器中间件内部增加一个对应的消息解析器即可,这样便于扩展组件,而不用修改ICT融合通信服务器中间件上层结构.
4.2.4消息解析器因为外部应用客户端以及挂在消息队列上各组件需要的消息格式不同,对应了各个不同的语法环境.消息解析器主要是对收到的消息进行处理,将其转化成特定语法坏境中的可识别的消息格式.这里消息其实就是一连串的字符串,消息的处理其实就是对字符串的处理,将其转换成特殊格式的字符串.以Agent解析器为例见图6.Agent解析器是ICT融合通信服务器中间件内部的一个解析器,其对应着挂在消息队列上的Agent组件.消息由外向内处理过程:Agent解析器将收到外部应用客户端的请求消息转换为Agent组件可识别的内部标准命令,最后由消息队列发送到Agent组件.消息由内向外处理过程:Agent解析器将收到Agent组件响应或事件消息转换成外部应用客户端可识别的数据格式,最终发往外部应用客户端.
4.3外部消息格式的定义外部消息格式描述的是外部应用客户端与ICT融合通信服务器中间件之间怎样交互.公开的通讯协议有两种,一种是基于XML文档格式的,比较直观,表现力强,容易扩展,但数据量大,传输效率低.另一种是基于二进制格式的,不直观,但传输效率高.客户端与服务端连接都需要认证,安全性有一定保证.客户端每发一条消息都有成功或失败的回应,可靠性比较高.ICT融合通信服务器中间件与外部应用客户端采用TCP连接下的C/S模式,其基于基于二进制格式的,外部消息格式定义如下页图7所示.每条消息数据头、数据体、数据尾组成.数据头以0xFE开头,长度固定为1B,数据尾以0xEE结尾,长度固定为1B.数据体长度不固定,采用类AMI(teriskManagerInterface)的消息格式,由一个或多个字段组成,每个字段包含一个字段名和字段值,字段名和字段值之间以“:”分隔,字段之间以“;”分隔,字段名不区分大小写.数据体第一个字段的字段名必须是Action、Response、E-vent三者中的一个,不区分大小写,对应的字段值称为消息名字.第一个字段名是Action,表示请求消息,外部应用客户端想要做什么,将该请求消息发往ICT融合通信服务器中间件.第一个字段名是Response,表示响应消息,与请求消息是一一对应的,ICT融合通信服务器中间件收到请求消息的处理后给出处理结果,将该响应消息发往外部应用客户端.第一个字段名是Event,表示事件消息,ICT融合通信服务器中间件主动上报给外部应用客户端的消息,例如Media服务器发出分机注册事件、分机状态事件等.外部应用客户端开发只需关心的是其与ICT融合通信服务器中间件交互的外部消息格式.ICT融合通信服务器中间件需要给出一份稳定的、完整的、清晰的外部消息格式说明文档,包括所有消息以及消息中各字段名与字段值说明.外部应用客户端按照给定文档发送请求消息,解析收到的响应消息和事件消息.
5测试
TCP&UDP测试工具:运行于Windows操作系统上的一种网络协议及数据包测试和调试工具,主要用于在网络通讯程序开发时,测试TCP或UDP通讯连接和测试数据的接收和发送情况,通过直观友好的界面实时展示发送和接收的数据.
5.1功能测试ICT中间件应用程序测试完成的功能主要有:①连接登录类:登录认证、注销、超时断开.②CTI呼叫控制类:发起呼叫、挂机、呼叫抢答、呼叫保持和恢复、肓转、呼叫转移、转移拉回、监听、强插、广播、查询分机状态、话务员示忙/示闲及状态查询.③会议类:召开立即会议、邀请加入会议、禁止成员发言、禁止成员听、踢出会议、查询会议、关闭会议.④补充业务查询、删除、设置类:呼叫限制、闹钟、免打扰、呼叫前转、黑白名单、语音信箱、振铃组等等.⑤通讯录类:查询通讯录.
5.2性能测试使用TCP&UDP测试工具模拟应用客户端,向作为服务端的中间件应用程序发送呼叫请求消息.利用linux中top命令,查看中间件应用程序进程占用资源见表2.TCP&UDP测试工具配置选择自动发送,发送时间间隔选择分别为0.01ms、0.1ms、10ms、1ms.发送消息为:(Action:MakeCall;Ext:3002;Caller:3002;Called:3001;)可以看出随着客户端发送消息量增多,内存占用量基本不变,但是CPU占用量明显增多.所以下步工作主要是研究如何解放CPU,减少CPU的使用量.
6结束语
本文通过对融合通信服务器中间件的背景研究,设计了融合通信服务器中间件分层架构,充分考虑了其扩展性,阐述了一些重要数据结构及内部模块的实现,完成外部消息的格式的定义.最后使用TCP&UDP测试工具模拟应用客户端,通过功能和性能测试,说明了融合通信服务器中间件的可用性.目前该融合通信服务器中间件组件已在项目中使用,运行良好,可以满足系统需求.后续还需进一步开发完善融合通信服务器中间件功能,配合消息队列总线上其它各组件进行联调测试,以及成千上万消息高并发处理的性能优化和改进.
参考文献:
[1]张亮.基于VoiceXML的呼叫中心中间件的研究与设计[D].银川:宁夏大学,2013.
[3]林晓勇,徐名海,阎巩平.基于中间件技术的CTI应用平台研究与实现[J].计算机应用与软件,2009,26(11):95-97.
[5]吕韶.基于中间件的电话营销呼叫中心的设计与实现[D].杭州:浙江大学,2006.
[6]余洁.基于MQ的呼叫中心传输系统的设计与实现[D].西安:西安电子科技大学,2014.
作者:林浒 牛庆华 杨海波 单位:中国科学院 沈阳计算技术研究所 中国科学院大学