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

一种基于数据流的动态分配计算方法、装置和设备与流程

2022-08-21 07:32:41 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,特别是涉及一种基于数据流的动态分配计算方法、装置和设备。


背景技术:

2.数据流技术区别于现有主流的基于控制流的系统架构与程序设计模式,以数据为驱动生成任务,处理单元根据数据所对应的任务逻辑进行相应处理,再产生新数据并生成新任务。以数据所对应的任务为调度单元,数据流技术能够实现灵活的资源调度。然而,一方面,现有的数据流调度方式需预设每个处理模块的处理逻辑,然后数据流按照所需的处理逻辑发送至对应的处理模块。这种任务调度与资源分配方式限制了处理模块的资源利用弹性与效率,不能最大化发挥整个处理模块系统的资源能力。另一方面,不论是单机还是集群,其处理资源普遍存在异构性,如一台单机或一个集群中一般包括cpu和gpu,可能还包含其他各种专业的处理模块,如人工智能芯片寒武纪、tpu等。不同的处理模块擅长于不同的处理任务,例如cpu更擅长复杂的逻辑处理或者高精度的浮点运算,gpu擅长海量数据的并行处理、图片的处理等,tpu擅长于机器学习任务的处理等。而现有的任务分配算法也没有考虑到该资源异构性,因而对于流数据的处理效率不够高。


技术实现要素:

3.基于此,有必要针对上述提到的至少一个问题,提供一种基于数据流的动态分配计算方法,并相应提供该基于动态分配的计算装置和/或设备。
4.一种基于数据流的动态分配计算方法,适于在计算设备中执行,包括下列步骤:
5.获取待处理流数据和数据流图,所述数据流图中的流程节点与若干个服务一一对应,自所述待处理流数据中提取待处理任务,并将所述待处理任务存入与所述数据流图中初始服务对应的待处理任务池中;
6.部署数据流图所对应的所有服务到若干个处理单元中的每一个处理单元上;调用若干处理单元中的一个处理所述待处理任务,生成新待处理任务;
7.判断到所述新待处理任务为待处理结果任务,调用处理单元处理所述待处理结果任务,生成结果数据并输出。
8.本发明同时提供一种基于动态分配的计算装置,包括:
9.预处理模块,用于获取待处理流数据和数据流图,所述数据流图中的流程节点与若干个服务一一对应,自所述待处理流数据中提取待处理任务,并将所述待处理任务存入与数据流图的初始服务对应的待处理任务池中;
10.分配模块,用于部署数据流图所对应的所有服务到若干个处理单元中的每一个处理单元上;调用若干处理单元中的一个处理所述待处理任务,生成新待处理任务;
11.输出模块,用于判断到所述新待处理任务为待处理结果任务,调用处理单元处理所述待处理结果任务,生成结果数据并输出。
12.本发明还提供了一种基于动态分配的计算设备,包括处理器和用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
13.获取待处理流数据和数据流图,自动部署数据流图中所涉及的所有服务,所述数据流图中的流程节点与若干个服务一一对应,自所述待处理流数据中提取待处理任务,并将所述待处理任务存入与数据流图的初始服务对应的待处理任务池中;
14.部署数据流图所对应的所有服务到若干个处理单元中的每一个处理单元上;调用若干处理单元中的一个处理所述待处理任务,生成新待处理任务;
15.判断到所述新待处理任务为待处理结果任务,调用处理单元处理所述待处理结果任务,生成结果数据并输出。
16.本发明提供的基于数据流的动态分配计算方法和设备通过将流数据按数据流图所示逻辑,逐一划分成待处理任务,并分配到与预先设定的数据流图对应的服务待处理任务池中,再将待处理任务按照预设的调度算法调入适当的处理单元中处理,每个处理单元均可支持一个完整的流数据处理流程所涉及的全部服务,因而处理单元不再绑定单一服务,而是具有全服务的特性,任务调度与资源管理模块始终能够根据待处理任务所需的资源特征、处理单元资源状态进行实时调度,以发挥不同处理单元的处理能力特性,充分利用系统资源,实现流式大数据的高效处理。
附图说明
17.图1为本发明一实施例中的基于数据流的动态分配计算方法流程图;
18.图2为本发明一实施例中的步骤s100的具体方法流程图;
19.图3为本发明一实施例中的步骤s200中的具体方法流程图;
20.图4为本发明一实施例中的步骤s210中的具体方法流程图;
21.图5为本发明一实施例中的基于数据流的动态分配计算装置的结构示意图。
具体实施方式
22.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
23.本发明一实施例中提供了一种基于数据流的动态分配计算方法,适于在计算设备中执行,如图1所示,包括下列步骤s100~s300:
24.步骤s100:获取待处理流数据和数据流图,数据流图中的流程节点与若干个服务一一对应,自待处理流数据中提取待处理任务,并将待处理任务存入与数据流图中初始服务对应的待处理任务池中。在进行流数据处理工作之前,首先根据数据处理需求设计数据流图,也即设计关于待处理流数据的预定处理流程。这一数据流图或预定流程的设定,数据流相关技术领域的技术人员能够了解,在此不做赘述。数据流图中包括具有一定顺序的若干个流程节点,每一个流程节点对应一个数据处理的服务,可通过不同的程序设计语言进行设计。待准备好上述工作后,可直接将待处理流数据接入,并将其依据预先设定好的预设输入格式进行整理,逐一划分出待处理任务,如图2所示,具体步骤则包括步骤s110~步骤
s120:
25.步骤s110:将待处理流数据依据预设输入格式进行整理,按序生成若干个键值对数据。
26.步骤s120:逐一对预处理后的键值对数据添加初始服务标签,生成待处理任务,初始服务标签用于指定初始服务。服务标签即是携带上下文信息的信息载体。当待处理数据中添加了初始服务标签,该待处理任务归入到数据流图中的初始服务对应的待处理任务池中。待处理任务池能够以队列的方式存在于内存中。
27.因而,一旦处理某一种流数据的预定流程得到确定,流数据经过特定的输入模块整理后,即可自动逐一生成一系列的待处理任务,这些待处理任务按序进入到初始服务对应的待处理任务池中。例如,一个视频流经过数据输入模块按照预设输入格式会被分解成多个图片帧,每个图片帧会按照流程图中的第一个流程节点所指示的初始服务被处理,当初始服务按照预定要求处理完图片帧后,其输出结果将再转入其他后续服务作为输入继续处理,即形成新的待处理任务并进入对应服务的待处理任务池。如此往复,直至数据按照数据流图所示逻辑到达末端服务并输出最终结果。
28.步骤s200:部署数据流图所对应的所有服务到若干个处理单元中的每一个处理单元上;调用若干处理单元中的一个处理待处理任务,生成新待处理任务。自用户提交作业后,数据流图中所涉及的所有服务均将自动部署在每一个处理单元上,即全服务的部署特性,具体的,每个服务均包含处理待处理任务的程序集,根据标准打包格式将程序集打包成容器,再根据标准容器部署方法将所有服务对应的容器调配到每个处理单元上,形成微服务。给每个微服务指定ip地址和端口(《ip:port》),系统以每个微服务的《ip:port》为标识向其分配待处理任务或新待处理任务,此即在处理单元上进行全服务部署的具体方式。优选的,容器与处理单元类型相关联,根据程序集以及系统资源特性将数据处理器划分成第一处理容器和第二处理容器,例如当系统同时存在cpu与gpu,分别根据上述的特点打包生成cpu容器与gpu容器。换言之,每个流程节点的程序以及其运行所需的环境均按照标准容器的生成方式制成容器,并交给容器管理器(如kubernetes)进行管理。为达到全服务的部署效果,指定启动容器镜像副本的数目与系统物理资源数目对等,即对每个容器,通过指定与相应处理单元数目相等的容器镜像副本数目,例如,如果一个机器有8个cpu,则数据流图中所涉及的所有服务的容器均启动8个副本。
29.某一待处理任务经调出并分配给选定的处理单元处理,处理完后可能还要根据设定流程进入到另一个处理阶段,生成其他数据结果,因而处理后会形成新待处理任务,如图3所示,具体过程包括步骤s210~s220:
30.步骤s210:调取待处理任务池中的待处理任务,启用处理单元处理待处理任务并产生输出数据。任务调度与资源管理模块调取待处理任务池中的待处理任务,按照实时处理单元状态以及待处理任务的资源需求特性,将待处理任务分配至一合适的处理单元,处理单元将根据待处理任务所需的服务处理待处理任务中的数据,并产生输出数据。
31.作为一个优选的方案,如图4所示,上述任务调度与资源管理模块调用处理单元处理待处理任务的详细步骤包括步骤s211~步骤s213:
32.步骤s211:获取若干处理单元的实时利用率以及待处理任务或待处理结果任务的资源需求特性。任务调度与资源管理模块含有预先定义的物理资源信息,该物理资源信息
包括物理资源种类和/或物理资源量,比如cpu的数量和/或gpu的数量等。所预先定义的物理资源一般需小于或等于系统能够提供的物理资源量,系统根据相关人员指定,形成物理资源池,并初始化各处理单元的资源状态。系统在处理前,检查处理单元的忙碌状态和处理能力,为分配做好准备。
33.步骤s212:依据资源调度算法,确定处理待处理任务或待处理结果任务的实际处理单元。
34.步骤s213:将待处理任务或待处理结果任务调入实际处理单元中处理。更新实际处理单元的资源状态,待处理单元完成任务处理后,再向任务调度与资源管理模块汇报和更新资源状态。
35.步骤s211~步骤s213的整体思路是,先确定若干个处理单元各自的实时利用率,以及每个处理单元的资源状态,选择其中实时利用率最低的且能够支撑待处理任务的处理单元加入备用处理单元,同时还要判断将要处理的数据流图中某一服务对应的待处理任务本身的资源需求特性,例如若涉及图片的处理,则选用gpu更为合适,若涉及人工智能的演算,则选用支持人工智能的芯片(如寒武纪、tpu等)更合适,若涉及复杂的逻辑运算或者高精度运算,则cpu更为合适。结合上述两个特点,依据资源调度算法,从若干处理单元中选出最佳处理模块,作为处理待处理流数据的实际处理单元。
36.从原理上而言,任务调度与资源管理模块自动剖析(profiling)各个处理单元对不同服务的承载量,如cpu1可最多同时支撑2个s1服务所对应的任务、3个s2服务所对应的任务、4个s3所对应的任务、1个s4服务所对应的任务,则cpu1的初始资源状态描述为向量《2,3,4,1》,其他处理单元(cpu或gpu等)以此类推。按照profiling结果初始化所有处理单元的资源状态描述,同时初始化其资源利用率为0。实际任务分配后,则更新所分配处理单元的资源利用率与资源状态描述。假设初始资源状态描述为《r1,r2,r3,

,rs》,则当向该处理单元分配某一服务si所对应的待处理任务后,则其资源利用率更新为p=p 1/ri,相应地,其资源状态描述更新为:资源状态描述更新为:其中表示对rs(1-p)向下取整。例如当向初始资源状态为《2,3,4,1》的处理单元分配一个服务s1所对应的待处理任务后,则该处理单元的资源利用率更新为0.5,相应资源状态将更新为《1,1,2,0》,该处理单元将不再适合向其分配服务s4对应的待处理任务。系统初始化数据流图所涉及的各个服务的待处理任务池,为每一个服务分配内存空间并构建先进先出队列作为待处理任务池。
37.步骤s220:对输出数据添加新服务标签,形成新待处理任务,新服务标签用于指定若干个服务中的中间服务或末端服务。
38.依据预先分配的初始服务标签,待处理任务被存入到与数据流图中初始服务对应的待处理任务池中,随着这一针对流数据的初始分配处理,初始服务对应的待处理任务池中会不断存有携带有初始服务标签的待处理任务,这些待处理任务按照先进先出的顺序调入到处理单元中进行处理,处理完成后再对处理得到的数据添加上新服务标签,形成新待处理任务,这些新服务标签用于与流程图中可能存在的其他服务对应,存入这些服务对应的待处理任务池,当然,这样的存入也是依照数据流图预先设定好的顺序进行,以便于在后续处理中根据需要,进入下一个按照预定流程确定的服务对应的待处理任务池中。
39.当某一处理单元处理完成分配给其的任务后,除按照规定处理流程生成新的待处理任务之外,还需要向任务调度与资源管理模块汇报,更新处理单元利用率以及相应的资源状态描述,具体过程原理如前所述。
40.步骤s300:判断到新待处理任务为待处理结果任务,调用处理单元处理待处理结果任务,生成结果数据并输出。
41.当生成新待处理任务后,需要对该新待处理任务进行识别和判断,以对其进行分类,如果该经过处理得到的新待处理任务为待处理结果任务,则将其处理后直接将处理结果作为最终结果输出,其具体过程为:判断到新待处理任务池为若干个服务中与末端服务对应的待处理任务池,则确认新待处理任务为待处理结果任务。可将其进一步细分为步骤s310~步骤s330:
42.步骤s310:获取新待处理任务。该新待处理任务获取自存储该待处理任务所需服务对应的待处理任务池。
43.步骤s320:判断到新待处理任务中的服务标签与数据流图中的流程末端节点属性信息相匹配。数据流图中包括多个具有特定顺序的流程节点,例如初始流程节点、中间流程节点和末端流程节点,各节点均具有自己的属性信息,这些属性信息基于数据流技术预先确定,存储在相应节点位置。
44.步骤s330:确定新待处理任务为待处理结果任务。当通过步骤s320判断到新待处理任务来自流程末端节点,则说明该新待处理任务已经处于数据流图末端,无须经新的服务处理,因而将该新待处理任务作为待处理结果任务。
45.作为一个优选的方案,当判断到新待处理任务为非待处理结果任务,也即数据流图中并非只对应两个服务(初始服务和末端服务),则将该新待处理任务存入与若干个服务中的中间服务对应的待处理任务池。判断到新待处理任务并非待处理结果任务,也就是说该生成得到的新待处理任务并非由预定流程中最后节点产生,系统会将该新待处理任务重新放入到待处理任务池当中,这一待处理任务池则对应中间服务,令其重复进行步骤s200,即重新调用处理单元处理新待处理任务,生成更新的待处理任务,直到系统判断到生成了待处理结果任务的新待处理任务。当然,处理新待处理任务的处理单元并非必须是处理原待处理任务的处理单元,由于每个处理单元均能够处理数据流图对应的所有服务,因而也可以根据相关的择取规则调用其他处理单元进行处理。
46.作为另一个优选的方案,待处理任务池与预设优先级令牌一一对应,所述预设优先级令牌用于标识待处理任务池的处理顺序优先级,根据优先级令牌调取待处理任务池中的待处理任务,以进入到处理单元中处理。随着任务处理的深入,由于流数据进入数据流图的处理流程后,不断产生待处理任务进入到初始服务对应的待处理任务池,在初始服务对应的待处理任务池中形成任务队列,处理单元将待处理任务处理后形成新待处理任务,进入到数据流图中第二个流程节点对应的服务,存入该服务对应的待处理任务池中,如此类推,第三个流程节点、第四个流程节点等等后续流程节点对应的服务的待处理任务池中均形成了任务队列。影响整个系统的处理效率最大的,是最末端流程节点对应的服务的待处理任务池中的任务队列长度,因而给每个流程节点对应的服务的待处理任务池赋予优先级,依据优先级及时处理存储在相应待处理任务池中的待处理任务,能够更好地提高流数据处理效率。优选的,赋予末端服务对应的待处理任务池以最高优先级,优先处理其中的待
处理任务。
47.经过上述处理,就能够充分调用系统中的资源,由于每个处理单元均能够处理数据流图中的全部服务,克服了传统的数据流技术中要求每个处理单元预设某一单一服务,数据按照其所需的服务发送至相应的处理单元的固定模式的弊端,基于全服务的数据流处理技术,每个处理单元部署有数据流图中全部流程对应的所有服务,可进行任何需要的任务处理,按需分配并充分利用资源,继而实现任务的实时处理,灵活高效地处理具有异构特性的流数据。
48.基于计算机系统的思想,本发明同时提供一种基于动态分配的计算装置,如图5所示,其包括:
49.预处理模块10,用于获取待处理流数据和数据流图,所述数据流图中的流程节点与若干个服务一一对应,自所述待处理流数据中提取待处理任务,并将所述待处理任务存入与数据流图的初始服务对应的待处理任务池中。用户提交作业,指定流数据源(如视频流的rtsp地址),系统获取所述作业待处理的流数据(如视频流、传感器数据、用户访问日志等随时间源源不断产色的数据),由预处理模块10自所述待处理流数据中提取待处理任务,并将所述待处理任务存入与所述数据流图中初始服务对应的待处理任务池中。
50.分配模块20,用于调用若干处理单元中的一个处理待处理任务,生成新待处理任务;数据流图所对应的所有服务均部署在每个处理单元上。
51.输出模块30,用于判断到所述新待处理任务为待处理结果任务,调用处理单元处理所述待处理结果任务,生成结果数据并输出。
52.需要强调的是,分配模块中包括调配单元,该调配单元用于调用处理单元处理所述待处理任务或所述待处理结果任务,具体包括步骤s211~步骤s213。
53.上述各模块和/或单元之间的执行方法实现过程同前文基于数据流的动态分配计算方法,不再重复叙述。
54.同时,本发明还提供一种基于动态分配的计算设备,其包括处理器以及用于存储处理器可执行指令的存储器,其中,处理器被配置为执行基于数据流的动态分配计算方法中的步骤s100~步骤s300:
55.步骤s100:获取待处理流数据和数据流图,数据流图中的流程节点与若干个服务一一对应,自待处理流数据中提取待处理任务,并将待处理任务存入与数据流图的初始服务对应的待处理任务池中。
56.步骤s200:部署数据流图所对应的所有服务到若干个处理单元中的每一个处理单元上;调用若干处理单元中的一个处理待处理任务,生成新待处理任务。
57.步骤s300:判断到新待处理任务为待处理结果任务,调用处理单元处理待处理结果任务,生成结果数据并输出。
58.为更好理解本发明所阐述的内容,下面列举一应用实例:
59.通过视频流rtsp地址接入一段视频数据到系统中,系统包含程序员预先设置好的数据流图以及预先设置的输入格式,数据流图中包含流程节点1、流程节点2、流程节点3、流程节点4,各流程节点对应的服务为s1、s2、s3和s4,每个服务中均包含特定的处理程序,如s1为提取图片中的特定对象,s2为区分出特定对象中的某一类对象,s3为区分出某一类对象中的某一个,s4为发送区分结果信息。每个服务均对应有一个待处理任务池,定义为v1、
v2、v3和v4,用于存储每个节点的待处理任务。系统中包含若干个处理单元,这些处理单元包括cpu和/或gpu。基于全服务的部署策略,上述s1、s2、s3、s4的处理程序均以微服务的方式部署于每一个处理单元,因此每个处理单元均能够提供服务s1~s4,并将按待处理任务的需求启用。视频数据经预处理模块处理后形成帧图片数据,在该数据中添加初始服务标签,不断形成待处理任务m1,m1存入s1对应的待处理任务池v1,形成了m1队列,依据先进先出的规则,m1被调出进入到某一合适的处理单元,处理后被加入新的服务标签,成为m2,判断到v2并非末端服务,从而存入s2对应的待处理任务池v2,继续处理并添加新服务标签,分别成为m3和m4,最后m4存入v4,系统判断到m4携带有指向v4的服务标签,确定v4为末端服务对应的待处理任务池,则将m4确认为待处理结果任务,最后再调用合适的处理单元处理m4并输出,实现从一段视频流中寻找到一个特定对象的结果。每一次使用处理单元处理待处理任务都是选择出处理前最合适的处理单元,由于每个处理单元都能够处理s1~s4,因而都能够被选择,但每个处理单元的利用率、资源量和处理特性不同,需根据相关的调用算法实际确定。当处理大量视频数据时,每个待处理任务池中都存有一定长度的待处理任务队列,优先处理v4中的待处理任务,更有利于v3中的待处理任务处理后存入v4,因而能够更快输出结果。
60.上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
61.本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
62.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
63.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
64.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
65.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上
下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
66.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于服务端设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
67.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
68.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
再多了解一些

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

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

相关文献