一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种批处理任务的触发方法、系统及计算机可读存储介质与流程

2021-11-22 12:55:00 来源:中国专利 TAG:


1.本技术涉及大数据技术领域,具体涉及一种批处理任务的触发方法、系统及计算机可读存储介质。


背景技术:

2.目前大数据技术已经越来越成熟,实时计算与离线计算的框架也趋于成熟,实时计算能第一时间得到结果,但是由于实时数据的乱序、重复发送或漏发等诸多因素,可能导致实时计算的结果不精确;离线计算恰好相反,时效性非常低,有的甚至延迟1天、1周或一个月计算,数据的乱序或重复发送等一些问题可以在这个缓冲时间内处理,处理的准确度高,因此流批一体成为发展方向,但目前的流批一体存在实时计算与离线计算相互隔离以及离线计算的延迟较长的问题。


技术实现要素:

3.本技术提供一种批处理任务的触发方法、系统及计算机可读存储介质,能够缩短批处理任务的延迟时间。
4.为解决上述技术问题,本技术采用的技术方案是:提供一种数据处理系统,该数据处理系统设置有数据处理架构,数据处理架构包括:实时处理层与批处理层,实时处理层用于实时接收第一待处理数据,对第一待处理数据进行复制得到第二待处理数据;确定当前批处理任务对应的全部第二待处理数据是否已经接收完毕,若当前批处理任务对应的全部第二待处理数据已经接收完毕,则生成事件通知消息;批处理层与实时处理层连接,用于在接收到事件通知消息后,对接收到的所有第二待处理数据进行处理,以执行当前批处理任务。
5.为解决上述技术问题,本技术采用的另一技术方案是:提供一种批处理任务的触发方法,该方法应用于数据处理系统,该数据处理系统布置有数据处理架构,数据处理架构包括实时处理层与批处理层,该方法包括:利用实时处理层实时接收第一待处理数据,对第一待处理数据进行复制得到第二待处理数据;确定当前批处理任务对应的全部第二待处理数据是否已经接收完毕,若当前批处理任务对应的全部第二待处理数据已经接收完毕,则生成事件通知消息;利用批处理层在接收到事件通知消息后,对接收到的所有第二待处理数据进行处理,以执行当前批处理任务。
6.为解决上述技术问题,本技术采用的另一技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,计算机程序在被处理器执行时,用于实现上述技术方案中的批处理任务的触发方法。
7.通过上述方案,本技术的有益效果是:实时处理层负责实时接收第一待处理数据,对第一待处理数据进行复制得到第二待处理数据,且实时处理层可以确定批处理层执行当前批处理任务所需的第二待处理数据是否全部获取到,如果获取到当前批处理任务对应的全部第二待处理数据后,则生成事件通知消息,并将该事件通知消息发送给批处理层,从而
使得批处理层根据获取到的全部第二待处理数据来执行当前批处理任务。通过建立实时处理层与批处理层之间的联系,使得实时处理层具备触发批处理层执行当前批处理任务的能力,而非采用定时触发当前批处理任务的触发方式,打破了实时处理层和批处理层的隔离,使得实时处理层和批处理层能够进行组合,可以适应更多的场景,缩短传统lambda架构的离线计算的延时,让离线的批处理任务的执行更加实时;而且第一待处理数据和第二待处理数据同步,不会出现数据不一致的问题。
附图说明
8.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
9.图1是本技术提供的lambda架构的结构示意图;
10.图2是本技术提供的kappa架构的结构示意图;
11.图3是本技术提供的数据处理系统一实施例的结构示意图;
12.图4是本技术提供的数据处理系统另一实施例的结构示意图;
13.图5是本技术提供的批处理任务的触发方法一实施例的流程示意图;
14.图6是本技术提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
15.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
16.目前主流的流批一体的方案为lambda架构和kappa架构,lambda架构如图1所示,实时支路直接消费数据产生实时的、不太准确的结果,离线支路消费数据持久化到数据库,等待定时离线任务触发产生更加准确的结果,然后根据该结果修正实时结果。但是这种定时触发的模式存在一些弊端:
17.1)同样的业务需求需要开发两套一样的代码,不仅开发困难,还很难维护。
18.2)定时触发的任务无法感知用户需要的数据是否完整,导致数据不准确。
19.3)数据可能很早就准备好了,但是要延时到下次离线定时任务时才能得到数据,延迟较高。
20.kappa架构如图2所示,强依赖于消息中间件的持久化能力,通过数据回放来实现离线计算能力,但是这种模式存在一些弊端:
21.1)强依赖消息中间件,消息中间件缓存的数据量和回溯数据有性能瓶颈。
22.2)kappa在抛弃了离线数据处理模块的同时,也抛弃了离线计算更加稳定可靠的特点,计算结果不准确。
23.3)在处理实时数据时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流的先后顺序问题,导致数据丢失。
24.为了打破实时计算和离线计算的隔离,让实时计算触发离线计算,使得实时和离线进行组合,适应更多的场景,解决更多的问题,本技术采用了事件通知机制,通过主动的事件通知机制有效地降低传统lambda架构的离线计算延时,同时也解决了kappa架构强依赖消息中间件的问题。
25.请参阅图3,图3是本技术提供的数据处理系统一实施例的结构示意图,该数据处理系统设置有数据处理架构,该数据处理架构包括:实时处理层10与批处理层20。
26.实时处理层10用于实时接收第一待处理数据,对第一待处理数据进行复制得到第二待处理数据;具体地,该第一待处理数据为新获取到的数据,可以为图像、声音或文字等数据,实时处理层10在接收到第一待处理数据后,对该第一待处理数据进行复制,生成第二待处理数据,并将该第二待处理数据发送给批处理层20。
27.实时处理层10还用于确定当前批处理任务对应的全部第二待处理数据是否已经接收完毕,若当前批处理任务对应的全部第二待处理数据已经接收完毕,则生成事件通知消息;具体地,实时处理层10用于统计当前批处理任务(即离线任务)对应的第二待处理数据的数量是否达到预设数量,如果判断出当前批处理任务对应的第二待处理数据的数量达到预设数量,则表明执行当前批处理任务所需的第二待处理数据已经足够,此时批处理层20可以执行当前批处理任务;或者还可在接收到用户下发的执行指令后,生成一事件通知消息,并发送给批处理层20,以提醒批处理层20此时可以执行当前批处理任务了。
28.实时处理层10还可在接收到第一待处理数据后,对该第一待处理数据进行处理,得得到执行结果;例如,第一待处理数据可以为人脸图像,实时处理层10可对人脸图像进行特征提取,得到人脸特征,然后基于人脸特征进行聚类处理。
29.批处理层20与实时处理层10连接,其用于在接收到事件通知消息后,对接收到的所有第二待处理数据进行处理,以执行当前批处理任务。
30.首先在数据源(图中未示出)侧只有一条数据流,实时处理层10作为数据流的唯一入口,实时处理层10在接收到实时的第一待处理数据后进行数据的复制并分流,一份数据(即第二待处理数据)供后续批处理层20进行离线计算时使用,另一份数据(即第一待处理数据)被实时处理层10直接实时计算,得到相应的实时指标,而且实时处理层10能够产生触发批处理层20执行当前批处理任务的事件通知消息,使得实时处理层10与批处理层20能够进行数据交互,应用场景较广。
31.本实施例提供了一种基于事件通知的流式任务触发批处理任务的方案,所提供的方案主要涉及实时计算、离线计算、事件通知、消息队列、流批一体或大数据架构等技术领域,尤其涉及实时计算和离线计算的联动技术。本实施例带来的好处是:(1)现有设计实时计算和离线计算相互隔离,各自进行各自的任务,无法满足一些实时计算和离线计算互动的场景,而本实施例所采取的方案使得实时处理层与批处理层能够交互,应用场景较广;(2)传统lambda架构的指标修正是基于离线任务的定时触发来修正,延迟较高,而本实施例中由于采用实时处理层来触发批处理层所需执行的任务,无需等到设定的时间后才触发当前批处理任务,因此能够缩短执行当前批处理任务的等待时间,使得离线处理的延迟时间较短;(3)现有设计中实时数据和离线持久化数据是两条独立的链路,会出现这边数据出来了那边还查不到的情况,致使流批一体存在数据不一致性的问题,而本实施例所采取的方案中由于实时处理层与批处理层是连接的,数据的一致性较好。
32.请参阅图4,图4是本技术提供的数据处理系统另一实施例的结构示意图,该数据处理系统设置有数据处理架构,该数据处理架构包括:实时处理层10与批处理层20。
33.实时处理层10用于实时接收第一待处理数据,对第一待处理数据进行复制得到第二待处理数据;具体地,实时处理层10包括互相连接的数据流转模块11与事件触发模块12,数据流转模块11用于从数据源30实时接收第一待处理数据,对第一待处理数据进行复制得到第二待处理数据,并将第一待处理数据发送至批处理层20以及事件触发模块12。
34.实时处理层10还用于确定当前批处理任务对应的全部第二待处理数据是否已经接收完毕,若当前批处理任务对应的全部第二待处理数据已经接收完毕,则生成事件通知消息。具体地,事件触发模块12用于基于第一待处理数据确定是否接收完当前批处理任务对应的全部第二待处理数据。
35.事件触发模块12还用于对预设时间段内接收到的第一待处理数据的数量进行统计,判断第一待处理数据的数量是否等于预设数量,若第一待处理数据的数量等于预设数量,则生成事件通知消息。具体地,预设时间段包括起始时间与结束时间,起始时间为当前批处理任务的上一批处理任务的数据接收结束时间,结束时间为当前批处理任务的数据接收结束时间。
36.进一步地,如图4所示,实时处理层10还包括实时指标计算模块13,实时指标计算模块13用于对第一待处理数据进行实时计算,得到第一计算结果,并将第一计算结果持久化到实时计算结果集中。
37.如图4所示,数据处理架构还包括事件中心40,事件中心40与实时处理层10连接,事件中心40用于在接收事件通知消息后,向批处理层20推送事件通知消息。
38.批处理层20与实时处理层10连接,其用于在接收到事件通知消息后,对接收到的所有第二待处理数据进行处理,以执行当前批处理任务。
39.在一具体的实施例中,批处理层20包括事件订阅模块21、数据库22以及批指标计算模块23,事件订阅模块21与事件中心40连接,事件订阅模块21用于向事件中心40发送订阅请求,以使得事件中心40向事件订阅模块21推送事件通知消息。
40.数据库22与批指标计算模块23以及数据流转模块11连接,数据库22用于接收数据流转模块11发送的第二待处理数据,并进行存储。
41.批指标记算模块23用于对预设时间内接收到的第二待处理数据进行实时计算,得到第二计算结果,并将第二计算结果持久化到批计算结果集中。具体地,批指标记算模块23可从数据库22中获取第二待处理数据,事件触发模块12在生成事件通知消息后,批指标记算模块23才真正进入用户定义的实时计算代码,并且进行相应的逻辑操作。
42.继续参阅图4,数据处理架构还包括服务层50,服务层50用于存储批计算结果集与实时计算结果集,在获取到第二计算结果后,对与第二计算结果对应的第一计算结果进行修正。
43.在实时流数据(即第一待处理数据)处理的链路中,第一待处理数据进入事件触发模块12,事件触发模块12判断离线任务依赖的全部数据是否已经被消费,如果依赖的数据已经全部被消费,则产生一个事件通知消息;事件触发模块12将该事件通知消息发送到事件中心40,当批指标记算模块23接收到该事件通知消息后,就立即触发相应的批处理任务,计算得到结果后就可以立马修正实时计算的指标或者推送出去进行展示。
44.在一具体的实施例中,假设需要处理实时图片流进行特征提取然后进行聚类,客户期待延迟越小越好,能够容忍最大的聚类延迟为1小时,且聚类算法在数据量为10w条时效果最好。
45.1)实时部分:实时处理层10接收实时图片流进行特征提取得到特征值,然后对该特征值进行持久化;同时事件触发模块12对处理的数据进行跟踪,记录从上次事件发送时间(即上次发送事件通知消息的时间)到当前时刻的数据处理量,如果该数据处理量达到10w条,则生成事件通知消息并通过事件中心40发送给批处理层20。
46.2)离线部分:批处理层20订阅与离线聚类事件相关的事件通知消息,当接收到该事件通知消息后发出聚档事件,对于10w条数据进行聚类,得到聚类结果。
47.该方案的优点是在保证算法最优的情况下,通过事件触发机制最大可能地降低了结果产生的延迟;如果没有事件触发机制,批处理任务只能每几分钟或每小时触发去检测一次,出现延迟较高或者存在空跑的情况。
48.在另一具体的实施例中,假设有一份实时过车数据,在实时数据处理时需要关联车辆基础信息,然后进行相关计算,车辆基础信息作为维表数据一般都是通过定时更新的方式来同步;如果已经获取到过车的抓拍信息,但是车辆基础信息定时更新还没触发,就会把这个数据作为脏数据丢弃,即匹配不到车辆基础信息,但是实际上只是车辆基础信息没有更新而已。
49.如果车辆基础信息通过事件触发机制来更新,则流程如下:
50.1)过车数据进入实时计算所在的链路。
51.2)将过车数据与车辆基础信息维表关联,发现车辆基础信息维表没有与其匹配的车辆基础信息。
52.3)缓存该过车数据,生成一个车辆基础信息的更新事件。
53.4)批处理层20接收到该更新事件,对车辆基础信息维表进行更新。
54.5)缓存过车数据,重新关联更新后的车辆基础信息表,并进行后续计算。
55.通过上述的步骤,就可以有效减少由于数据未及时同步导致正常数据被误判为脏数据而丢弃的情况。
56.本实施例所提供的方案中数据流转模块输出的一份数据(即第二待处理数据)直接落到持久化的数据库中,供后续离线计算使用;数据流转模块输出的另一份数据(即第一待处理数据)直接进入实时指标计算模块,从而实时计算相应的实时指标。这种处理方式一方面解决了kappa架构强依赖消息中间件持久化的问题,且由于在现代数据仓库建设中,数据最终还是要在数据库中持久化的,所以也不存在增加存储的问题;另一方面又能让实时计算的结果依赖的数据都能在数据库中查到,解决了lambda架构中数据不一致的问题。本实施例所提供的方案设置了事件通知机制,打破实时计算和离线计算的隔离,让实时计算能触发离线计算,使得实时和离线进行组合,适应更多的场景,解决更多的问题;而且降低了传统lambda架构的离线计算的延时,让离线计算更加实时准确;此外,实时数据和离线数据从同一个数据流同步,不会出现这边数据出来了那边还查不到的情况,解决了流批一体方案中数据不一致的问题。
57.请参阅图5,图5是本技术提供的批处理任务的触发方法一实施例的流程示意图,该方法应用于数据处理系统,该数据处理系统布置有数据处理架构,数据处理架构包括实
时处理层与批处理层,该方法包括:
58.步骤51:利用实时处理层实时接收第一待处理数据,对第一待处理数据进行复制得到第二待处理数据;确定当前批处理任务对应的全部第二待处理数据是否已经接收完毕,若当前批处理任务对应的全部第二待处理数据已经接收完毕,则生成事件通知消息。
59.采用数据流转模块从数据源接收流式数据(即第一待处理数据),然后对流式数据进行复制,一份数据(即第二待处理数据)直接持久化到批处理层的数据库中,另一份数据(即第一待处理数据)进入实时指标计算模块;事件触发模块主要负责判断离线计算所需要的数据是否全部消费并且持久,如果满足条件,则生成一个事件通知消息,并且将该事件通知消息发送到事件中心,事件订阅模块接收到该事件通知消息后发出对应的批处理任务。
60.步骤52:利用批处理层在接收到事件通知消息后,对接收到的所有第二待处理数据进行处理,以执行当前批处理任务。
61.批处理层中的批指标计算模块在接收到事件订阅模块发出的当前批处理任务后,对于该当前待处理任务的全部第二待处理数据进行处理,完成对当前待处理任务的处理,得到执行结果。
62.本实施例通过事件通知机制打破了实时计算和离线计算之间的相互隔离,保证了数据的一致性,且拓宽了该架构的应用场景;而且,以事件触发机制触发当前批处理任务,而不是采用定时触发机制来触发当前批处理,通过事件通知机制降低了传统lambda架构存在的修正数据延迟高的问题,有助于缩短处理离线任务的延迟时间,进而缩短修正实时结果的时间。
63.请参阅图6,图6是本技术提供的计算机可读存储介质一实施例的结构示意图,计算机可读存储介质60用于存储计算机程序61,计算机程序61在被处理器执行时,用于实现上述实施例中的数据处理系统。
64.计算机可读存储介质60可以是服务端、u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
65.在本技术所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
66.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
67.另外,在本技术各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
68.以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献