物流路由实时分析、预警机制及实现
更新时间:2020-08-07 04:35:03
摘要该文是以我国物流路由为背景,通过基于web的开发程序,对我国物流路由进行实时数据的交互,并对数据进行分析,预警,
1 背景与现状
随着电子商务的澎湃发展,网购已经成为生活中必不可缺的一部分。尤其是节假日,如11月11日达到日均过亿物流订单的情况下,各类商家,各类每家在网络营销和网购中大大地满足了各自的需求。
Esper通过对数据流接收后的实时处理等机制,在遇到大数据时,逐步替代了之前查询较慢,需要不断访问数据库的关系型数据库。Esper技术在物流中的应用,对订单的实时分析,车辆的实时分析,能够在极短的事件内处理大量的订单,车辆数据,从而能够及时地对出错的信息进行正确的反馈,以避免不必要的损失和采取及时的补救措施。
大数据是继互联网,云计算,移动的迅猛发展后的又一个新鲜概念。CEP复杂事件处理引擎,和低延迟消息传递中间件是大数据处理中应用软件设施的基础。在物流行业中,SOA/CEP的提出与实施,有效地提高了物流产业对市场的及时响应变化,在看似无关的事件中,辨识及预测出机会与陷进。现在的复杂事件处理越来越趋向于一个追求:更快,不贵,不复杂。如今,CEP已经很好的融合了物流市场,行业中的需求很大。
1.2 本文所做的工作
本文的主要工作即:展示物流系统的Esper技术的应用。
2 Esper技术简介
2.1 概述
Esper是一个Java开发的事件流处理(ESP:Event Stream Processing)和复杂事件处理(CEP:Complex Event Processing)引擎。CEP:是一种实时事件处理并从大量事件数据流中挖掘复杂模式的技术。ESP:是一种从大量事件数据流中过滤,分析有意义的事件,并能够实时取得这些有意义的信息的技术。当数百万数量级的事件同时发生时,我们不可能用关系数据库来存储和查询,esper正是转为这样的大批量关联事件而设计的,它使应用程序的过程中收到的事件大量快速发张。Esper在双2GHz CPU的Intel系统测试环境下,处理超过500 000个事件/秒;在VWAP基准测试中在有1000语句的情况下,引擎延时平均小于3微妙(在10us时超过99%的预测准确率)――最高时有70 Mbit/s流量并占用85%的CPU资源。该引擎可应用于网络入侵探测,SLA监测,RFID读取,航空运输调控,金融方面(风险管理,欺诈探测)等领域。
2.2 Esper中epl规则库简介
Esper提供一个定制的事件处理语言(epl),是esper应用中的核心,事件流根据epl规则库进行分析,在大数据的传输中,这种分析是非常迅速而且有效的。该语言类似于SQL,条件表达更加丰富。其更为突出的是可以设置时间窗,从而减少开发工作,可以对复杂的事件进行反映,减少了对数据库中的表的操作,从而大大地提高了效率。
2.3 Esper架构
1)创建java object的事件
2)创建一个声明(statement)
3 物流监控预警系统中Esper应用具体实现
3.1 基本设计概念和流程
在基本设计概念和流程中最重要的逻辑处理是物流的监控预警。在物流的监控预警中,主要有以下几种判定机制运用到了esper技术:
车辆错误:
1)车辆所在gps坐标是否在设定路线上,如果没有,返回车辆物流运输出错;
2)车辆半小时是否有信息传回,如果没有,返回车辆信号丢失;
3)车辆的半小时内所行距离(无中转站的情况下),如果太快则返回车辆速度过快信息,太慢则返回车辆速度过慢信息。
在这几种判定机制下,就需要在系统开始运行时,传入数据库中的路线流进入esper引擎中,然后随着订单流和车辆流的传入,做出判定,然后将信息反馈给前端,显示出详细信息,并对错误信息进行预警,还有一步异步操作是把数据同时更新到数据库中。
3.2 车辆管理模块设计说明
1)程序描述:该模块设计可以分为两部分。第一部分:车辆信息从webservice传入,然后直接放到esper监听引擎中,esper引擎通过epl规则库做复杂事件流处理,然后如果有错误生成错珠海到连云港物流误消息存入系统,以便管理员查看。同时无论有无错误消息,esper引擎在新车辆进入后都会更新当前在引擎中的事件流信息存入到内存中,以便页面调用是调用或者在20秒一次的推送中用到,同时还会把车辆信息存入到数据库中。第二部分:管理员通过该模块对程序进行车辆相应的操作,管理员通过查看车辆管理页面列表将当前esper引擎中正在处理的车辆信息显示出来,而且页面每过一分钟都会刷新,或者手动刷新。管理员通过搜索或者查看车辆信息将数据库中的车辆信息调用出来,显示车辆详情。
2)特点:此程序模块有几个难点,一个是epl规则库的书写,一个是对webservice接口的书写。
3)功能:系统接收每隔几分钟或者十几分钟从车载终端传输一次的车辆信息,然后从esper引擎中做大部分能判断处理,而要在数据库中判定当前车辆位置是否在规定路线上的处理,然后将处理信息写到内存中,更新到数据库中以供前端调用。
4)性能:能够在最小反应时间尽量处理最多的数据 5)输入项:查询时需要输入车辆号
6)输出项:显示当前车辆信息列表;显示个别车辆信息列表
7)算法:无
8)限制条件:无
9)程序流程图:
10)后端逻辑处理具体实现:通过后端的doget方法的车辆的ID,然后调入esper引擎中处理信息,随后调入storeitem存入数据库的同时异步传输esp珠海到广东物流er中处理车辆信息中的最新车辆信息给前端显示。
1)当前所有车辆信息中长达10分钟没有信号传输的车辆
说明:和订单消息类似,当10分钟内没有传输信号时,说明车辆出现危险紧急状况或者硬件出现问题的可能。在epl处理中,notime放的是每次车辆传入的时间。首先,获得车辆事件流中所有的唯一的id最近消息以及时间Select notime,id from com.project.controller.event.TruckEvent.std:unique(id).win:time然后在监听mylistener那里的继承函数中,将notime与获取当前时间相减然后将数值超过10分钟的id信息传递给控制层。
2)当前ID车辆是否运送过快或者运送过慢
说明:当车辆信息的路线在10分钟内保持不变时,则默认车辆没有到过中转站,也没有停下来则开始判定ID订单,如果按notime时间排序车辆中每次传入两点的直线坐标的距离过大或者过小都不符合条件,会返回错误信息给系统。首先,得到10分钟内车辆车辆的路线保持不变的订单id以及他们的坐标。Select TruckID,pr,pl,routine from com.project.controller.event.TruckEvent.win(time:10 min)group by TruckID.ext.sort(notime dsc);然后,在监听mylistener那里的继承函数中,运用for循环将routine保持不变的找出来,然后将所有的两点的距离按经纬度坐标求直线,然后全部想加,得出的结果除以10min得出结果。将速度过快者,反馈给前端。当然,这么计算有些误差,但是确实估算到了订单的大致车辆行驶速度
3)当前车辆是否在预定路线中
说明:当车辆传入时,关于路线的点集在路线流中,通过路线号能够得出路线在路线流中的所有点的点集。然后找出最近点判断即可,假定两点之间的密集程度为5公里,则当前点与最近一点的距离不能大于2.5公里,如果所有点于当前点的距离大于2.5公里,则说明订单不在预定路线中,需要返回错误信息。由于这个只需要判定当前刚进入的车辆,所以要过滤其他在event中的id。首先,找出select a.TruckID,a.npr,a.npl,b.apr,b.apl from com.project.controller.event.ItemEvent as a(TruckID=”A100001”), com.project.controller.event.GPSEvent as b(a.routine=b.routine);然后,在监听mylistener那里的继承函数中,运用for循环将距离最近的点和期间的距离找出来,判断如果其大于2.5公里,则返回错误信息给系统管理员。
4 结束语
本文首先对当前的信息化时代有了一个简单的介绍和了解,分析了当前信息化大数据时代的到来,各种信息化产品更新的迫在眉睫。尤其是随着硬件设施的飞速发展,软件技术的进一步更新,物流系统存在了一部分的不足。由于这些不足之处,对本软件的开发提供了一个明确的目标,之后的设计和开发都是围绕着佛山到乌海物流尽最大可能通过软件的方式解决物流过程中的不足之处。接下来提出的研究目标与所做工作,都是为了说明这项研究的简略研究内容及其在社会中的价值所在。
在第二部分中,本文对在物流监控预警系统中所运用到的技术进行了详简有序的介绍,着重介绍了esper技术,以及esper中的事件匹配处理机制epl。这是此物流监控系统中的核心,也是物流监控系统提高效率完成大数据处理的关键所在。然后介绍的技术,如基于rest的webservice,goolge api的调用,敏捷开发都是开发物流监控系统中必不可少的一部分,证明了这些技术的可行性。
在第三部分钟,详细介绍了物流监控系统的需求分析,概要设计和详细设计以及具体实现,也对实现部分给出了必要的讲解和说明。
综上所述,本文成功的构建了一个物流实时监控预警系统。