论文部分内容阅读
摘 要: 当高清化、高负载成为电视会议发展的主流,传统的技术保障方式使得服务器遭遇到技术瓶颈,急需新的技术手段来保证会议系统的正常运行。为此,在介绍电视会议和云计算相关概念的基础上,提出了一种基于云计算的电视会议系统方案,该方案使用集群管理的方式来避免宕机事件的发生。采用该方案能减少电视会议系统建设成本,提高工作效率,进一步加快部队信息化建设的进程。
关键词: 电视会议; 云计算; 服务器; 集群管理; ZooKeeper
中图分类号:TP393 文献标志码:A 文章编号:1006-8228(2013)09-25-03
0 引言
随着全球经济的高速发展,电视会议市场也出现了较大的突破。经过多年的发展,电视会议技术日趋成熟,电视会议系统已经成为企事业单位系统建设的“标配”。电视会议能让身处异地的与会者不受时间、空间、网络的限制,获得语音、视频、图片、文件的自由通讯,方便单位内部人员的沟通协作,降低通讯成本。但是,当高清化成为市场的主流,电视会议服务器越来越不堪重负,电视会议系统大容量负载、大规模用户并发请求的通信要求使得传统电视会议技术遇到了瓶颈。如果采用升级硬件平台或是添加服务器的方法,不仅投入过于昂贵,而且不能根本性地解决问题[1]。
云计算的出现,为这一问题的解决提供了较好的途径。顺应当前网络应用模式转变的趋势,可扩展电视会议系统的体系结构,并部署于云计算平台之上。云会议采用分布式部署,这使得资源的调度将更加便捷。而电视会议对于画面的高清要求,也可以通过分布式部署来加以满足。成熟的云计算技术将为电视会议提供优质高效的保障。
1 系统相关技术
1.1 电视会议
电视会议是一种交互的多媒体(语音、图像、数据)通信手段,是音视频技术、压缩技术、数据传输、交换技术等手段的综合应用,建立在通信网络基础上。电视会议的目的是将图像、声音和数据尽可能不失真地传送到目的地。传输方式主要有双绞线传输、同轴电缆传输、微波传输、卫星传输、光纤传输等等[2]。
电视会议系统中传输的图像是用户最为关心的指标,影响图像的因素有终端设备的硬件编解码器、传输速率和视频编码格式。终端图像编码器将从摄像机得到的图像进行编码传输,并将得到的图像信号解码到视频输出设备,直接影响到图像的质量。足够的传输速率是图像传输的保证,通信线路的发展使图像传输得到了充分的保证。当传输速率达到384Kbps以上时,用户就可以得到清晰流畅的视频图像。现在电视会议系统比较常用的传输速率在768K-4096Kbps,这样的传输速率可以保证比较流畅的图像质量[3]。
1.2 集群管理
分布式应用系统通常部署在一个有多台服务器的集群环境中,当集群规模达到一定程度后,宕机事件极易发生。对于一个高可用系统,必须能够容忍一定数量的机器故障,当故障发生时,其他机器应该可以感知到并作出相应处理。ZooKeeper是Apache Hadoop开源项目中的子项目,提供了一个分布式的协调服务框架。ZooKeeper本身部署在2N+1(N>0)台机器的集群系统中,可以容忍N台机器宕机,在保证高可用性同时还支持高性能的写操作。用户构建的分布式应用可以使用ZooKeeper提供的namespace数据模型来表达用户集群的结构,当用户集群中有机器宕机时,ZooKeeper可以提供通知机制,应用系统可以根据自己的业务需求处理宕机事件。图1给出了采用namespace数据模型描述的某个集群结构。
该集群由3台机器组成,分别对应namespace模型中group节点下的3个子节点,这些子节点是瞬时顺序节点。瞬时表示每个节点的寿命不会超过创建节点的进程的寿命,当创建节点的进程结束时,这些节点会自动删除,其他在该节点上设置了Watcher的进程会收到通知;顺序表示每个进程创建节点都有一个序号,该序号是单调递增的。利用节点的这种特性,集群中每台机器对应一个瞬时顺序节点,当某台机器宕机后,其他机器中的进程可以收到该节点被删除的通知,这样每台机器都可以感知集群中机器的状态信息,从而实现了集群管理[4]。
2 系统实现
2.1 会议系统构成
电视会议系统主要由电视会议终端、多点控制单元和传输网络三部分组成。如图2所示。
电视会议终端主要功能是完成音视频信号的输入和输出,并且传输数据信号。电视会议终端将音视频信号和数据、指令等数字信号处理成数字码流,再将它转变成与网络接口兼容的信号格式以信道帧结构送入网络进行传输。当两个终端之间需要召开点对点会议的时候,使用终端里的拨号功能就可以实现互联互通。而多个终端之间要参加会议的时候,就需要MCU(多点控制单元)。多点控制单元能实现电视会议终端多点间的音视频互通和数据交换。它将处理后的音视频信号分配给对应连接的信道。实际上多点控制单元是一台多媒体数据交换机,实现多点间的连接,具备音视频广播、多画面合成、信息交换等功能,实现各会议终端的连接与切换。它的作用就像电话交换系统,按照用户的需求进行多点间的语音传输。多点控制单元为拥有多个分会场的会议召开提供了理想的解决方案。MCU的可堆迭结构使得会议容量具有可扩展性,可根据终端的增加来增加MCU的数量。在多点会议系统中,网关和网闸具有非常重要的作用。网关使符合不同标准的视频终端之间的视频会议成为现实。网关能提供不同标准终端之间的呼叫信号翻译、控制信道信息、音频编码翻译和多路复用技术。网闸是构建成功的IP电话或多媒体网络的关键组件。通过网闸,网络管理员可配置、监控和管理网络系统,使网络管理员控制网络资源(带宽),限制区域内最高带宽和终端占用的带宽,优化IP网络上实时的音频、视频和数据会议。
2.2 电视会议集群管理的实现
在电视会议系统中,需要对计算集群进行管理。电视会议的所有服务器构成该集群,当集群中任何一台服务器宕机时,应用程序可以得到通知,及时处理相应的事件。由于每个应用程序需要在每台服务器上部署,当应用程序的配置改变时,需要修改每台机器的配置。当集群规模大时,手工完成劳动量会很大,这时我们就要用到ZooKeeper。 ZooKeeper提供了构建分布式应用时通用的底层基础设施,利用这些基础设施,分布式系统能够实现配置管理、集群管理等核心功能,这些功能可以通过对ZooKeeper提供的namespace数据模型(一种类似文件系统的树形结构)进行适当的操作而实现。Namespace数据映像模型上的操作包括创建、删除、修改等,这些操作具有顺序一致性、原子性、单一系统映像(Single System Image)、可靠性、及时性(Timeliness)等特性,同时数据模型上的每个节点还支持安装触发器(Watcher)。我们可以利用ZooKeeper提供的数据模型(namespace)保存配置文件,当配置有变动时,相应的应用程序可以得到通知,及时处理配置变更。
应用服务器(App Server)被作为ZooKeeper集群的客户端接入集群中,同时,它们又被作为用户直接访问的服务器。每个App Server在接入ZooKeeper集群时会向集群注册自己,这样可以利用ZooKeeper的集群管理功能,使得App Server能够快速响应集群的变化。为了达到上述目的,App Server需要实现一个集群管理器。集群管理器的设计非常简单,只需要一个主要的类封装ZooKeeper的功能即可,如图3所示。
GroupManager在应用程序中作为一个单独模块,向上提供集群管理API,应用程序通过集群管理API可以“实时”感知集群信息,同时也“实时”上传自己的负载信息到集群中被其他机器感知。GroupManager使用ZooKeeper对象(ZooKeeper Client)与ZooKeeper Server中对应的znode。GroupManager在集群目录上设置了Watcher,于是ZooKeeper向GroupManager发送节点变更通知,GroupManager根据集群管理对外提供的抽象功能,对事件进行处理,向上层应用程序提供宕机事件通知。在电视会议系统中,部署在多个机器上的应用程序需要感知整个集群的状态,以及某个机器的信息,并在机器状态变化时触发自己的事件处理程序,所以在每个应用程序中都有一个集群管理器的实例,应用程序通过集群管理器访问/管理集群。部分程序代码如下:
Case SyncConnected:
{ switch(type)
{ case NodeChildrenChanged:
{ //集群节点有变化
int size=getSize();
ListChildren=getALLMachines();
If(size { //宕机,找到宕机地址
ListdownMachines=findDownMachines
(children,curMachines);
…
}
在集群中部署的应用程序都有自己的配置,有些配置是某个进程独有的,有些是不同物理机上所有进程共享的。通常分布式应用程序在多台物理机上部署时,大部分配置都是一致的,可以将一致的部分抽取出来放在ZooKeeper Server的namespace中作为共享配置,当某个进程修改共享配置时,其他进程会收到ZooKeeper提供的通知,做出相应的处理。
应用程序的配置完全由配置管理器来管理,配置管理器可以将应用程序的配置存放在ZooKeeper znode中,并且保证对于共享配置的修改是同步的。当应用的某个进程在修改共享配置时,其他进程不可读取/修改共享配置;在进程修改配置结束后,其他进程会收到共享配置更新的通知,然后做相应的处理,所以事实上配置管理器还需要一个分布式锁Lock来完成同步,即当应用程序(进程)读共享配置时,对共享配置加读(共享)锁,允许其他进程加读锁,但不允许加写(排他)锁;当进程写共享配置时,对共享配置加写锁,此时不允许其他进程加读锁;对共享配置访问完成后释放相应的锁。
2.3 系统测试
编写TEST类对电视会议集群管理进行测试。服务器启动后其配置管理模块自动连接到ZooKeeper Server上,然后执行写配置过程,测试中随机输入两个数字作为配置数据,写配置时,ConfigManager输出日志表示申请到了写锁,然后更改了数据,释放写锁;接着测试读配置功能,先申请读锁,读取数据,释放读锁,最后打印出读取的配置数据。系统测试结果如图4所示。
3 结束语
本文设计了一种基于云计算的电视会议系统。该系统将集群管理的概念应用到电视会议当中,通过实际测试,系统运行情况良好,符合系统设计的目标。下一步还要对系统进行长期的大量测试,研究并解决系统运行中的偶发故障,逐步使该系统完善。
参考文献:
[1] 鲍亮,陈荣.深入浅出云计算[M].清华大学出版社,2012.
[2] 黎连业,王安,李龙.云计算基础与实用技术[M].清华大学出版社,2013.
[3] 孙涛.面向云的视频会议系统设计与实现[D].北京交通大学,2011.
[4] 沈旭磊,蒋琼燕.UT斯达康基于云计算的高清视频会议系统[J].电信网技术,2011.10:83-85
关键词: 电视会议; 云计算; 服务器; 集群管理; ZooKeeper
中图分类号:TP393 文献标志码:A 文章编号:1006-8228(2013)09-25-03
0 引言
随着全球经济的高速发展,电视会议市场也出现了较大的突破。经过多年的发展,电视会议技术日趋成熟,电视会议系统已经成为企事业单位系统建设的“标配”。电视会议能让身处异地的与会者不受时间、空间、网络的限制,获得语音、视频、图片、文件的自由通讯,方便单位内部人员的沟通协作,降低通讯成本。但是,当高清化成为市场的主流,电视会议服务器越来越不堪重负,电视会议系统大容量负载、大规模用户并发请求的通信要求使得传统电视会议技术遇到了瓶颈。如果采用升级硬件平台或是添加服务器的方法,不仅投入过于昂贵,而且不能根本性地解决问题[1]。
云计算的出现,为这一问题的解决提供了较好的途径。顺应当前网络应用模式转变的趋势,可扩展电视会议系统的体系结构,并部署于云计算平台之上。云会议采用分布式部署,这使得资源的调度将更加便捷。而电视会议对于画面的高清要求,也可以通过分布式部署来加以满足。成熟的云计算技术将为电视会议提供优质高效的保障。
1 系统相关技术
1.1 电视会议
电视会议是一种交互的多媒体(语音、图像、数据)通信手段,是音视频技术、压缩技术、数据传输、交换技术等手段的综合应用,建立在通信网络基础上。电视会议的目的是将图像、声音和数据尽可能不失真地传送到目的地。传输方式主要有双绞线传输、同轴电缆传输、微波传输、卫星传输、光纤传输等等[2]。
电视会议系统中传输的图像是用户最为关心的指标,影响图像的因素有终端设备的硬件编解码器、传输速率和视频编码格式。终端图像编码器将从摄像机得到的图像进行编码传输,并将得到的图像信号解码到视频输出设备,直接影响到图像的质量。足够的传输速率是图像传输的保证,通信线路的发展使图像传输得到了充分的保证。当传输速率达到384Kbps以上时,用户就可以得到清晰流畅的视频图像。现在电视会议系统比较常用的传输速率在768K-4096Kbps,这样的传输速率可以保证比较流畅的图像质量[3]。
1.2 集群管理
分布式应用系统通常部署在一个有多台服务器的集群环境中,当集群规模达到一定程度后,宕机事件极易发生。对于一个高可用系统,必须能够容忍一定数量的机器故障,当故障发生时,其他机器应该可以感知到并作出相应处理。ZooKeeper是Apache Hadoop开源项目中的子项目,提供了一个分布式的协调服务框架。ZooKeeper本身部署在2N+1(N>0)台机器的集群系统中,可以容忍N台机器宕机,在保证高可用性同时还支持高性能的写操作。用户构建的分布式应用可以使用ZooKeeper提供的namespace数据模型来表达用户集群的结构,当用户集群中有机器宕机时,ZooKeeper可以提供通知机制,应用系统可以根据自己的业务需求处理宕机事件。图1给出了采用namespace数据模型描述的某个集群结构。
该集群由3台机器组成,分别对应namespace模型中group节点下的3个子节点,这些子节点是瞬时顺序节点。瞬时表示每个节点的寿命不会超过创建节点的进程的寿命,当创建节点的进程结束时,这些节点会自动删除,其他在该节点上设置了Watcher的进程会收到通知;顺序表示每个进程创建节点都有一个序号,该序号是单调递增的。利用节点的这种特性,集群中每台机器对应一个瞬时顺序节点,当某台机器宕机后,其他机器中的进程可以收到该节点被删除的通知,这样每台机器都可以感知集群中机器的状态信息,从而实现了集群管理[4]。
2 系统实现
2.1 会议系统构成
电视会议系统主要由电视会议终端、多点控制单元和传输网络三部分组成。如图2所示。
电视会议终端主要功能是完成音视频信号的输入和输出,并且传输数据信号。电视会议终端将音视频信号和数据、指令等数字信号处理成数字码流,再将它转变成与网络接口兼容的信号格式以信道帧结构送入网络进行传输。当两个终端之间需要召开点对点会议的时候,使用终端里的拨号功能就可以实现互联互通。而多个终端之间要参加会议的时候,就需要MCU(多点控制单元)。多点控制单元能实现电视会议终端多点间的音视频互通和数据交换。它将处理后的音视频信号分配给对应连接的信道。实际上多点控制单元是一台多媒体数据交换机,实现多点间的连接,具备音视频广播、多画面合成、信息交换等功能,实现各会议终端的连接与切换。它的作用就像电话交换系统,按照用户的需求进行多点间的语音传输。多点控制单元为拥有多个分会场的会议召开提供了理想的解决方案。MCU的可堆迭结构使得会议容量具有可扩展性,可根据终端的增加来增加MCU的数量。在多点会议系统中,网关和网闸具有非常重要的作用。网关使符合不同标准的视频终端之间的视频会议成为现实。网关能提供不同标准终端之间的呼叫信号翻译、控制信道信息、音频编码翻译和多路复用技术。网闸是构建成功的IP电话或多媒体网络的关键组件。通过网闸,网络管理员可配置、监控和管理网络系统,使网络管理员控制网络资源(带宽),限制区域内最高带宽和终端占用的带宽,优化IP网络上实时的音频、视频和数据会议。
2.2 电视会议集群管理的实现
在电视会议系统中,需要对计算集群进行管理。电视会议的所有服务器构成该集群,当集群中任何一台服务器宕机时,应用程序可以得到通知,及时处理相应的事件。由于每个应用程序需要在每台服务器上部署,当应用程序的配置改变时,需要修改每台机器的配置。当集群规模大时,手工完成劳动量会很大,这时我们就要用到ZooKeeper。 ZooKeeper提供了构建分布式应用时通用的底层基础设施,利用这些基础设施,分布式系统能够实现配置管理、集群管理等核心功能,这些功能可以通过对ZooKeeper提供的namespace数据模型(一种类似文件系统的树形结构)进行适当的操作而实现。Namespace数据映像模型上的操作包括创建、删除、修改等,这些操作具有顺序一致性、原子性、单一系统映像(Single System Image)、可靠性、及时性(Timeliness)等特性,同时数据模型上的每个节点还支持安装触发器(Watcher)。我们可以利用ZooKeeper提供的数据模型(namespace)保存配置文件,当配置有变动时,相应的应用程序可以得到通知,及时处理配置变更。
应用服务器(App Server)被作为ZooKeeper集群的客户端接入集群中,同时,它们又被作为用户直接访问的服务器。每个App Server在接入ZooKeeper集群时会向集群注册自己,这样可以利用ZooKeeper的集群管理功能,使得App Server能够快速响应集群的变化。为了达到上述目的,App Server需要实现一个集群管理器。集群管理器的设计非常简单,只需要一个主要的类封装ZooKeeper的功能即可,如图3所示。
GroupManager在应用程序中作为一个单独模块,向上提供集群管理API,应用程序通过集群管理API可以“实时”感知集群信息,同时也“实时”上传自己的负载信息到集群中被其他机器感知。GroupManager使用ZooKeeper对象(ZooKeeper Client)与ZooKeeper Server中对应的znode。GroupManager在集群目录上设置了Watcher,于是ZooKeeper向GroupManager发送节点变更通知,GroupManager根据集群管理对外提供的抽象功能,对事件进行处理,向上层应用程序提供宕机事件通知。在电视会议系统中,部署在多个机器上的应用程序需要感知整个集群的状态,以及某个机器的信息,并在机器状态变化时触发自己的事件处理程序,所以在每个应用程序中都有一个集群管理器的实例,应用程序通过集群管理器访问/管理集群。部分程序代码如下:
Case SyncConnected:
{ switch(type)
{ case NodeChildrenChanged:
{ //集群节点有变化
int size=getSize();
List
If(size
List
(children,curMachines);
…
}
在集群中部署的应用程序都有自己的配置,有些配置是某个进程独有的,有些是不同物理机上所有进程共享的。通常分布式应用程序在多台物理机上部署时,大部分配置都是一致的,可以将一致的部分抽取出来放在ZooKeeper Server的namespace中作为共享配置,当某个进程修改共享配置时,其他进程会收到ZooKeeper提供的通知,做出相应的处理。
应用程序的配置完全由配置管理器来管理,配置管理器可以将应用程序的配置存放在ZooKeeper znode中,并且保证对于共享配置的修改是同步的。当应用的某个进程在修改共享配置时,其他进程不可读取/修改共享配置;在进程修改配置结束后,其他进程会收到共享配置更新的通知,然后做相应的处理,所以事实上配置管理器还需要一个分布式锁Lock来完成同步,即当应用程序(进程)读共享配置时,对共享配置加读(共享)锁,允许其他进程加读锁,但不允许加写(排他)锁;当进程写共享配置时,对共享配置加写锁,此时不允许其他进程加读锁;对共享配置访问完成后释放相应的锁。
2.3 系统测试
编写TEST类对电视会议集群管理进行测试。服务器启动后其配置管理模块自动连接到ZooKeeper Server上,然后执行写配置过程,测试中随机输入两个数字作为配置数据,写配置时,ConfigManager输出日志表示申请到了写锁,然后更改了数据,释放写锁;接着测试读配置功能,先申请读锁,读取数据,释放读锁,最后打印出读取的配置数据。系统测试结果如图4所示。
3 结束语
本文设计了一种基于云计算的电视会议系统。该系统将集群管理的概念应用到电视会议当中,通过实际测试,系统运行情况良好,符合系统设计的目标。下一步还要对系统进行长期的大量测试,研究并解决系统运行中的偶发故障,逐步使该系统完善。
参考文献:
[1] 鲍亮,陈荣.深入浅出云计算[M].清华大学出版社,2012.
[2] 黎连业,王安,李龙.云计算基础与实用技术[M].清华大学出版社,2013.
[3] 孙涛.面向云的视频会议系统设计与实现[D].北京交通大学,2011.
[4] 沈旭磊,蒋琼燕.UT斯达康基于云计算的高清视频会议系统[J].电信网技术,2011.10:83-85