APP下载

基于互联网的异步LED显示屏集群管理系统的设计与实现

2014-11-09王瑞光

液晶与显示 2014年6期
关键词:数据包客户端终端

刘 飞,王瑞光,陈 伟

(1.中国科学院 长春光学精密机械与物理研究所,吉林 长春 130033;2.中国科学院大学,北京 100049)

1 引 言

LED(Light Emitting Diode)显示屏作为一种显示设备,具有色域广、显示面积大和使用寿命长等优点,在许多领域都得到了广泛应用[1-3]。异步LED显示屏(下文简称异步屏或屏幕终端)是相对于同步显示屏而言,同步显示屏的显示内容是通过高速数据传输将计算机屏幕内容的一部分直接映射到显示屏上,而异步屏则是通过在结构内部嵌入工控计算机如RISC嵌入式系统对屏幕显示的内容进行独立控制,用户可以通过计算机网络或者移动存储设备对显示内容进行更新,因此广泛应用于分散布置的显示屏,如广告屏、交通诱导屏、车载屏等[4-5]。目前国内异步屏控制系统大多采用RS485总线和局域网作为通信媒介,上位机通过串口或以太网网口控制异步屏更新数据和屏幕显示。随着异步屏应用越来越广泛,每个单位可拥有多达上百个屏幕终端,且分布范围具有跨城市、跨地域等特点,如高速公路情报板和气象预警屏。同时3G/4G无线通信技术的不断发展和成熟,也加速了异步屏分布式应用的需求,使用小范围内的网络环境或者局域网技术的控制系统,在处理大数量显示屏跨地域分布布线,以及系统的维护等问题上已经无法满足大多数用户的需求。

本文基于目前互联网技术进行系统设计,充分利用现有网络运营商提供的网络基础设施,如基站信号的广泛覆盖,宽带在全国各地的普及等。区别于国内大多数显示屏控制系统按照点对点或一对多的局域网控制模式,提出一种多对多的异步屏控制模式。通过搭建具有独立域名的中间服务器实现多屏幕和多客户管理、媒体文件暂存、用户屏幕之间数据透明转发等功能,使得能连入互联网的异步屏和用户可以随时随地进行实时监控和内容更新,更大程度地降低了通信线路布线成本和使用灵活性。

2 系统总体设计

2.1 系统基本结构

图1为本文提出的异步LED显示屏集群管理系统结构图,分为4个部分:数据中转服务器,媒体服务器,屏幕终端,客户端。

图1 异步LED显示屏集群管理系统结构图Fig.1 Framework of asynchronous LED display centralized management system

数据中转服务器是一台具有独立域名或者广域网IP地址的主机,安装Linux操作系统服务器版本。本文设计的数据中转服务软件基于Linux环境运行,同时监听多个端口来接收并维持当前登录用户和已注册的屏幕终端的TCP连接。服务器软件维护了全部的客户公司、用户、屏幕及其关联关系的数据库,对于关联的用户和屏幕之间的消息可以进行实时透明的转发。数据中转服务器具有连接数量多,单个连接数据通信量小、频率低等特点,适合用户对屏幕的实时监控,图文类型屏幕的节目实时发布。但是对于多个屏幕的大数据量传输没有优势,如视频类显示内容的更新等,这种情况下,需要使用到媒体服务器。

媒体服务器与数据中转服务器一样具有独立域名,主要用于存储和传输大容量节目文件。本文基于搭建FTP服务器实现媒体服务器功能。用户可以通过本地节目制作软件编辑节目,将节目及素材按照特定的组织方式存储于媒体服务器上。用户准备好待播放的节目与素材后,通过数据中转服务器实时向屏幕终端发送更新播放节目内容的指令,屏幕终端转向媒体服务器请求媒体播放内容。媒体服务器的特点是只提供媒体内容相关的服务,如文件下载和上传。

屏幕终端由ARM嵌入式系统、屏幕扫描控制系统和屏幕驱动板构成,并借助于Linux操作系统强大的网络功能,为终端提供3G无线网络通信、10/100M自适应以太网通信、RS485串行接口通讯等多种通信方式[6-8]。屏幕终端软件运行于该系统之上,主动连接数据中转服务器,并长久保持网络连接,从而可以使用户对屏幕终端状态实时进行监控。

客户端包括PC客户端和移动客户端,必须工作在可以连入互联网的硬件环境,在设定数据中转服务器域名和端口后,主动连接中转服务器。用户需要输入鉴权密钥后登录进服务器,登录后可以对所辖屏幕终端的进行状态监控和节目更新等实时操作。

2.2 系统数据库建模

为了设计一种能跨地域支持多个客户公司(多个项目)、多个用户、多块异步屏的管理系统,本文根据实际需求建立一种了较为完备的关系数据库模型。

图2 关系数据库Fig.2 Relational database

通过仔细分析系统应用环境中各种信息和操作要求,明确所需数据类型及其属性,最终确定了数据库需要维护的四张关系表,分别为终端设备表、用户表、公司表和管理表[9]。图2是利用OSA(Open System Architect)数据库建模工具搭建的数据库模型简化示意图。一个公司(或者项目)可以拥有多个用户和多个屏幕终端,一个用户可以管理多块屏幕,一块屏幕又可以被多个用户同时管理。该数据库模型能够较好满足多业务多屏幕多用户的系统管理模式。(图中的“pi”代表该表的主键)

2.3 分层通信协议设计

考虑到数据传输的可靠性和有序性,本文的数据通信以TCP协议为基础。同时,为了解决基于TCP协议的数据流同步问题以及处理多个用户、多个事务,多个连接,多个层次的消息数据包等问题,本文设计了一种基于TCP协议之上的分层通信协议。各层采用统一的接口就可以实现层次之间的通信,进而可以对各层的内部结构独立设计,更加易于协议的维护和实现[10]。协议主要分3层:收发层,会话层和业务层。

收发层对上层数据包加入了帧标识和帧长度标志标量,用以解决TCP协议流式传输的帧同步问题和非法连接请求。分发层包头定义了上层数据包类型和用户登录ID,区分不同的用户以及不同类型的协议数据包,从而将数据包准确的分发到对应的用户或相应的数据处理模块。业务层数据包包括登录数据包、服务器管理数据包和终端数据包,分别用来封装用户登录与注销,对服务器数据库管理和终端操作详细协议数据内容。各层协议数据结构及三种业务层数据包的简略结构如图3所示。

图3 协议分层示意图Fig.3 Protocol layering

3 系统各部分设计与实现

相对于传统基于局域网技术的多异步屏幕管理系统,本文提出的基于互联网的集群管理系统最本质的区别在于引入了数据中转服务器。数据中转服务器是维系多用户和多屏幕的枢纽,是整个系统架构的集中体现,本文将着重描述中转服务器部分的详细设计与实现,客户端软件和异步屏幕终端软件只给出一般性的软件框架说明,因为本文设计的系统是一种开放式的集群管理平台,针对不同的客户公司和项目需求,可以定制出多种完全不同的软件版本。

3.1 系统设计目标与实现方法概述

本系统设计重点在于在多对多模式下中转服务器具备高并发响应速度和带载能力。

本文采用C++语言进行开发,兼具了高效性和面向对象设计方法的优势。同时采用了大量跨平台的开源软件库,如Boost、SQLite、QT等。

客户端、异步终端、中转服务器三部分的网络通信相关代码基于Boost.Asio开发。Asio库基于操作系统提供的异步机制,采用前摄器设计模式实现了可移植的异步IO操作,并且异步模式下可以最大化避免使用多线程和互斥锁,减小同步模式下多线程编程带来的诸多有害副作用(如条件竞争、死锁、线程切换开销等)[11]。

数据库部分采用SQLite数据库。SQLite是一个自包含、无服务器、零配置、事物支持的进程内数据库引擎,也是一款开源轻型,占用资源低,跨平台的数据库[12]。

3.2 数据中转服务器详细设计与实现

软件架构整体从下到上分3个层次:网络通信、消息处理、数据库操作。结合2.3给出的通信协议层次,网络通信部分实现了收发层和分发层的功能,消息处理部分则对应业务层。数据库部分则是对2.2描述的关系数据库模型的具体实现。图4为数据中转服务器各类的简化示意图。

图4 数据中转服务器类简化示意图Fig.4 Schematic diagram of data transfer server class

3.2.1 网络通信部分

对于中转服务器而言网络通信部分是系统带载能力、数据响应性能的基础。关键技术在于大量连接的维持和数据并发处理能力。本文从3个方面对此进行优化设计:

(1)异步模式与线程池并用,零延迟操作同时能够合理化利用多核CPU资源。

(2)使用栈缓冲及缓冲池实现协议数据零拷贝和最小化堆内存申请释放开销。

(3)多用户、多屏幕终端的快速映射查找,最小化数据透明转发的延迟。

网络通信部分完全采用Boost.Asio的异步通信模式,同时为更好发挥硬件多CPU核心并行处理能力,本设计采用异步IO模式结合线程池的方法进一步提高应用程序的运行效率[13]。

线程池类基于Asio的io_sevice类和boost::thread类封装而成。线程池的个数取决于CPU个数,一般而言异步通信模式下线程数目不应超过CPU核心数量的3倍。

为了更高效地完成数据通信中的协议解析和打包,本文设计了协议栈缓冲类,将网络通信中的数据缓冲进行了封装,提供简洁的数据包封装和解析功能。基本实现原理是采用指针对同一缓冲数据的指针地址作增减移动来添加和去除数据包头,避免了协议数据在不同层次中传递时复制引起的性能开销。另外本文实现了栈缓冲池类在进程空间回收和再分配引用计数为0的栈缓冲实例,避免了频繁的进行系统调用分配堆内存,提高内存分配性能。

TCP服务器异步监听TCP端口,收到的连接生成新的收发器实例,收发器类即是对分层协议中收发层的实现,工作在TCP协议层之上,为其上层(会话类)提供数据帧的正确传输。其提供的函数接口主要包括封装上层发送数据包和解析处理收到的帧。会话类依赖收发器进行数据传输,但是只处理上层协议的拆装,不再关心收发的细节。

大量的连接导致大量的会话实例,而不同的登录用户会话与终端会话中间需要建立快速的“寻址”通路,用户登录后,客户端连接的会话会带有唯一的登录ID标识,设备注册后,异步终端的会话也会具有唯一的设备ID标识。会话管理器中通过使用ID标识到会话实例的map映射,来实现算法复杂度O(1)的快速查找。

3.2.2 消息处理与数据库访问

消息处理部分根据功能被设计成三个类:登录管理器、数据库管理器、终端管理器,分别实现客户登陆与注销,服务器数据库管理和用户—终端消息透明转发,除了消息透明转发,其余功能均需要访问数据库来完成。

由于数据库访问,尤其是写操作时间延迟较大,修改较大信息量时通常能达到秒级,软件所有的线程又均采用异步非阻塞方式设计,因此,数据库部分设计为异步队列方式。需要访问数据库的事务根据所需要的参数创建数据库访问项类(DBCmdItem)的子类实例,提交到异步队列中立即返回,数据库访问处理器类内部维护了一个独立线程来处理队列中所有挂起的数据库访问项,完成后通过回调方式通知事务处理模块,完全避免了数据库延迟导致的异步操作响应不及时的问题。数据库访问项类是一个抽象类(定义),所有的数据库操作都定义成统一虚接口,简化并统一了数据库访问处理器线程的处理流程。

3.2.3 数据中转服务器性能测试

本文基于100Mbps的局域网环境对系统进行了模拟测试。数据中转服务器运行Linux系统Ubuntu 10.04版本之上,客户端软件的硬件环境为Intel i3-2120CPU,主频3.3GHz,内存为4G的PC机,屏幕终端通过PC机多个进程来模拟。首先启动数据中转服务器软件为客户端和终端分别开启10个端口,每个端口最多可连接100个TCP连接,服务器使用一个具有600个屏幕终端,200个用户,10个公司的数据库测试模型,同时连接200个客户端和600个模拟终端,测试结果见表1。

表1 测试结果Tab.1 Testing results

从表1可以看出,系统在短时间内成功处理大量的并发连接请求,具有较高的数据吞吐量和良好的稳定性。

3.3 客户端和异步终端的软件设计

在本文的设计中,客户端软件与异步终端软件是可以多样化的,是业务相关的,两个不同业务会有不同的客户端软件和软件。同时这些差异化的客户端和终端软件在管理结构和通信协议上又必须符合上述的设计。这使得本系统具备了多项目扩展能力,在本质上区别于其他异步屏幕管理系统。

为了能快速为客户定制新的客户端和终端软件,最大化的代码重用和低耦合的软件结构设计是必不可少的。图5和图6分别为客户端软件和异步终端软件的基本结构。

图5 客户端软件基本结构图Fig.5 Basic structure of the client software

图6 异步终端软件基本结构图Fig.6 Basic structure of asynchronous terminal software

客户端软件从上至下分3个层次,界面层,业务层,网络通信层。用户从登录界面登录到服务器,然后获取用户权限下所有可控异步屏幕终端列表,呈现在终端列表界面中,从而对列表中的各个终端可进行状态监控和节目更新。节目编辑界面提供屏幕显示内容的编辑和预览功能。每个公司或者项目可能会有不同的编辑界面。如高速公路情报板界面要求具备常用路况图标和点阵文字布局,而广告小区屏幕的编辑界面要求能插入动画、视频和彩色图片。

图6是异步终端软件的基本结构,分为终端控制和节目播放两个部分。控制部分设计为3个层次:顶层是系统控制层,中间是协议的生成和解释层,底层是与中转服务器代码复用的网络通信层。本文设计的中转服务器透明转发用户与终端之间的通信数据包,因此,不同的项目除了节目播放器可以不同之外,也可以有不同的终端协议数据包,完全无缝的兼容于同一个中转服务器。

3.4 系统运行时数据流图

这里通过图7来综合描述中转服务器、客户端软件、异步终端软件三者之间及其内部各主要模块的数据传递与调用关系。

图7 系统运行时数据流图Fig.7 Runtime data flow of the system

5 结 论

针对移动互联网的日益普及带来的异步LED显示屏集群管理系统的新需求,本文将常规服务器的模式与异步屏幕领域结合起来,提出了一种以广域网络为基本承载的异步屏集群管理系统结构,又结合异步应用需求多样性、客户及屏幕多样性等行业特点,建立了较为完备通用的关系数据库模型和通用的网络协议,并且定义了可复用的客户端和终端软件架构,从设计和实现两方面解决了单一服务器系统同时支持多个应用领域、多用户、不同屏幕群体的问题。因此本文的设计是一种开放式可扩展的异步LED屏幕集群系统平台。在实现方法上进行了大量的优化,实际完成的系统在性能和稳定性方面达到了实用的标准。诚然,本文实现的系统也有其局限,网络通信的可靠性和及时性极大的依赖于网络运营商,只有可以承受这种潜在风险的项目才适合采用本系统。

[1]田志辉,王瑞光,陈宇,等.LED显示屏高光效高画面填充比光学设计与研究[J].发光学报,2014,35(2):251-256.Tian Z H,Wang R G,Chen Y,et al.Optical design and research of high optical efficiency and high filling ratio of LED display screen[J].Chin.J.Lumin.,2014,35(2):251-256.(in Chinese)

[2]宋超,王瑞光,陈宇,等.LED显示屏色域边界的快速计算[J].发光学报,2013,34(7):924-929.Song C,Wang R G,Chen Y,et al.Fast calculation of color gamut boundary for LED display panel[J].Chin.J.Lumin,2013,34(7):924-929.(in Chinese)

[3]王志斌,张骞,张健,等.基于表面等离子激元的双金属光栅结构提高LED光提取效率的研究[J].发光学报,2013,34(12):1624-1630.Wang Z B,Zhang Q,Zhang J,et al.Improvement of LED light emitting efficiency by using double metal gratings[J].Chin.J.Lumin,2013,34(12):1624-1630.(in Chinese)

[4]尹柱霞,郑喜凤,于洪涛.ARM+FPGA控制的LED脱机屏系统设计[J].液晶与显示,2010,25(2):262-267.Yin Z X,Zheng X F,Yu H Y.Design of LED off-line screen system based on ARM+FPGA control[J].Chinese Journal of Liquid Crystals and Displays,2010,25(2):262-267.(in Chinese)

[5]余文佳,王瑞光,宋喜佳.气象预警信息显示终端设计[J].液晶与显示,2012,27(5):678-681.Yu W J,Wang R G,Song X J.Design of meteorological early warning information display terminal[J].Chinese Journal of Liquid Crystals and Displays,2012,27(5):678-681.(in Chinese)

[6]程鹏,王瑞光,郑喜凤,等.嵌入式公路可变情报板通讯系统设计[J].液晶与显示,2013,28(2):245-249.Cheng P,Wang R G,Zheng X F,et al.Design of embedded highway VMS communication system [J].Chinese Journal of Liquid Crystals and Displays,2013,28(2):245-249.(in Chinese)

[7]丁铁夫,陈伟,郑喜凤,等.多媒体协处理器SM501在全彩LED显示屏脱机播放系统的应用[J].液晶与显示,2009,24(6):860-865.Ding T F,Chen W,Zheng X F,et al.Application of multimedia coprocessor SM501in full color LED screen off-line display system [J].Chinese Journal of Liquid Crystals and Displays,2009,24(6):860-865.(in Chinese)

[8]Jamsmin B,Mark S.C++ GUI Programing with Qt 4[M].2nd Ed.London:Prentice Hall,2008.

[9]申光,陈志刚.UML在关系数据库设计中的应用[J].计算技术与自动化,2005,24(1):113-118.Shen G,Chen Z G.Application of UML in RDB designing [J].Computing Technology and Automation,2005,24(1):113-118.(in Chinese)

[10]李鹏,邵志举,蔡洋.一种高可靠性的 TCP协议设计模式[J].计算机仿真,2006,23(1):115-119.Li P,Shao Z J,Cai Y.A new design mode for high-reliability TCP [J].Computer Simulation,2006,23(1):115-119.(in Chinese)

[11]罗剑锋.Boost程序库完全开发指南[M].北京:电子工业出版社,2010.

[12]雷小俊,李伟.SQLite在嵌入式 Web服务器中的应用[J].信息技术,2006(6):126-130.Lei X J,Li W.Application of SQLite in embedded Web server[J].Information Technology,2006(6):126-130.(in Chinese)

[13]胡杨,梁昉昕.异步模型 Asio的应用与分析[J].现代计算机,2008(11):69-72.Hu Y,Liang F X.Application and analysis of Asio asynchronous model[J].Modern Computer,2008(11):69-72.(in Chinese)

猜你喜欢

数据包客户端终端
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
SmartSniff
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
GSM-R手持终端呼叫FAS失败案例分析
大枢纽 云平台 客户端——中央人民广播电台的探索之路