叶文芳,潘国峰,华 中,齐景爱
(1.河北工业大学 电子信息工程学院,天津 300401;2.天津铂创国茂电子科技发展有限公司,天津 300384)
基于云分支服务器的数据更新系统的设计与实现
叶文芳1,潘国峰1,华 中2,齐景爱1
(1.河北工业大学 电子信息工程学院,天津 300401;2.天津铂创国茂电子科技发展有限公司,天津 300384)
基于海思Hi3716C嵌入式云分支服务器,提出了一种数据快速更新的解决方案。服务器采用Linux操作系统和B/S架构,搭建了数据更新服务平台。为满足云分支服务器实际需求,通过增加丢包重传和分组确认机制,改进了传输层UDP协议,然后利用分离请求和更新端口并行传输数据的多线程机制,设计了应用层的数据更新协议。本系统可同时更新多个云分支服务器的不同类型数据,特别是在大文件传输中,改进的UDP传输协议保证了数据更新的可靠性,提高了传输速度,增强了系统稳定性。测试结果表明,数据更新系统比传统方法传输速度更快,丢包率稳定在1%左右,能够实现数据快速传输,对大数据交互具有重要的实用价值。
云分支服务器;数据更新;UDP协议;海思Hi3716;多线程
云平台大数据技术的发展与应用已经对社会的方方面面产生了深远影响。特别在医疗、教育和服务业领域中,大数据技术逐渐成为催生各个领域变革的科技力量。云服务器作为一种处理能力可弹性收缩的计算服务[1],与用户终端之间进行的音视频、图像以及系统镜像等数据的交互量呈倍数增长,当云服务器上海量数据的传输超过网络负荷时,传输速度必将成为大数据技术发展的瓶颈。数据交互过程中消耗大量网络带宽,降低吞吐量的同时,影响了更新效率和用户体验。
本文提出一种基于海思Hi3716C的嵌入式云分支服务器的数据快速更新方法,该方案充分利用UDP传输协议报头格式简单、数据传输速度快的优势[2],增加了数据报丢包重传和分组确认来弥补UDP传输过程中数据包丢失严重的缺陷,同时根据数据更新需求设计了应用层协议、分离请求和更新端口实现多线程更新任务。在保证了传输可靠性的同时,实现了快速更新数据的目的。
数据更新系统中架设的云分支服务器又称为云节点服务器,应用在商场、餐厅、酒店、公交、高铁、旅游区、社区、农村等场所。该服务器可实现区域WiFi覆盖[3]、视频点播和直播、定制化服务、在线商品推广和后台管理等功能,同时保存了包括用户数据、服务信息、应用软件和媒体文件等在内的各种资源。因此,基于云分支服务器,设计合理的数据更新系统完成数据交换对该设备在实际场景中的应用至关重要。
本文所设计的数据更新系统共分为3部分,控制端为云中心服务器,中转节点和终端均为嵌入式云分支服务器,其结构如图1所示。
图1 数据更新系统结构图
云中心服务器制定分配策略,将数据资源配置到不同更新服务器,并向终端的嵌入式分支服务器发送更新数据库;更新服务器根据调度策略,将云中心的不同属性文件下载并存储在本地磁盘,然后更新数据库索引列表;终端分支服务器接收中心服务器的更新索引,查找所需要更新的该类型数据所在的中转节点,向该更新服务器请求资源完成更新。
2.1 硬件设计
中转节点和终端的嵌入式云分支服务器采用海思Hi3716C芯片,内置Cortex A9处理器,双核CPU,频率在1.5 GHz,集成2路千兆以太网口和3路USB2.0接口,1路SATA3.0外设接口用于扩展2 Tbyte硬盘,存储更新数据资源。Hi3716C支持H.264/MPEG-2等多种格式高清视频编解码,可满足终端云分支服务器的多媒体播放、可视通信等应用需求,其硬件结构如图2所示。
图2 云分支服务器硬件结构
服务器采用经过裁剪的轻量级Linux操作系统和定制的ext4文件系统,通过移植Apache,PHP和SQLite搭建Web服务器。B/S架构的组件便于用户通过网络登录系统。此外经过对内核的开发,增加外围设备搭建的云分支服务器可以支持无线WiFi上网、视频直播、RFID数据采集等应用。
2.2 数据更新协议设计
TCP/IP技术作为控制网络的通信手段,实现一系列远程控制功能[4]。传输层的TCP协议面向连接,经“三次握手后”发送数据,提供可靠传输,但TCP[5]报头冗余信息多,拥塞控制机制使网络忙碌时发生大量丢包状况,数据传输速度变慢,且不支持广播,也不适合较大的图像文件传输[6]。
UDP协议面向报文[7],无须提前建立连接,只是在接收到应用层数据后封装成数据报并从一台主机发送到另一台主机,不考虑数据报丢失的状况,与TCP协议相比,UDP虽然格式精简,传输效率高,但不能保证数据报能否达到,所有可靠性必须由应用层提供。
嵌入式云分支服务器存储的文件类型复杂。除了要在广域网中传输镜像、图像和文件等数据外,还需在局域网内以组播方式更新大的音视频文件。直接使用现有的TCP或UDP协议均无法满足系统传输数据的需求。基于UDP良好的传输特性,本系统所设计的协议结构如图3所示。
图3 可靠传输协议结构
传输层选用UDP协议提高传输效率,应用层增加可靠传输机制,弥补数据传输过程中的丢包率大的缺陷,可靠传输机制和应用层协议共同构成数据更新的上层应用。其中,可靠数据传输的实现主要包括对数据报进行超时重传、分组确认和数据校验等处理过程。
2.3 数据报格式设计
原始数据送入协议栈逐级封装,然后才能通过以太网传输[7]。应用层更新协议设计的报文由传输信息和数据信息两部分构成,其格式如图4所示。
图4 应用层报文格式
传输信息指定源、目的IP地址以及端口号,并预留传输层协议类型,在进行不同数据更新时灵活选用传输协议。数据信息指定更新数据序列号、数据报总数、数据报大小、更新时间和数据校验用于控制数据分包、排序、重传和校验,指定文件名称以及存储路径是为上层更新应用提供接口。
更新数据时,上层应用将数据和传输路径信息交付于数据更新协议,协议自动将报头和数据封装成图4所示格式的报文交付传输层完成数据传输。同时接收端以对等的方式解析报文,获取传输信息。
3.1 多线程实现
中心服务器向更新服务器发送数据应用多线程技术。主线程Pmain用于监听固定端口port_main,等待接收分支服务器bi(i=1,2,…,n)请求更新的数据报,一旦接收到数据报便为bi随机分配更新端口port_i,而后继续循环监听。辅助线程Psub_i将新分配的端口port_i绑定在Socket上,建立传输通路,向分支服务器bi发送更新数据,更新示意图如图5所示。
图5 多线程更新
主线程和辅助线程之间采用消息传递机制和缓冲状态管理机制[8]。分支服务器请求增多时,主线程循环接收更新请求,成功后锁定数据缓冲区并获取数据报信息,然后为需要更新的分支服务器bi分配端口,进入辅助数据更新线程。辅助线程运行后,通过解析数据报,获取得到分支服务器基本信息,向分支bi发送响应数据报,将新的更新端口和IP地址等信息打包发送到分支服务器,等待再次收到回复数据报后开始传输数据。软件运行流程如图6所示。
图6 多线程处理程序图
3.2 数据分组发送过程实现
利用UDP协议进行可靠传输时,要对大的文件分包处理。应用层将网页端传来的数据所在路径和文件名写入对应数据格式中,并通过调用函数计算得到数据报总长度,判断更新文件是否需要分包。如果分包,则计算总的分包数量,以及当前分包的大小;否则设置分包数量为1,当前分包大小为总长度,并将此部分参数写入结构体。数据报具体分包流程如图7所示。
图7 数据报分包流程图
分解后,数据报头部增加控制信息,打包发送到终端进行接收确认和请求重传。通过设计的数据包格式定义的结构体如下所示:
typedef struct data_info_s{
u16 Flag, Type, Order;
u32 DataCk, PacketSize, PacketSum, PacketNum;
char Time[N], FileName[N], SendDir[N], RecvDir[N];
}DataInfo_S;
其中,PacketSize为本数据报的大小,除最后一个,其他数据报均为固定值。PacketNum为更新数据序列号,定义为无符号整型,记录云分支服务器更新数据报的序号,其范围为0~65 535;PacketSum为总共分出的数据报数目,DataCk是对数据进行CRC32校验后的值,此参数用来对数据进行差错控制。
3.3 数据超时重传过程实现
打包发送后更新服务器等待分支服务器返回信息,并启动时钟判断返回信息是否超时。如果超时,则重新发送上个数据报,当超时次数多于给定值,则返回“连接错误”显示在网页端。如果在限制时间内收到回复信息,则判断回复信息的内容,如果为重发请求,则重新发送,如果为数据错误,则返回“数据错误”显示在网页端。如果不需重发,说明数据正确,判断全部数据是否已经发送完全,若未发送完全,则发送下一个数据包;若已完全发送,则返回“发送成功”并返回信息给网页端。数据报超时重发如图8所示。
图8 数据报超时重发流程图
云分支服务器终端接收到数据报后,首先将所有数据进行CRC校验,并与传输报文中的CRC值进行比较,如果校验值相同则处理接收数据,返回处理结果,否则直接丢弃请求重发。分包重传、超时重发和CRC校验使得采用UDP更新数据快速高效且传输可靠。
3.4 数据更新网页实现
通过网页选取更新服务器,后台自动填充更新服务器信息。发送更新数据时选择分支服务器传输路径和所要发送的文件,点击发送后,后台调用发送程序在固定路径下自动生成json格式文件,文件内容如下所示:
{
"ip_port": { "src_ip":"更新服务器IP地址", "src_port":端口号
},
…… //传输数据类型信息
"file_data":{ "filename":"TCP-IP.gif", "send_dir":"文件所在路径", "recv_dir":"分支服务器接收文件后存放路径"
},
…… //其他更新文件信息
"timeout":{ "seconds":8, // 超时时间 "microseconds":0
}
}
生成的文件中给出更新服务器IP地址、端口信息和更新的各文件的名称、路径信息,以及超时重传时间等。分支服务器请求更新时,获取此列表,经过分析后触发更新程序即可完成自动更新。
登录到中心服务器的数据更新界面,选择传输的数据文件和将要存储的位置,来生成更新数据库和json文件,网页界面如图9所示。
图9 数据更新界面(截图)
测试过程中设定分包大小64 bit,自动重发间隔1 s,超时重传3次。在网络带宽为10 Mbit/s,传输文件大小为10 Mbyte情况下对UDP单线程、改进UDP单线程和改进UDP多线程丢包率的测试结果如图10所示。
图10 丢包率测试结果
由图可以看出,利用无控制的UDP协议更新数据时丢包率大,云分支服务器数量越多,数据包丢失越严重,当分支服务器达到100个时丢包率接近7%。采用改进的UDP协议更新数据,丢包率明显下降,整体维持在1%左右,改善效果明显。
就多线程机制而言,云分支服务器较少时,丢包率稳定在较低水平,随着服务器数量增多,多线程传输机制下的更新系统比单线程传输丢包率小,系统更稳定。
相同条件下对传输时间进行50次测试后结果如表1所示。
表1 不同文件下传输时间测试表
由表中数据可以看出,文件较小时,通用TCP更新和本系统时间差不大,但传输文件较大时,本系统所采用的UDP传输时间更短,其中平均传输时间比为1.230,比TCP更新系统速度提高了18.21%。可见本系统传输效率更高,优势更明显。
针对云分支服务器实际需求,基于云分支服务器的数据更新系统能同时更新多个云分支服务器的不同类型数据。在大文件传输中,改进的UDP传输协议保证了数据更新的可靠性,更新协议的多线程传输机制提高了传输速度,增强了系统稳定性。实际应用结果表明,本系统数据在多任务数据更新上传输速度和丢包率的优势更明显。
[1]董波,沈青,肖德宝.云计算集群服务器系统监控方法的研究[J].计算机工程与科学,2012,34(10):68-72.
[2]REN Y, TANG H, LI J, et al. Performance comparison of UDP-based protocols over fast long distance network[J]. Information technology journal,2009,8(4):600-604.
[3]段小红,潘国峰,杨帆,等.面向智慧社区的云分支服务器设计与实现[J].电视技术,2016, 40(1):67-71.
[4]董思乔,赵荣建,孙通.基于WiFi构建的智能家居控制系统的设计[J].电视技术,2015,39(4):89-91.
[5]BALAKRISHNAN H,PADMANABHAN V N,SESHAN S,et al. A comparison of mechanisms for improving TCP performance over wireless links[J]. IEEE/ACM transactions on networking,1997,5(6):756-769.
[6]高毅,张曦煌,王广翔.基于UDP的多媒体通信的研究与实现[J].计算机工程与应用,2012,48(3):95-98.
[7]STEVENS W R. TCP/IP详解,卷1:协议[M]. 范建华,译.北京:机械工业出版社,2011.
[8]张永峰. 基于UDP协议的航空发动机振动实时监视系统设计[J]. 测控技术,2015, 34(3):55-58.
叶文芳(1992— ),女,硕士生,主研电子与通信工程;
潘国峰(1968— ),教授,硕士生导师,本文通信作者,主要研究方向为应用电子技术、电子信息薄膜、敏感器件研究等;
华 中(1969— ),博士,主要研究方向为云计算、云服务器;
齐景爱(1966— ),高级工程师,主要研究方向为仪器仪表。
责任编辑:闫雯雯
Design of data update system based on elastic compute branch service
YE Wenfang1,PAN Guofeng1,HUA Zhong2,QI Jing’ai1
(1.SchoolofInformationEngineering,HebeiUniversityofTechnology,Tianjin300401,China;2.TianjinBotroElectronicalTech.Co.,Ltd.,Tianjin300384,China)
Based on the Haisi Hi3716C embedded elastic compute branch service, a method of quick update is proposed. This service uses the Linux operation system and the B/S architecture to set up a platform of update service. In order to fit in the requirement of elastic compute branch service, the mechanism of retransmissing the loss packet and the one of confirming the sent packet is used to improve the UDP protocol, then the multi-threading transport mechanism, which can separate request port from update one, is used to design the update protocol in application layer. This system can update the different type of the data for server branch services at the same time. Especially for some big files,the improved UDP transport protocols can ensure the reliability of update, improve the speed of transmission, and enhance the stability of system. The test result show that for the update system, the transport speed is more faster than tradition way, the loss rate of packet can steady almost 1%,and the fast data transmission can be realized, and it is useful for big data to interact with each other.
elastic compute branch service;data update; UDP protocol; Hi3716C; multi-threaded
叶文芳,潘国峰,华中,等. 基于云分支服务器的数据更新系统的设计与实现[J].电视技术,2016,40(11):25-29. YE W F,PAN G F,HUA Z,et al. Design of data update system based on elastic compute branch service[J]. Video engineering,2016,40(11):25-29.
TN949.6
A
10.16280/j.videoe.2016.11.005
国家科技重大专项课题(2016ZX02301003-004-007)
2016-06-07