异步LED显示屏集群管理系统论文

异步LED显示屏集群管理系统论文

1系统总体设计

1.1系统基本结构

本文提出的异步LED显示屏集群管理系统结构图,分为4个部分:数据中转服务器,媒体服务器,屏幕终端,客户端。数据中转服务器是一台具有独立域名或者广域网IP地址的主机,安装Linux操作系统服务器版本。本文设计的数据中转服务软件基于Linux环境运行,同时监听多个端口来接收并维持当前登录用户和已注册的屏幕终端的TCP连接。服务器软件维护了全部的客户公司、用户、屏幕及其关联关系的数据库,对于关联的用户和屏幕之间的消息可以进行实时透明的转发。数据中转服务器具有连接数量多,单个连接数据通信量小、频率低等特点,适合用户对屏幕的实时监控,图文类型屏幕的节目实时。但是对于多个屏幕的大数据量传输没有优势,如视频类显示内容的更新等,这种情况下,需要使用到媒体服务器。媒体服务器与数据中转服务器一样具有独立域名,主要用于存储和传输大容量节目文件。本文基于搭建FTP服务器实现媒体服务器功能。用户可以通过本地节目制作软件编辑节目,将节目及素材按照特定的组织方式存储于媒体服务器上。用户准备好待播放的节目与素材后,通过数据中转服务器实时向屏幕终端发送更新播放节目内容的指令,屏幕终端转向媒体服务器请求媒体播放内容。媒体服务器的特点是只提供媒体内容相关的服务,如文件下载和上传。屏幕终端由ARM嵌入式系统、屏幕扫描控制系统和屏幕驱动板构成,并借助于Linux操作系统强大的网络功能,为终端提供3G无线网络通信、10/100M自适应以太网通信、RS485串行接口通讯等多种通信方式。屏幕终端软件运行于该系统之上,主动连接数据中转服务器,并长久保持网络连接,从而可以使用户对屏幕终端状态实时进行监控。客户端包括PC客户端和移动客户端,必须工作在可以连入互联网的硬件环境,在设定数据中转服务器域名和端口后,主动连接中转服务器。用户需要输入鉴权密钥后登录进服务器,登录后可以对所辖屏幕终端的进行状态监控和节目更新等实时操作。

1.2系统数据库建模

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

1.3分层通信协议设计

考虑到数据传输的可靠性和有序性,本文的数据通信以TCP协议为基础。同时,为了解决基于TCP协议的数据流同步问题以及处理多个用户、多个事务,多个连接,多个层次的消息数据包等问题,本文设计了一种基于TCP协议之上的分层通信协议。各层采用统一的接口就可以实现层次之间的通信,进而可以对各层的内部结构独立设计,更加易于协议的维护和实现。协议主要分3层:收发层,会话层和业务层。收发层对上层数据包加入了帧标识和帧长度标志标量,用以解决TCP协议流式传输的帧同步问题和非法连接请求。分发层包头定义了上层数据包类型和用户登录ID,区分不同的用户以及不同类型的协议数据包,从而将数据包准确的分发到对应的用户或相应的数据处理模块。业务层数据包包括登录数据包、服务器管理数据包和终端数据包,分别用来封装用户登录与注销,对服务器数据库管理和终端操作详细协议数据内容。

2系统各部分设计与实现

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

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

本系统设计重点在于在多对多模式下中转服务器具备高并发响应速度和带载能力。本文采用C++语言进行开发,兼具了高效性和面向对象设计方法的优势。同时采用了大量跨平台的开源软件库,如Boost、SQLite、QT等。客户端、异步终端、中转服务器三部分的网络通信相关代码基于Boost.Asio开发。Asio库基于操作系统提供的异步机制,采用前摄器设计模式实现了可移植的异步IO操作,并且异步模式下可以最大化避免使用多线程和互斥锁,减小同步模式下多线程编程带来的诸多有害副作用(如条件竞争、死锁、线程切换开销等)。数据库部分采用SQLite数据库。SQLite是一个自包含、无服务器、零配置、事物支持的进程内数据库引擎,也是一款开源轻型,占用资源低,跨平台的数据库。

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

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

2.2.1网络通信部分

对于中转服务器而言网络通信部分是系统带载能力、数据响应性能的基础。关键技术在于大量连接的维持和数据并发处理能力。本文从3个方面对此进行优化设计:(1)异步模式与线程池并用,零延迟操作同时能够合理化利用多核CPU资源。(2)使用栈缓冲及缓冲池实现协议数据零拷贝和最小化堆内存申请释放开销。(3)多用户、多屏幕终端的快速映射查找,最小化数据透明转发的延迟。网络通信部分完全采用Boost.Asio的异步通信模式,同时为更好发挥硬件多CPU核心并行处理能力,本设计采用异步IO模式结合线程池的方法进一步提高应用程序的运行效率。线程池类基于Asio的io_sevice类和boost::thread类封装而成。线程池的个数取决于CPU个数,一般而言异步通信模式下线程数目不应超过CPU核心数量的3倍。为了更高效地完成数据通信中的协议解析和打包,本文设计了协议栈缓冲类,将网络通信中的数据缓冲进行了封装,提供简洁的数据包封装和解析功能。基本实现原理是采用指针对同一缓冲数据的指针地址作增减移动来添加和去除数据包头,避免了协议数据在不同层次中传递时复制引起的性能开销。另外本文实现了栈缓冲池类在进程空间回收和再分配引用计数为0的栈缓冲实例,避免了频繁的进行系统调用分配堆内存,提高内存分配性能。

2.2.2消息处理与数据库访问

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

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

本文基于100Mbps的局域网环境对系统进行了模拟测试。数据中转服务器运行Linux系统Ubuntu10.04版本之上,客户端软件的硬件环境为Inteli3-2120CPU,主频3.3GHz,内存为4G的PC机,屏幕终端通过PC机多个进程来模拟。首先启动数据中转服务器软件为客户端和终端分别开启10个端口,每个端口最多可连接100个TCP连接,服务器使用一个具有600个屏幕终端,200个用户,10个公司的数据库测试模型,同时连接200个客户端和600个模拟终端。系统在短时间内成功处理大量的并发连接请求,具有较高的数据吞吐量和良好的稳定性。

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

在本文的设计中,客户端软件与异步终端软件是可以多样化的,是业务相关的,两个不同业务会有不同的客户端软件和软件。同时这些差异化的客户端和终端软件在管理结构和通信协议上又必须符合上述的设计。这使得本系统具备了多项目扩展能力,在本质上区别于其他异步屏幕管理系统。为了能快速为客户定制新的客户端和终端软件,最大化的代码重用和低耦合的软件结构设计是必不可少的。客户端软件从上至下分3个层次,界面层,业务层,网络通信层。用户从登录界面登录到服务器,然后获取用户权限下所有可控异步屏幕终端列表,呈现在终端列表界面中,从而对列表中的各个终端可进行状态监控和节目更新。节目编辑界面提供屏幕显示内容的编辑和预览功能。每个公司或者项目可能会有不同的编辑界面。如高速公路情报板界面要求具备常用路况图标和点阵文字布局,而广告小区屏幕的编辑界面要求能插入动画、视频和彩色图片。分为终端控制和节目播放两个部分。控制部分设计为3个层次:顶层是系统控制层,中间是协议的生成和解释层,底层是与中转服务器代码复用的网络通信层。本文设计的中转服务器透明转发用户与终端之间的通信数据包,因此,不同的项目除了节目播放器可以不同之外,也可以有不同的终端协议数据包,完全无缝的兼容于同一个中转服务器。

2.4系统运行时数据流图

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

3结论

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

作者:刘飞 王瑞光 陈伟 单位:中国科学院长春光学精密机械与物理研究所 中国科学院大学