服务热线: 13472705338
新闻中心 news center

煤矿智能仓储系统研究与设计

伴随互联网、大数据、人工智能技术的迅猛发展,煤矿智能化相关技术与装备水平也在显著提升。同时,随着煤矿智能化程度...
联系我们 contact us
新闻中心
您当前的位置:首页 > 新闻中心 > 服务器推送技术在智能...

服务器推送技术在智能仓储物联网中的应用

信息来源: 发布时间:2021-12-10 点击数:

一、引言

公安信息化业务的突出特点是信息的及时性、应用的紧迫性和业务的针对性, 如何突破传统的科学技术手段提升信息获取的高效性和准确性, 已成为公安业务信息化建设的瓶颈。由于物联网技术中信息载体具有全面感知能力、数据链路可靠安全以及数据的智能处理能力, 在现有公安信息化的基础网络架构上, 可以利用物联网技术对感知信息进行融合、分析, 进而大幅提升现代公安业务的服务水平。与公安业务相关的传统仓储安防管理措施主要是以人力防范、物理防范为实现主体, 由于现代科学技术的发展和普及, 技术防范逐渐成为仓储安防工程中的实现实体, 感知技术已经开始应用于现代智能仓储的安防系统, 并开始引导现代仓储系统发展潮流。在物联网技术构建的安防系统中, 传感器网络负责实施采集、感知和监控部署区的各种物理信息 (如温度、湿度、水浸、周界状态、火警状态等) , 并通过有线网络、现场总线和无线通信等方式将信息实时传输给决策层。在传统应用中, 客户端 (设备) 获得服务器 (决策层服务器) 信息是通过轮询的方式实现的, 这种实现方式不可避免地造成了信息的时延, 拖慢了物联网整体相应速度。本文在这种应用场景下, 对服务器推送技术进行了分析和研究, 大大加快了客户端获取服务器信息的速度, 并在实际工程中进行了应用。

二、浏览器响应方式

在智能仓储安防管理应用中, 系统需要信息采集的及时性、正确性、安全性, 并能够最大程度利用信息的多样性, 对潜在的安全隐患进行预防和分析。BS架构系统的突出优点就是信息采集的灵活性、海量数据分析和存储。随着Web技术的飞速发展, BS架构应开始普遍应用于智慧仓储安防管理信息系统中。

(一) 典型Web模式

浏览器作为Web应用的前台, 是安防信息系统的访问手段。虽然浏览器自身的处理功能比较弱, 但在基于Web的应用中, 浏览器的主要功能只是发送请求, 解析服务器返回的信息, 以不同的风格显示给终端用户。简单地说, 传统的Web模式事情是由客户端首先发起, 每一个动作会导致一个向服务器发送的请求, 然后服务器按照请求进行相应的处理, 并把结果传回客户端。如图1所示, 这种处理过程会反复循环, 直到用户关闭浏览器。


(二) 典型Ajax模式



在基于Ajax的Web事件应用模式中, JS负责获取数据, 当需要和服务器进行交互时, 数据将以异步方式发送给服务器端, 当数据返回后, JS通过DOM对数据进行分析, 并修改HTML, 从而将结果呈现给用户。虽然Ajax的应用可以增加客户端页面的程序响应能力, 用户在与后台进行交互时, 不需要等待服务器响应, 特别是在服务器无法工作的时候, 可以立即获得来自服务器的警告, 但是该模式在数据库访问时, 实质上与非Ajax模式是一样的, 即数据是从客户端或者其他引擎将数据推送给服务器端。

三、服务器推送技术

服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据, 浏览器显示这些数据, 同时保证与服务器的连接。当服务器需要再次发送一批数据时, 浏览器立即显示数据并保持连接。在当前HTTP协议的限制下, Web架构根本找不到真正把信息从服务器推送到客户端的方式, 一旦客户端的状态断开, 服务器是不可能知道客户端状态的。但是, 我们可以采用服务器端推技术近乎完美地模拟服务器端的推送状态。

(一) 传统轮询

传统轮询是类似“服务器推送”中最相似的一种实现形式。在老式的Web页面中, 指定一个时间间隔来对页面进行刷新 (通常使用Java Script的set Timeout函数) , 客户端定时轮询服务器, 无论数据库数据是否有变化, 都定时对页面进行刷新。如图3所示, 与服务器进行交互时, 在前两次交互时, 数据库数据并无变化, 但是页面依然要进行刷新, 这种方式类似我们在日常浏览网页时使用F5键来刷新页面。


传统轮询方式最主要的问题是对服务器的压力很大, 若想提高效率, 间隔时间的设置将会成为瓶颈, 对数据库数据更新频率不太高的场合将会造成带宽的极大浪费。因为性能和即时性造成了严重的反比关系, 若轮询时间间隔太短, 连续不断的请求会对服务器造成较大的压力;而轮询时间间隔太长, 服务器上的更新数据就需要越多的时间才能让客户体验到。

(二) Comet方式

Comet有时也称反向Ajax或服务器端推技术, 其思想可简单描述为将数据直接从服务器推到浏览器, 而不必等到浏览器请求数据, 从而使客户端能够及时更新用户界面以反映服务器端的数据变化。Comet的实现是由浏览器主动发起请求, 但是服务器以一种似乎非常慢的响应方式进行响应。这样在整个响应时间内, 服务器可以使用同一个已经建立的连接把要需要更新的数据主动发送给浏览器。因此整个请求的完成可能需要较长的时间, 但是一旦有了新的数据, 它将立即被发送到客户端。Comet架构非常适合事件驱动的Web应用和对交互性和实时性要求很强的应用。

Comet在实际应用中主要有两种实现模式:

1. 基于Ajax的长轮询

在基于Ajax的长轮询中, 服务器端会阻塞请求直到有数据传递或连接超时, 响应才返回, 这种方式也被称之为主动式反向Ajax。如图4所示, Comet客户端首先与服务器建立连接, 当数据库有数据更新时向客户端进行数据传递, 页面进行更新, 响应完毕, 连接断开并重新开始建立。


基于Ajax的长轮询与传统的轮询不同之处在于:

·服务器端会阻塞请求直到有数据传递或超时才返回, 在响应结束或者连接超时, 客户端会主动断开连接;

·客户端在处理完所有服务器返回信息后, 向服务器发起建立连接的请求, 重新建立连接;

·服务器端会将连接断开时间内所有缓存的更新信息一次性发给客户端。

应该明确的是, 这种长时间保持连接活跃是由于服务器过载和用完请求处理进程的原因, 这样会常常造成“线程饿死”的状态。为了避免出现这种情况, 在普遍使用的DWR框架中, 对于活动模型的需要有一些特殊的处理。

2. 基于Iframe及htmlfile的流方式

通过在HTML页面里嵌入一个隐藏帧, 然后将这个隐藏帧的SRC属性设为对一个长连接的请求, 服务器端就能源源不断地往客户端输入数据, 即服务器阻断客户端的回应, 服务器没有关闭回应而是一直保留这个到客户端的输出流, 直到通信错误或者超时。超时后重新建立连接, 并关闭原来的连接。


四、设计与实现

(一) 感知展示层需求

智能仓库的感知层信源是由若干不同种类感知设备采集的信号构成, 有模拟量和数字量, 有的感知数据上传或者采集频率较低, 有的则相反。

由于传统的Web应用均基于无状态、单向的协议, 请求被发送到Web服务器, 服务器处理请求并发回一个响应。请求必须由客户机发出, 而服务器则只能在对请求的响应中发送数据, 这种处理消息的机制将会大大降低对感知数据展示的及时性。

由前端感知器通过局域网将数据传递给后台数据库以后, 感知展示层需要立即将数据推送给前台浏览器页面。而非浏览器页面发起请求数据的事件, 这就要求存在“服务器发起的消息传递”模式, 由服务器软件向客户端主动发送消息或信息。

在该设计中, 我们采用DWR (Direct Web Remoting) 框架。DWR是一个用于改善Web页面与Java类交互的远程服务器端Ajax开源框架, 它可以被看作是一个引擎, 把服务器端Java对象的方法公开给Java Script代码, 也可以在服务器端模拟客户端。DWR从而可以有效地从应用程序代码中把Ajax的全部请求以响应循环消除掉。DWR从2.0版本开始增加了push功能, 在异步传输的情况下可以从Web-Server端发送数据到Browser。

(二) 客户端设计

在基于物联网的智能仓储系统中, 感知设备种类繁多, 大量分布在仓库的感知设备需要进行地理分布的归类和分析, 并以此为依据在后台进行决策分析。因此我们在设计客户端的程序时, 首先应考虑所有感知设备的当前状态。在客户端启动时, 首先创建一个临时的Ajax线程, 从服务器中获取所有感知设备的状态信息, 在当前的显示页面展示。该线程执行完毕, 建立一个HTTP的长连接来监听服务器端数据的实时更新, 在这个通道上传输的数据将是XML流信息, 客户端通过接受新的XML内容, 来更新客户端消息和客户端UI界面, 从而与服务器端保持同步。

(三) 服务器端设计

服务器端的设计和实现都基于Java EE架构, 由底而上系统主要分为三层:Model层、Service层、View层。

在Model层中, 我们通过使用Hibernate中DAO的概念对系统中的实体进行了抽象。这些实体包括感知设备属性信息、感知设备的状态信息。每一种感知设备的状态独立为一个实体, 如温度、湿度、电子周界、水浸等。

Service层主要负责对数据的封装和解析, 它负责从服务器端获取数据并进行解析和分析, 依据预先设定的决策依据和算法, 对各感知信息进行决策。本设计对感知信息的主要决策业务逻辑有:

模拟量数据设定有效阈值和报警阈值;

开关量在设定有效时间周期时, 例如在极短的时间里数据库里写入值出现了类似脉冲变化, 由0变为1, 又变为0, 这种情况被认为不是一个有效的报警状态, 尤其在电子周界和红外对射较为敏感的场合。

Service层将所有业务决策处理完毕后, 将响应信息进行封装并提交给表示层。

View层利用DWR和一些其它外部资源构建, 如图片、CSS等。本设计中主要采用DWR可重用的Java Script类库:enging.js、util.js、gi.js, 其中util.js用来封装对DOM元素的操作, 实现页面的动态更新。


(四) 配置文件

使用DWR时, 需要对Web.xml进行配置, 配置的具体内容如下:


在dwr.xml中进行如下配置:


(五) 资源的释放

通过使用Comet技术, 客户端与服务器之间维持的HTTP也会给通信带来一些不确定的因素。因为在浏览器与服务器之间维持了一个长连接, 而数据的传输是随机的, 客户端不知道何时服务器才有数据传送。服务器端需要确保当客户端不工作时不再进行数据传输, 释放为这个客户端分配的资源, 防止内存的泄漏。因此需要一种机制使双方知道彼此都在正常运行。

在设计实现上, 服务器端在阻塞读时会设置一个时限, 超时后阻塞读调用会返回, 同时发给客户端无新数据到达的心跳信息。此时如果客户端已经关闭, 服务器往通道写数据会出现异常, 服务器端就会及时释放为这个客户端分配的资源。

如果客户端使用的是基于Ajax的长轮询方式, 由于每次响应结束连接都会关闭, 若经过某个时限没有收到客户端的再次连接建立请求, 会认为客户端不能正常工作, 会释放为这个客户端分配、维护的资源。当服务器处理信息出现异常情况, 需要发送错误信息通知客户端, 同时释放资源、关闭连接。

五、总结

本文主要针对基于物联网感知器的智能仓库安防软件中数据推送技术的研究, 首先讨论了几种基本的BS架构的安防软件模式。在比较特殊的应用场合, 对感知设备的实时性要求较高, 使用Comet技术与服务器建立长连接, 形成异步通信机制, 减少前端浏览器的响应时间, 能实时反映感知设备的状态。本文从设计角度, 分别对客户端、服务器端的主要模块做了介绍, 设计了资源释放机制。在未来基于物联网的智能仓库安防软件设计中, 服务器作为响应的发起端将会成为设计主流。在面向社会的公共安全物联网工程中, 研究如何在前台实时展示和分析感应器的状态, 将会成为一个重要的研究方向。

上海阳合仓储管理
官方二维码

版权所有©:阳合仓储 公司地址:上海市嘉定区南翔嘉美路428号 联系电话:134-7270-5338 沪公网安备 31011402008347号 沪ICP备14036201号-1