科学技术创新2021.02
基于WebSocket 大数据任务监控设计与实现
韦统边张送温丽梅谭倚靖温丰蔚
(上汽通用五菱汽车股份有限公司,
广西柳州545007)1大数据任务监控
随着我国经济持续快速的发展,汽车成为大部分家庭不必可少的交通工具。电动化、网联化、智能化和共享化成为新一代汽车的基本要求,同时汽车产生的数据急剧增加,导致数据统
计计算耗时长。为了更方便快捷的监控大数据任务状态,
实时发现并解决运行中产生的问题,
提高工作效率,大数据任务监控系统应运而生。
通过大数据实时监控系统,技术人员可实时获取任务的运
行状态,包括任务运行的进度、
健康状况、计算中间结果,从而能快速的根据监控的状态调整任务运行策略,节省服务器资源、节省时间和快速定位问题。
2传统大数据任务监控实现方式2.1短轮询方式
客户端定时向服务器发送Ajax 请求,服务器接收到请求后马上响应并关闭连接。
优点:编程实现方式简单。
缺点:每次请求都必须经过三次握手,并且请求中绝大部分是无用的,极大的浪费服务器资源和宽带[1]
。
应用场景:资源充足的小型应用。2.2长轮询方式
客户端向服务器发送Ajax 请求,服务器接收到请求后,
如果没有数据,服务器并没有立刻关闭连接,而是等到有新消息
产生,返回给客户端才关闭连接,
如果在设定的超时时间后,服务器也无响应,则返回无数据响应给客户端,
客户端接收到数据并处理完成后,再向服务器发起请求。
优点:在无消息响应的情况下,
客户端不会频繁向服务器发起请求,节省三次握手开销以及重复发送请求的网络流量,有效解决短轮询资源浪费的弊端。
缺点:服务器维持长轮询状态能力有限,
需要同时维护多个线程,并且很容易达到服务器TCP 连接数上限,导致后续的长轮询请求超时。
应用场景:Facebook IM 。2.3长连接方式
客户端与服务器建立HTTP 连接,服务器响应数据后,不会马上关闭连接,后续客户端发送请求以及服务器响应数据都是
使用该连接。客户端和服务端会定时发送心跳信息,
确保连接是有效的,服务端会及时关闭无效的连接,
减轻服务器的压力。优点:相对于长轮询方式减少较多TCP 建立和关闭连接的操作,节省资源和时间。
缺点:存活客户端判断时间太长,
websocket和socket服务器必定存在一些无效的连接,随着客户端连接数变多,
连接的利用率变低,也可能达到服务器连接数上限,从而无法向其他客户端提供服务。
应用场景:Gmail 聊天。2.4Flash Socket 方式
Flash Socket 对TCP 功能做一层封装,新增返回数据、
关闭连接和错误等回调函数。一次连接多次使用,
并且在发生错误和关闭连接的时候都能及时通知到对方,杜绝无用连接的情况,减轻服务器的连接压力。
优点:解决频繁请求数据资源浪费问题,
客户端关闭连接后服务器能及时释放连接资源。
缺点:浏览器必须按照Flash 插件,在HTML5盛行的时代,安装Flash 插件的浏览器越来越少。
应用场景:网页游戏。
3基于WebSocket 大数据任务监控实现方式3.1WebSocket 简介
WebSocket 是HTML5新增的协议,属于应用层第七层上的
一个应用层协议,
它必须依赖HTTP 协议进行第一次握手,并在浏览器和服务器之间建立一个不受限的双向通信通道,
浏览器和服务器可以在任意时刻发送消息给对方。握手成功后数据就直接从TCP 通道传输,传输数据时与HTTP 无关[2-3]。
3.2WebSocket 协议内容
WebSocket 连接必须由浏览器发起,
因为请求协议是一个摘要:随着5G 时代的到来以及物联网和云计算的迅猛发展,数据存量正在爆炸性增长,
大量数据的统计和计算将会耗时几小时甚至几天的时间,
任务状态和进度监控将显得尤为重要。本文将阐述传统的任务监控实现方式的优缺点和应用场景,并基
于双向通信的WebSocket 实现资源低消耗和高实时性的解决方案,并在最后阐述代码的实现核心点。
关键词:大数据;WebSocket ;监控Abstract :With the advent of the 5G era and the rapid development of the Internet of Things and cloud computing,the data inventory is growing explosively.The statistics and calculations of large amounts of data will take hours or even days.Task status and progress monitoring will be particularly important.This article will explain the advantages and disadvantages and application scenarios of the traditional task monitoring implementation,and implement a solution with low resource consumption and high real-time performance based on WebSocket of two-way communication,and finally explain the core points of the code.
Key words :Big data;WebSocket;Monitoring 中图分类号:TP277文献标识码:A 文章编号:2096-4390(2021)02-0090-02作者简介:韦统边(1991,1-),男,广西柳州人,本科,大数据开发架构师,
研究方向:汽车大数据程序开发及应用。90--
2021.02科学技术创新
标准的HTTP请求,格式如下:
GET ws://localhost:8804/ws/task001
Host:localhost
Upgrade:websocket
Connection:Upgrade
Origin:localhost:8804
Sec-WebSocket-Key:client-random-string
Sec-WebSocket-Version:13
请求头Upgrade:websocket和Connection:Upgrade表示这个连接要转换为WebSocket连接;Sec-WebSocket-Key用于标识这个连接并非用于加密数据;Sec-WebSocket-Version用于指定协议版本[4-5]。
服务器如果接受该请求,就会返回如下消息:
HTTP/1.1101Switching Protocols
Upgrade:websocket
Connection:Upgrade
Sec-WebSocket-Accept:server-random-string
3.3WebSocket在大数据任务监控系统中的应用
大数据任务监控系统中任务监控时序图如图1所示。
图1
本系统是基于SpringBoot开源框架搭建,后端开发语言使用Java,前端开发语言使用HTML5,并使用maven作为jar包管理和项目构建工具。
需要在l文件中引入spring-boot-starter-websocket 依赖配置,并将ServerEndpointExporter注解为一个Bean,该步骤主要是将WebSocket托管给SpringBoot进行管理。再新建一个WebsocketConf类,在类中使用@ServerEndpoint注解说明服务器接收WebSocket请求的路径。
重写onOpen方法,该方法会在建立WebSocket连接后被回调并生成一个Session,本系统会建立一个ID
与Session一一对应的Map表缓存到内存中,方便之后服务器与浏览器通信时快速检索,会在机器重启和连接断开后销毁。
重写onClose方法,该方法会在连接被关闭后调用,本系统在该方法中销毁缓存与断开连接对应的Session,释放部分内存空间。
重写onError方法,该方法会在服务器发生错误后调用,本系统会将发生错误的具体内容发送给浏览器,让管理员根据错误消息采取相应的应急措施。
重写onMessage方法,用于接收浏览器向服务器发送的数据,本系统会从发送的数据中提取查询条件,并将浏览器希望获取的结果封装成JSON格式返回。
新增sendMsg方法,用于服务器主动向浏览器发送消息使用,大数据任务每完成一个阶段调用一次该方法,向浏览器反馈任务的当前进度和状态,便于管理员实时获取任务进行的最新消息。
4结论
本文介绍一种基于WebSocket的大数据任务监控系统的设计与实现,用于替代传统的轮询和长连接的监控方式,真正实现任务的实时监控和数据双向通信的要求,减少不必要的数据流量,减轻服务器的压力。
参考文献
[1]郑玲,郑晓天.基于WebSocket的电力系统实时数据更新研究
[D].北京:华北电力大学,2013.
[2]吕海东.基于WebSocket的实时Web监控系统[D].大连:大连理工大学城市学院,2014.
[3]王佃来,宿爱霞,安晏辉.基于WebSocket的消息推送系统[D].北京:首钢工学院,中国软件测评中心,2014.
[4]李冀晖,贺德强,苗剑.WebSocket技术在机车故障诊断系统中的应用[D].南宁:广西大学机械工程学院,2012.
[5]祝翔,董启文,郁可人.基于WebSocket的PK答题的设计与实现[D].上海:华东师范大学数据科学与工程学院,
2018.
91 --
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论