基于Web集群的海量影像显示技术研究①

2019-04-29 08:58孙峻岭假露青刘其军汪操根
计算机系统应用 2019年4期
关键词:海量应用程序客户端

孙峻岭,假露青,刘其军,汪操根

(广州瀚阳工程咨询有限公司,广州 510220)

1 引言

随着网络和信息技术的迅速发展,Internet 上的信息总量呈爆炸式增长,在很短时间内汇集了海量的文本、图片、影像等信息,成为了世界上覆盖信息面积最大的信息资源库.目前,在互联网平台的支持下,人们处于信息量巨大、信息交换和更新极快的环境中.在遇到和专业相关的问题时,他们经常希望能够以可视化的高清视频会议进行多人交流互动、促进资源共享.如何在互联网基础上实现海量影像共享超高分辨显示,使其为城市管理、远程会议乃至生活服务,是信息显示系统升级和发展的方向[1-3].

基于Web 集群的显示技术的进步极大地影响了协同工作和资源共享,网络越来越多地用于教学、企业会议和智慧城市管理中心等各种工作场景.基于Web的显示技术,如谷歌的Hangouts、WebEx 和Skype,它们都是为支持远程协作而设计的成功商业产品的例子,允许单个用户通过远程视频会议和桌面镜像与当个异地用户点对点工作[4-6].但它们都是针对单个用户的有效工具,没有一个能够成功地满足多个用户的海量信息共享显示的要求,也难以满足在智慧城市管理核心、指挥调度中心、多用户远程会议等领域日益增长的海量影像超高分辨显示的需要.因此,研究多用户的海量影像超高分辨显示技术迫在眉睫.

2 集群显示技术及系统结构

海量影像显示系统主要由集群网络服务端、用户客户端、网络交换机、高清显示屏和Web 应用软件组成.系统通过Web 应用软件实现多个异地用户客户端与集群显示设备进行实时的通信和交互,依靠集群的强大的并行计算能力,实现多个异地用户海量影像在集群设备的拼接屏上超高分辨显示.

2.1 集群显示技术

Web 集群是基于Web 浏览器技术下的一种计算机集群系统的简称,它是由高速计算机网络互连形成的分布式并行计算机系统,用来提供更加稳定、综合的计算资源.集群按功能主要分为四类:高性能计算集群、负载均衡集群、网格计算和高可用性集群.因高性能计算集群更适合进行大量的分布式并行计算,所以成为构建大型拼接显示系统的首选架构[7-9].集群网络服务端由一台主节点服务器和多台子节点机组成,客户端使用可入网的个人电脑即可.各个计算机之间通过千兆网交换机互连组成一个Web 集群架构,系统在集群网络的基础上进行影像信息的处理和显示.客户端与主节点服务器通过TCP/IP 协议进行数据传输,系统中的主节点机和子节点集群使用UDP 协议进行通信.

集群显示架构图如图1所示.计算机集群显示技术主要有两种配置方式:多点配置模式和热备份配置模式,本系统主要采用多点配置模式,这种模式的计算机集群由N 个计算机节点组成,没台子节点机连接2 至4 台高清显示屏,所有计算工作平均分布在各个节点.利用集群把大量的计算任务分割成独立的小块,各个小块计算任务由集群的计算机节点并行计算处理,实现海量影像的超高分辨渲染显示.

图1 集群显示结构图

随着计算机技术的逐渐发展以及共享网络基础设施越来越支持更高的传输宽带,集群显示技术已逐渐成熟.因其具有结构简单易于搭建、自由伸缩、运算能力强、性价比高等诸多优点,Web 集群显示技术为海量互联网影像的获取和计算渲染提供了稳定可靠的技术支持.

2.2 系统结构设计

海量影像显示系统是一个以集群显示技术为核心的显示平台,通过获取来自不同客户端的大型影像数据,并将其共享、同步、渲染和平铺显示到拼接屏上.图2是以集群架构为基础的海量影像拼接显示系统示意图.

图2 Web 集群显示系统结构

图2中,主节点机和子节点机都包括Web 应用程序、同步控制模块和渲染模块,所有客户端也都安装Web 应用程序.用户在客户端将各自的影像资源通过Web 应用程序共享到集群主节点服务器,通过同步控制模块和渲染模块处理后显示到拼接屏上.

主节点机作为客户端的服务器,用于接收多个客户端的影像信息,控制整个系统数据流的同步,处理所有显示数据流的输入和输出,显示场景预设,以及接收和响应的用户指令.另外,主节点会根据应用程序通信指令和交互事件,协调控制各个子节点,对显示窗口进行显示调度和窗口初始化控制,并通过窗口管理模块可以协助主节点管理员对所有用户的显示窗口进行统一管理.其中子节点计算机在同步控制模块下完成各个节点机的显示同步.

海量影像渲染过程中需要进行大量的计算工作,渲染模块需要借助CPU+GPU 强大的混合处理能力,完成对所有客户端的影像数据分布式并行计算处理,以及海量影像的渲染显示输出[10].因为采用集群系统架构对影像数据进行分布式并行计算处理,改变了传统显示技术中将所有显示数据和程序都在一台核心机上进行集中处理模式,突出了集群并行拼接显示系统支持多用户交互、扩展灵活、资源获取方便、显示分辨率高等优点.其详细的系统方案实现将会在第3 节进行论述.

3 系统方案实现

多用户的海量影像显示系统方案实现过程主要分为客户端影像信息共享、同步显示控制、窗口调度管理和海量影像渲染显示四个部分.其系统显示方案实现流程如图3所示

图3 系统显示实现方案流程

3.1 客户端影像信息共享

集群服务器与用户客户端基于http 协议及Java script 编写Web 应用程序,实现客户端与集群显示系统实现数据传输和共享显示.所述Web 应用程序集成的Web 浏览器,是用来实现客户端和显示系统之间通信的软件模块.Web 应用程序是跨平台的,支持在Windows,Mac,Linux 系统中运行,其中Web 浏览器包括多个JSP 页面(Java Server Pages)、JavaServlet、HTML文件以及海量影像资源等组件[11,12].所有这些Web 组件协同工作为应用程序提供浏览、上传和共享显示的功能.这些web 基本组件在系统中封装了自定义元素、影子DOM、HTML 导入和HTML 模板,它允许在Web 文档和Web 应用程序中创建可重用的小部件或组件,使得应用程序可以直接进入万维网.

Web 应用程序因其具有易于访问,耗费硬盘空间少、跨平台性、易与现有的网络产品结合等优点,不需要其他任何复杂的开发过程,只需要提供一个合适的浏览器.目前WebSocket 通信已经标准化,可以在服务器和客户端之间实现持久的双向通信,此外,浏览器可以从输入设备(如鼠标、键盘和触摸屏)捕获事件[13].因此本系统采用了包含浏览器技术的应用程序来进行多用户的交互.

为了各个节点机同步获取客户端的信息资源,显示系统的主、子节点计算机都集成Web 应用程序,同时,所有交互客户端的电脑上也需要安装一个客户端的Web 应用程序.所有的Web 应用程序都集成的浏览器,主节点计算机端的应用程序通过URL 向各个用户客户端发送数据请求,主节点计算机端的应用程序向各个用户请求的数据不是整个网页,而是由URL 指定的坐标和大小的网页资源,这些资源包括数字影院动画、高分辨率图像、高清视频电话会议、演示幻灯片、文档、电子表格或笔记本电脑屏幕.客户端应用程序Web 服务请求过程如图4所示.

图4 应用程序Web 服务请求过程

应用程序Web 服务请求过程中URL 标准格式为[14]:

http://hostname[:port]/path/[;parameters][?query]

标准格式中http 代表协议头,[]中代表可选部分,例如:

http://192.169.0.60.9090?version=1.1.2&Request=C etImage&SRS=4326&BBOX=-99.135.35.913.56.794,36.241&Width=128&Fleight=127&Layers=Test&Format=image/png.

以上URL 链接实例中,主要包括以下五个部分.

(1)192.169.0.60.9090 表示用户计算机的地址和端口;

(2)Request 为当前请求的指令类型;

(3)BBOX 获取的是影像的坐标,其中Width 和Height表示得到影像的大小;

(4)Layers 为获取影像中显示的图层;

(5)Format 为获取影像的具体格式.

3.2 同步显示控制

海量影像显示系统中,所有节点机都采用多核多线程的CPU,最大限度的满足主节点机的应用程序同时与多个用户端应用程序进行通信,实现显示对象在拼接屏中的布局、移动、旋转、缩放和更新等功能.由于所有的异地客户端是在个人设备上运行的,因此,如何使多个用户交互事件与海量影像显示系统上所需的操作关联起来,并使得多个客户端所有影像数据在拼接显示屏同步,这是实现多用户共享显示的一个至关重要的问题.

为了解决这个问题,使得每个子节点计算机的同步,主节点服务器的应用程序从客户端应用程序捕获事件和指令后,由Web 集群网络组播发送给显示系统中的所有子节点计算机,然后通过主节点计算机向每个显示子节点计算机广播这些事件、指令来重新绘制动画.每个子节点应用程序响应主节点广播的指令之后,子节点计算机会返回处理的状态.一旦主节点机接收到来自所有子节点计算机的正确响应,主节点计算机就会广播下一个重绘命令,完成海量影像渲染显示.以这种集群同步控制方式处理海量信息,实现节点机显示单元的信息同步,以满足超高分辨海量信息对展示同步的苛刻要求,使得系统保持拼接显示屏的视觉同步,确保信息展示的实时性、准确性和高效性.

在应用程序发送Web 服务请求指令并进行影像同步过程中,GetImage 和GetConfigure 是必须响应的两种事件指令,这两种请求的基本信息正常返回即可完成用户的影像信息显示.通过发送GetImage 和GetConfigure 等程序指令到各客户机的应用程序,客户端应用程序对和事件指令进行响应并根据其中设定的详细参数,获取影像资源.

(1)GetImage 返回一帧视频影像或者一张图片,格式类型、坐标、显示宽度和高度等初始化参数;

(2)GetConfigure 返回应用程序的服务参数,包括当前版本号、客户端id,及一些配置信息,在请求的过程中,我们将客户端的id 附加到URL 上,以便用唯一的id 标识每个显示用户客户机,将其映射到拼接屏上的特定行和列;

3.3 窗口调度管理

为了实现多个客户端和集群网络窗口管理和应用程序事件处理的自由切换,系统拥有窗口管理模式和应用程序交互模式.在窗口操作模式下,应用程序的任何位置都会在窗口上执行事件(单击、拖动或者滚动);在应用程序交互模式下,所有事件都被转发到交互应用程序来处理.从多个客户端获取得到的影像信息时,需要在显示系统上对其进行显示位置和显示窗口大小的调整.调整窗口大小可以通过点击和拖动一个角落来实现,移动窗口可通过点击和拖动一个标题栏来完成.系统中,窗口移动和缩放操作响应时间可低于0.2 s,因此这些客户端影像显示过程是连续的,可以无缝地在显示中移动和缩放.

集群显示系统会根据每个客户端ID 初始化显示窗口,包括窗口的高度、宽带和位置坐标等信息,然后主节点管理员对各个客户端的影像在拼接屏上进行拖曳、层叠、移动和缩放操作,实现多个用户的所有影像任意窗口布局、大小和排列方式.

系统将Web 应用程序事件和窗口管理封装在一个类中.因此,应用程序可以根据需要多次动态实例化.另外,将所有用户输入事件转发给这些应用程序,以便它们能够响应多用户输入,比如独立的键盘、指向设备和鼠标事件.

其中,窗口管理模式主要事件处理如下:

(1)MousePointer:function()点击应用程序窗口,转换到窗口管理模式;

(2)MouseLeft:function()点击底部中右角落的一个应用程序来调整窗口;

(3)MouseRight:function()右键单击应用程序窗口栏,进行属性设置;

(4)ResizeWindows:function()通过点击和拖动右下角改变用户窗口的大小.

应用程序交互模式事件处理如下:

(1)AppEvent:function()将所有事件转发到应用程序;

(2)SystemPointer:function()按Shift + Tab 的切换系统指针模式;

(3)Quit:function()按Esc 的释放对显示系统的控制;

(4)ErrorEvent:function()事件出错处理;

(5)GetUrl:function()通过用户地址获取影像数据.

3.4 海量影像渲染显示

多个用户的海量影像超高分辨同时显示,需要进行大量的计算来完成数据解析和影像的渲染.传统的影像显示是在一台核心处理机上进行,这必然会受到

计算机性能的限制,海量影像的加载和渲染不能同时进行,需要将影像信息全部加载完毕才能进行渲染绘制,当处理海量影像数据或者进行窗口更新时,这必然会导致显示速度慢,影像整体的显示流畅性.

针对传统影像渲染显示的流畅性欠缺的问题,在海量显示时,为了保证流畅的渲染速度和用户操作体验.系统基于并行CPU+GPU 混合的处理方式,在渲染模块中集成了开发了OpenGL Show 子程序实现海量影像的渲染处理,凭借CPU+GPU 的并行计算速度、图形处理能力和良好的可编程性,实现对多个用户影像资源的渲染[15,16].

OpenGL Show 子程序影像数据渲染效果的类图如图5所示

图5 影像数据渲染类图

其中,OGLShowProgram 封装了OpenGL 的Show 着色、显示相关的功能,以面向对象的方式绑定程序配置文件,设置和读取Show 程序的相关参数;imGLShow Base 是从OGLShowProgram 派生的类,主要用于各种渲染显示程序的重写和复用、其中imGLShowManager是所有Show 渲染程序的容器,用于统一绑定和编译渲染程序;imGLShowColor 实现了海量影像的基本渲染效果能力,包括透明度、亮点、对比度、拉伸效果渲染和RGB 真彩色渲染效果;imGLShowNormal 集成应用程序的派生扩展功能、imGLShowObject 提供了边界渲染、填充渲染和分类渲染等效果、imGLShow Factory 提供应用渲染程序类的建立、编译和绑定能力.

海量影像显示系统的各个子节点机上CPU+GPU混合计算处理方式,既可以发挥多核CPU 在管理调度、事务逻辑等方而强大的综合计算处理能力,又充分利用了GPU 高速并行计算完成信息渲染显示任务的能力,使集群并行显示系统可完成高负载、高吞吐的海量信息高速显示任务.

基于Web 集群构建的并行显示系统,可以为海量影像的显示提供有效的计算平台,系统提供了一个集群分布式计算处理的显示环境,允许用户访问、显示和分享各种各样的数据密集型的信息.用户的影像可以有多个来源、不同的格式和大小,并能以任意大小平铺在拼接显示屏上.

4 实验结果

为了验证在Web 集群的海量影像显示技术的处理能力,搭建了由一台主节点计算机和三台子节点计算机组成的集群显示系统进行试验验证,同时使用了三台安装了Web 应用程序且连接高速网络的PC 电脑作为客户机.

系统中三台子节点计算机都分别与四块高清显示屏连接,十二块显示屏组合成三行四列超高分辨的拼接显示屏.其中每块显示屏的分辨率为1920×1080,整个显示分辨率可达7680×3240.其显示效果如图6所示.

图6 海量影像显示

拼接屏上显示了两个客户端的桌面镜像和一个客户端的8G tiff(Tag Image File Format)格式的超高分辨图.系统在窗口管理模式下,通过在主节点计算机的窗口进行移动、缩放等操作,将获取得到的用户界面进行移动和缩放,得到的图形显示结果如图7所示.

通过实验的显示结果可以发现,基于Web 集群的海量影像显示系统能够对多个用户的海量信息资源进行显示,拥有超高的显示分辨率.同时,集群也可采用一台主节点机和4-6 台的子节点机进行系统搭建,集群规模越大,处理与显示的能力越高,随着子节点计算机和拼接显示屏的扩展,Web 集群海量影像显示系统的交互用户和显示分辨率的输出能力将会进一步增加.

图7 显示窗口管理

5 结语

本文根据多用户海量数据显示的特点以及显示的难点,使用基于Web 集群和浏览器技术来实现多用户海量影像超高分辨的共享显示.本文简要的说明了研究背景和意义,对显示系统结构、系统设计以及关键技术进行了分析与研究,并详细论述了集成浏览器技术的应用程序、海量影像获取方法、同步显示控制技术、多用户窗口管理和渲染显示等技术.搭建了可实现显示能力的任意扩容分布式集群海量影像显示系统,解决了传统显示技术无法解决的异地多用户海量影像显示问题.实验证明,基于Web 集群的显示技术能够将多异地用户共享的信息资源和海量影像进行超高分辨率显示,为海量信息在大型共享拼接屏上超高分辨显示提供了可行的解决方案.

猜你喜欢
海量应用程序客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
一种傅里叶域海量数据高速谱聚类方法
海量GNSS数据产品的一站式快速获取方法
删除Win10中自带的应用程序
海量快递垃圾正在“围城”——“绿色快递”势在必行
谷歌禁止加密货币应用程序
一个图形所蕴含的“海量”巧题
媒体客户端的发展策略与推广模式
新华社推出新版客户端 打造移动互联新闻旗舰