CN111049900B - 一种物联网流计算调度方法、装置和电子设备 - Google Patents
一种物联网流计算调度方法、装置和电子设备 Download PDFInfo
- Publication number
- CN111049900B CN111049900B CN201911265232.9A CN201911265232A CN111049900B CN 111049900 B CN111049900 B CN 111049900B CN 201911265232 A CN201911265232 A CN 201911265232A CN 111049900 B CN111049900 B CN 111049900B
- Authority
- CN
- China
- Prior art keywords
- subtask
- computing
- computing component
- internet
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种物联网流计算调度方法、装置和电子设备,其中,物联网流计算调度方法,包括:获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流;确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务。本发明实施例可以减少所述物联网流计算过程中的资源消耗。
Description
技术领域
本发明涉及物联网技术领域,尤其涉及一种物联网流计算调度方法、装置和电子设备。
背景技术
随着物联网的发展,人们对物联网数据的实时计算产生了大量需求,基于物联网流计算的应用也随之越来越多。
在物联网应用场景中,对于不同行业、不同应用和不同厂商的大量物联网设备往往对应不同的计算任务,且每个任务具有特定的任务拓扑,然后分别使用与各个任务拓扑对应的任务管理器来管理该任务在多个计算节点和计算进程上的计算任务和计算流程,并且每个计算进程和线程只负责一个计算任务的部分或全部计算流程的处理。
在物联网平台的应用中,现有的物联网流计算调度方法虽然能实现物联网实时流计算,但由于物联网具有:任务繁多且每个任务忙闲时吞吐差异较大的特征,造成了物联网流计算的进程和线程数量众多,且每个计算进程和线程的闲时内存占用会造成资源消耗较大的缺陷,从而浪费了资源并降低了物联网流计算的效率。
发明内容
本发明实施例提供一种物联网流计算调度方法、装置和电子设备,以解决相关技术中的物联网流计算方法存在的资源浪费的问题。
为解决以上技术问题,本发明采用如下技术方案:
第一方面,本发明实施例提供了一种物联网流计算调度方法,包括:
获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同;
确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;
根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;
将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息。
第二方面,本发明实施例还提供了一种物联网流计算调度装置,包括:
第一获取模块,用于获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同;
确定模块,用于确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;
拆分模块,用于根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;
执行模块,用于将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息。
第三方面,本发明实施例还提供了一种电子设备,包括:存储器、第一处理器及存储在所述存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一计算机程序被所述第一处理器执行时实现本发明实施例第一方面提供的所述物联网流计算调度方法的步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有第二计算机程序,所述第二计算机程序被第二处理器执行时实现本发明实施例第一方面提供的所述物联网流计算调度方法的步骤。
在本发明实施例中,获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同;确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息。能够使多个任务拓扑不相同的物联网流计算任务共用相同计算组件实例的计算进程和线程,从而减少了物联网流计算的进程和线程的数量,达到减少资源消耗的效果。
附图说明
图1是本发明实施例提供的一种物联网流计算调度方法的流程图;
图2是本发明实施例提供的另一种物联网流计算调度方法的流程图;
图3是本发明实施例提供的第一种物联网流计算调度装置的结构图;
图4是本发明实施例提供的第一种电子设备的结构图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明实施例可以应用于物联网流计算,基于物联网流计算任务具有数量巨大,且不同任务之间具有一定的差异,因此,若将多个任务拓扑不同的物联网流计算任务在拓扑结构固定的计算组件上执行时,将会造成计算组件需要针对每一个物联网流计算任务分别建立一个或者多个进程或者线程,造成进程或者线程数量较多,且在部分任务执行完成后,对应的进程或者线程将处于闲置状态,造成大量的资源消耗。本发明实施例中,可以将不同任务拓扑的多个物联网流计算任务拆分成与各计算组件类型对应的子任务,以将同一计算组件类型对应的多个子任务在同一计算组件实例上运行,能够适用于多种拓扑结构的计算组件,并达到减少计算组件进行和线程的效果,以减小资源的消耗。
请参见图1,图1是本发明实施例提供的第一种物联网流计算调度方法的流程图,如图1所示,该方法包括以下步骤:
步骤101、获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同。
在具体实施中,每一个物联网流计算任务都对应一个任务拓扑,每一个任务拓扑中包括至少一个任务拓扑节点,以根据该任务拓扑执行所述物联网流计算任务中与各个任务拓扑节点对应的步骤,例如:一个物联网流计算任务的任务拓扑指示该流计算任务为先获取数据,再对获取的数据进行分类等步骤。在实施中,执行物联网流计算任务需要基于对应的输入数据流,例如:监控平台需要对人物进行追踪,则需要实时获取摄像头的拍摄数据流,以据此位置确定所追踪的人物的实时位置。
步骤102、确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度。
其中,所述计算组件类型可以是指该计算组件所配置的计算类型,例如:卷积计算、求和计算等,在此并不穷举。在具体实施中,一个任务拓扑节点可以对应一个或者多个计算组件类型,当一个任务拓扑节点对应多个计算组件类型的情况下,需要分别确定该任务拓扑节点对应的每一类计算组件的计算并行度。
另外,本步骤中,通过确定各个任务拓扑节点分别对应的计算组件的计算并行度,可以控制各个计算组件的计算并行度能够满足所述N个物联网流计算任务中与该计算组件对应的任务拓扑节点的任务量,从而防止计算组件的计算并行度过小,而造成物联网流计算任务中任务拓扑节点对应的计算组件的任务处理量超出其能够处理的最大任务量的问题,从而提升了所述N个物联网流计算任务的执行性能。
作为一种可选的实施方式,所述任务拓扑节点对应的计算组件的计算并行度通过以下公式确定:
计算并行度P=min([M*T1/T0](向上取整),U)
其中,所述P为计算并行度,所述M为任务单节点计算时延容忍内最大消息的并发数,所述T1为单计算组件实例单个消息的处理时间,所述T0为划片时间单元,所述U为该计算组件类型在任务配置下的最大并行度。
采用上述公式,分别确定每一任务拓扑节点对应的计算组件的计算并行度,可以减少确定所述计算并行度的过程,且使得出的计算并行度符合任务拓扑节点的时延容忍、处理时间以及该计算组件类型在任务配置下的最大并行度的要求,从而提升计算出的计算并行度的可靠性。
需要说明的是,在具体实施中,还可以采用人工设置、根据计算组件的配置信息等方法确定计算并行度,在此不做具体限定。
步骤103、根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例。
本步骤中,可以将所述N个物联网流计算任务拆分成与各类计算组件类型分别对应的子任务,且使拆分后的子任务形成的计算量不会超出各类计算组件类型对应的计算组件的计算量。
在具体实施中,根据拆分后的子任务涉及的计算类型,将各个子任务分别对应至相应计算组件类型的计算组件实例中,以确定该子任务由其对应的计算组件实例执行。
作为一种可选的实施方式,所述根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例,包括:
根据所述计算组件类型和所述计算并行度确定所述子任务的数目,并根据所述子任务的数目生成与每个子任务分别对应的子任务标识;
基于所述子任务标识和计算组件类型,遍历所述任务拓扑中的任务拓扑节点,生成三元组序列,其中,所述三元组序列中的每个三元组包括:子任务标识、任务拓扑节点标识以及与所述任务拓扑节点标识对应的计算组件类型;
基于所述计算组件类型,将所述三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例;
所述将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,包括:
根据所述计算组件实例中存储的三元组,分别将同一个子任务对应的子任务信息和拆分数据流发送至所述同一个子任务对应的计算组件实例;
其中,所述子任务信息还包括对应子任务的三元组中的任务拓扑节点标识对应的子拓扑节点标识列表和所述子拓扑节点标识列表中每个子拓扑节点标识对应的计算组件类型。
需要说明的是,在将三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例之后,便能够根据该三元组确定其对应的子任务,从而将子任务与计算组件实例对应起来。具体的,三元组中包括子任务标识、任务拓扑节点标识以及与所述任务拓扑节点标识对应的计算组件类型,则根据该子任务标识便能够确定其对应的子任务,并确定该子任务与存储有对应三元组的计算组件实例对应。
在具体实施中,可以使拆分后的子任务的数量K等于各个任务拓扑节点对应的计算组件的计算并行度的最小公倍数。另外,为便于区分各个子任务,本实施方式中为每一个子任务和任务拓扑节点分别设置一个标识,例如:ID码、数字串等。
需要说明的是,一个任务拓扑节点往往可以细分为多个子拓扑节点,从而使得该任务拓扑节点对应一个子拓扑节点标识列表,所述子拓扑节点标识列表中包括该任务拓扑节点对应各个子拓扑节点的标识。例如:利用手机应用程序进行网上打车的过程中,若需要将车辆信息与用户进行匹配这一任务,则需要执行获取用户的位置、出行时间、行程目的地等信息,并将该信息分别与车辆的位置、行车路况、行车路线等进行匹配,从而需要执行多个子任务。需要说明的是,上述举例仅用于说明任务拓扑节点与子任务拓扑节点之间的关系,并不用于解释任务拓扑节点与子任务拓扑节点的含义。
另外,上述基于所述计算组件类型,将所述三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例可以是:分别针对每一类计算组件类型,对三元组序列中的三元组进行分配,且分配后,每一三元组所对应的计算组件实例的计算组件类型与该三元组中的计算组件类型相同。
作为一种可选的实施方式,所述基于所述计算组件类型,将所述三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例,包括:
分别对所述三元组序列中的每个三元组求取F_hash(子任务标识+任务拓扑节点标识,W_v)的值j,其中,F_hash为一致性哈希函数,v表示一种计算组件类型,W_v表示计算组件类型v对应的计算组件实例的总数目;
将所述三元组序列中的三元组分别输入至其对应的第j个计算组件类型v的计算组件实例。
这样,当同一计算组件类型的计算组件实例具有多个的情况下,可以将对应该计算组件类型的三元组分配至各个计算组件实例中。
步骤104、将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息。
需要说明的是,子任务对应的拆分数据流中包括执行所述子任务所需的数据流以及该子任务的子任务标识和任务拓扑中的输入数据拓扑节点标识,从而在将拆分数据流分配至相应计算组件实例的过程中,可以将子任务标识相同的子任务和拆分数据流分配至同一个计算组件实例,并根据拆分数据流中包含的任务拓扑中的输入数据拓扑节点标识和三元组中的任务拓扑节点标识对应的计算配置信息对该拆分数据进行相应处理。
作为一种可选的实施方式,所述将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,包括:
获取所述输入数据流中消息的预设拆分标识,根据所述预设拆分标识将所述输入数据流拆分为与子任务对应的拆分数据流;
将所述拆分数据流与第1+Hash(拆分标识)mod K个子任务对应,并将子任务标识和拓扑节点标识嵌入至对应子任务的拆分数据流中,其中,Hash表示求hash函数,mod表示求余数,K为所述子任务的数目。
需要说明的是,所述预设拆分标识为所述物联网流计算任务中预设值的拆分标识,其具体可以是物联网流计算任务输入数据流中消息的物联网设备标识或者产品标识或者设备组标识,在此不作具体限定。
另外,在计算组件实例接收到子任务信息和拆分数据流后,根据所述拆分数据流中的子任务标识和任务拓扑节点标识,确定对应的子任务信息,并根据所述子任务信息中的计算配置信息对所述拆分数据流中的数据进行计算处理,并将处理后的数据流转发至下一任务拓扑节点标识对应的计算组件实例,并依此迭代,直至完成所述N个物联网流计算任务的全部子任务。在具体实施中,所述下一任务拓扑节点标识对应的计算组件实例可以采用一致性哈希函数确定。
可选的,所述将处理后的数据流转发至下一任务拓扑节点标识对应的计算组件实例,包括:
根据接收到的拆分数据流,在处理后的数据流中嵌入所述子任务标识和ID_sub,并发送给所述ID_sub对应的计算组件类型的第x个计算组件实例,其中,所述x为对所述子任务信息中的子拓扑节点标识列表中的每个子任务拓扑节点标识求取F_hash(子任务标识+ID_sub,W_sub)的取值,所述ID_sub为子拓扑节点标识,所述W_sub为所述ID_sub对应的计算组件类型。
本实施方式中,分别针对子任务信息的子拓扑节点标识列表中的每个子任务拓扑节点求取一致性哈希算法(子任务标识+子任务拓扑节点,W_sub)的取值x,从而确定各个子任务拓扑节点对应的计算组件实例,并在处理后的数据流中嵌入所述子任务标识和ID_sub,以便下一计算组件实例在接收到该处理后的数据流时,能够根据所述子任务标识和ID_sub从子任务信息中获取对应的计算配置信息,以进行相应的计算处理。
需要说明的是,一个子任务的子拓扑节点标识列表中可以具有多个子任务拓扑节点,则与各个子任务拓扑节点分别对应的计算组件实例将依次处理子拓扑节点标识列表中的子任务拓扑节点,并将处理后的数据流转发至子拓扑节点标识列表中的下一子任务拓扑节点对应的计算组件实例,直至该子拓扑节点标识列表中的子任务拓扑节点全部完成。
作为一种可选的实施方式,所述方法还包括:
在变更计算组件实例的情况下,获取发生变更的目标计算组件的目标计算组件类型;
将所述目标计算组件类型对应的子任务以子任务为单元进行迁移。
在具体实施中,计算组件实例可能发生变更,例如:过载、故障、负载不均衡等原因导致部分计算组件实例不可用,则需要将已分配至该不可用的计算组件实例上的任务迁移至其他可用的计算组件实例上运行。本实施方式中,以子任务为单元进行迁移,从而避免对整个物联网流计算任务中各任务拓扑节点的任务进行迁移而造成的迁移任务量大,且造成资源浪费的问题。
可选的,所述将所述目标计算组件类型对应的子任务以子任务为单元进行迁移,包括:
基于已提交子任务的三元组,确定与所述目标计算类型对应的目标子任务;
基于变更后的计算组件实例,将所述已提交子任务的三元组转移至变更后的第j个计算组件实例,其中,所述j为F_hash(子任务标识+任务拓扑节点标识,Y_v)的值,所述Y_v为变更后的所述目标计算组件类型对应的计算组件实例数目;
将子任务信息提交到对应三元组所在的目标计算组件类型对应的计算组件实例。
在具体实施中,所述已提交子任务的三元组可以是,在已经分配至变更前的计算组件实例中的子任务的三元组,由于计算组件发生变更,造成该子任务不能够在便跟前的计算组件实例中处理,从而需要迁移至变更后的其他可用计算组件实例中进行处理。其中,所述目标计算类型可以是发生变更的计算组件实例的计算组件类型,在将已提交子任务的三元组转移至变更后的第j个计算组件实例后,根据该三元组队子任务信息进行相应的迁移,以使变更后的计算组件实例根据该子任务信息处理处理相应的子任务。
需要说明的是,在同一子任务的子任务拓扑节点列表中包括多个子任务拓扑节点的情况下,若计算组件实例发生变更,则在所述子任务拓扑节点列表中的子任务拓扑节点处理完成数据后,将处理后生成的数据流转移至变更后的计算组件实例中。
另外,上述提交到对应三元组所在的目标计算组件类型对应的计算组件实例的子任务信息中包括转移至该计算组件实例中的三元组,以及该三元组中任务拓扑节点标识的计算配置信息和任务拓扑节点标识对应的子任务拓扑节点标识列表。
在本发明实施例中,获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同;确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息。能够使多个任务拓扑不相同的物联网流计算任务共用相同计算组件实例的计算进程和线程,从而减少了物联网流计算的进程和线程的数量,达到减少资源消耗的效果。
请参阅图2,是本发明实施例提供的第二种物联网流计算调度方法的流程图,如图2所示,该方法包括以下步骤:
步骤201、确定物联网流计算任务的任务拓扑中各拓扑节点的计算并行度。
在具体实施中,所述任务拓扑节点的计算并行度可以是指,该任务拓扑节点对应的计算组件所需的计算并行度。
步骤202、根据各计算组件的计算并行度,确定子任务数目,并利用一致性哈希函数确定每个子任务的拓扑节点的计算组件实例。
其中,所述子任务数目可以是各计算组件所需计算并行度的最小公倍数。
另外,上述利用一致性哈希函数确定每个子任务的拓扑节点的计算组件实例的过程与如图1中所述第一种物联网流计算调度方法种确定各子任务的任务拓扑节点对应的计算组件实例的方法相同,在此不再赘述。
步骤203、提交各个子任务信息到计算组件实例。
在具体实施中,上述子任务信息包括三元组和三元组中子任务标识对应的计算配置信息和子任务拓扑节点标识列表,另外,上述提交各个子任务信息到计算组件实例可以是:基于三元组中相同的子任务标识,将子任务信息提交至对应的计算组件实例中。
步骤204、根据预设拆分规则将输入数据流拆分到各个子任务。
在具体实施中,上述输入数据流可以是子任务所属的物联网流计算任务的数据流,所述预设拆分规则可以是如图1所示实施例中的拆分标识。另外,上述将输入数据流拆分到各个子任务可以理解为:将输入数据流拆分为与各个子任务对应的拆分数据流,并将拆分数据流输入至对应子任务的计算组件实例中。
步骤205、计算组件实例对收到的数据流找到匹配的子任务信息进行处理,并利用一致性哈希确定下一个拓扑节点的计算组件实例,并进行转发。
需要说明的是,在任务拓扑节点为多个时,上述步骤205可以执行多次,直至全部任务拓扑节点完成后,输出任务结果。
本实施例中,将物联网流计算任务拆分成多个子任务,并将各个子任务和该子任务的数据流分配至对应计算类型的计算组件实例中,以子任务为单位进行流计算任务的调度,从而可以在同一类计算组件实例中执行计算类型相同的子任务,以减少计算组件实例的配置,且可以达到减少空闲进行和线程的效果,达到减少资源浪费。
请参阅图3,是本发明实施例提供的第一种物联网流计算调度装置的结构图。如图3所示,第一种物联网流计算调度装置300包括:
第一获取模块301,用于获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同;
确定模块302,用于确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;
拆分模块303,用于根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;
执行模块304,用于将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息。
可选的,拆分模块303,包括:
第一生成单元,用于根据所述计算组件类型和所述计算并行度确定所述子任务的数目,并根据所述子任务的数目生成与每个子任务分别对应的子任务标识;
第二生成单元,用于基于所述子任务标识和计算组件类型,遍历所述任务拓扑中的任务拓扑节点,生成三元组序列,其中,所述三元组序列中的每个三元组包括:子任务标识、任务拓扑节点标识以及与所述任务拓扑节点标识对应的计算组件类型;
输入单元,用于基于所述计算组件类型,将所述三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例;
执行模块304包括:
发送单元,用于根据所述计算组件实例中存储的三元组,分别将同一个子任务对应的子任务信息和拆分数据流发送至所述同一个子任务对应的计算组件实例;
其中,所述子任务信息还包括对应子任务的三元组中的任务拓扑节点标识对应的子拓扑节点标识列表和所述子拓扑节点标识列表中每个子拓扑节点标识对应的计算组件类型。
可选的,输入单元,包括:
计算子单元,用于分别对所述三元组序列中的每个三元组求取F_hash(子任务标识+任务拓扑节点标识,W_v)的值j,其中,F_hash为一致性哈希函数,v表示一种计算组件类型,W_v表示计算组件类型v对应的计算组件实例的总数目;
输入子单元,用于将所述三元组序列中的三元组分别输入至其对应的第j个计算组件类型v的计算组件实例。
可选的,执行模块304还包括:
获取单元,用于获取所述输入数据流中消息的预设拆分标识,根据所述预设拆分标识将所述输入数据流拆分为与子任务对应的拆分数据流;
嵌入单元,用于将所述拆分数据流与第1+Hash(拆分标识)mod K个子任务对应,并将子任务标识和拓扑节点标识嵌入至对应子任务的拆分数据流中,其中,Hash表示求hash函数,mod表示求余数,K为所述子任务的数目。
可选的,执行模块304还包括:
提取单元,用于利用计算组件实例从接收到的拆分数据流中提取子任务标识和拓扑节点标识,并确定所述子任务标识对应的子任务信息;
转发单元,用于根据所述子任务信息中的计算配置对所述子任务的拆分数据流进行计算处理,并将处理后的数据流转发至下一任务拓扑节点标识对应的计算组件实例。
可选的,所述转发单元,具体用于:
根据接收到的拆分数据流,在处理后的数据流中嵌入所述子任务标识和ID_sub,并发送给所述ID_sub对应的计算组件类型的第x个计算组件实例,其中,所述x为对所述子任务信息中的子拓扑节点标识列表中的每个子任务拓扑节点标识求取F_hash(子任务标识+ID_sub,W_sub)的取值,所述ID_sub为子拓扑节点标识,所述W_sub为所述ID_sub对应的计算组件类型。
可选的,物联网流计算调度装置300还包括:
第二获取模块,用于在变更计算组件实例的情况下,获取发生变更的目标计算组件的目标计算组件类型;
迁移模块,用于将所述目标计算组件类型对应的子任务以子任务为单元进行迁移。
可选的,所述迁移模块,包括:
确定单元,用于基于已提交子任务的三元组,确定与所述目标计算类型对应的目标子任务;
迁移单元,用于基于变更后的计算组件实例,将所述已提交子任务的三元组迁移至变更后的第j个计算组件实例,其中,所述j为F_hash(子任务标识+任务拓扑节点标识,Y_v)的值,所述Y_v为变更后的所述目标计算组件类型对应的计算组件实例数目;
提交单元,用于将子任务信息提交到对应三元组所在的目标计算组件类型对应的计算组件实例。
可选的,所述任务拓扑节点对应的计算组件的计算并行度通过以下公式确定:
计算并行度P=min([M*T1/T0)](向上取整),U)
其中,所述P为计算并行度,所述M为任务单节点计算时延容忍内最大消息的并发数,所述T1为单计算组件实例单个消息的处理时间,所述T0为划片时间单元,所述U为该计算组件类型在任务配置下的最大并行度。
需要说明的是,本实施例中上述物联网流计算调度装置300可以实现本发明实施例中图1对应的方法实施例中的任意步骤,以及达到相同的有益效果,此处不再赘述。
参见图4,本发明实施例还提供一种物联网流计算调度装置,该物联网流计算调度装置包括存储器401、第一处理器402及存储在第一存储器401上并可在第一处理器402上运行的第一计算机程序4011,第一计算机程序4011被第一处理器402执行时可实现图1对应的方法实施例中的任意步骤及达到相同的有益效果,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法的全部或者部分步骤是可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计算机可读取介质中。本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有第二计算机程序,所述第二计算机程序被第二处理器执行时可实现上述任一方法实施例的物联网流计算任务调度方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述物联网流计算调度方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种物联网流计算调度方法,其特征在于,包括:
获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同;
确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;
根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;
将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息;
所述根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例,包括:
根据所述计算组件类型和所述计算并行度确定所述子任务的数目,并根据所述子任务的数目生成与每个子任务分别对应的子任务标识;
基于所述子任务标识和计算组件类型,遍历所述任务拓扑中的任务拓扑节点,生成三元组序列,其中,所述三元组序列中的每个三元组包括:子任务标识、任务拓扑节点标识以及与所述任务拓扑节点标识对应的计算组件类型;
基于所述计算组件类型,将所述三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例;
所述将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,包括:
根据所述计算组件实例中存储的三元组,分别将同一个子任务对应的子任务信息和拆分数据流发送至所述同一个子任务对应的计算组件实例;
其中,所述子任务信息还包括对应子任务的三元组中的任务拓扑节点标识对应的子拓扑节点标识列表和所述子拓扑节点标识列表中每个子拓扑节点标识对应的计算组件类型。
2.根据权利要求1所述的方法,其特征在于,所述基于所述计算组件类型,将所述三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例,包括:
分别对所述三元组序列中的每个三元组求取F_hash(子任务标识+任务拓扑节点标识,W_v)的值j,其中,F_hash为一致性哈希函数,v表示一种计算组件类型,W_v表示计算组件类型v对应的计算组件实例的总数目;
将所述三元组序列中的三元组分别输入至其对应的第j个计算组件类型v的计算组件实例。
3.根据权利要求1所述的方法,其特征在于,所述将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,包括:
获取所述输入数据流中消息的预设拆分标识,根据所述预设拆分标识将所述输入数据流拆分为与子任务对应的拆分数据流;
将所述拆分数据流与第1+Hash(拆分标识)mod K个子任务对应,并将子任务标识和拓扑节点标识嵌入至对应子任务的拆分数据流中,其中,Hash表示求hash函数,mod表示求余数,K为所述子任务的数目。
4.根据权利要求3所述的方法,其特征在于,所述分别执行所述同一个子任务,包括:
计算组件实例从接收到的拆分数据流中提取子任务标识和拓扑节点标识,并确定所述子任务标识对应的子任务信息;
根据所述子任务信息中的计算配置对所述子任务的拆分数据流进行计算处理,并将处理后的数据流转发至下一任务拓扑节点标识对应的计算组件实例。
5.根据权利要求4所述的方法,其特征在于,所述将处理后的数据流转发至下一任务拓扑节点标识对应的计算组件实例,包括:
根据接收到的拆分数据流,在处理后的数据流中嵌入所述子任务标识和ID_sub,并发送给所述ID_sub对应的计算组件类型的第x个计算组件实例,其中,所述x为对所述子任务信息中的子拓扑节点标识列表中的每个子任务拓扑节点标识求取F_hash(子任务标识+ID_sub,W_sub)的取值,所述ID_sub为子拓扑节点标识,所述W_sub为所述ID_sub对应的计算组件类型。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在变更计算组件实例的情况下,获取发生变更的目标计算组件的目标计算组件类型;
将所述目标计算组件类型对应的子任务以子任务为单元进行迁移。
7.根据权利要求6所述的方法,其特征在于,所述将所述目标计算组件类型对应的子任务以子任务为单元进行迁移,包括:
基于已提交子任务的三元组,确定与所述目标计算类型对应的目标子任务;
基于变更后的计算组件实例,将所述已提交子任务的三元组转移至变更后的第j个计算组件实例,其中,所述j为F_hash(子任务标识+任务拓扑节点标识,Y_v)的值,所述Y_v为变更后的所述目标计算组件类型对应的计算组件实例数目;
将子任务信息提交到对应三元组所在的目标计算组件类型对应的计算组件实例。
8.根据权利要求1所述的方法,其特征在于,所述任务拓扑节点对应的计算组件的计算并行度通过以下公式确定:
计算并行度P=min([M*T1/T0)](向上取整),U)
其中,所述P为计算并行度,所述M为任务单节点计算时延容忍内最大消息的并发数,所述T1为单计算组件实例单个消息的处理时间,所述T0为划片时间单元,所述U为该计算组件类型在任务配置下的最大并行度。
9.一种物联网流计算调度装置,其特征在于,包括:
第一获取模块,用于获取N个物联网流计算任务,以及接收所述N个物联网流计算任务的输入数据流,其中,所述N为大于1的整数,所述N个物联网流计算任务中至少两个物联网流计算任务的任务拓扑不相同;
确定模块,用于确定所述N个物联网流计算任务的任务拓扑中每个任务拓扑节点分别对应的计算组件的计算组件类型和计算并行度;
拆分模块,用于根据所述计算组件类型和所述计算并行度,将所述N个物联网流计算任务拆分成子任务,并确定每个子任务对应的计算组件实例;
执行模块,用于将所述输入数据流拆分为与每个子任务分别对应的拆分数据流,并将同一个子任务对应的子任务信息和拆分数据流发送至对应的计算组件实例,以分别执行所述同一个子任务,其中,所述子任务信息包括其对应的子任务拓扑节点的计算配置信息;
所述拆分模块,包括:
第一生成单元,用于根据所述计算组件类型和所述计算并行度确定所述子任务的数目,并根据所述子任务的数目生成与每个子任务分别对应的子任务标识;
第二生成单元,用于基于所述子任务标识和计算组件类型,遍历所述任务拓扑中的任务拓扑节点,生成三元组序列,其中,所述三元组序列中的每个三元组包括:子任务标识、任务拓扑节点标识以及与所述任务拓扑节点标识对应的计算组件类型;
输入单元,用于基于所述计算组件类型,将所述三元组序列中的三元组分别输入至对应计算组件类型的计算组件实例;
所述执行模块,包括:
发送单元,用于根据所述计算组件实例中存储的三元组,分别将同一个子任务对应的子任务信息和拆分数据流发送至所述同一个子任务对应的计算组件实例;
其中,所述子任务信息还包括对应子任务的三元组中的任务拓扑节点标识对应的子拓扑节点标识列表和所述子拓扑节点标识列表中每个子拓扑节点标识对应的计算组件类型。
10.一种电子设备,其特征在于,包括:存储器、第一处理器及存储在所述存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一计算机程序被所述第一处理器执行时实现如权利要求1至8中任一项所述的物联网流计算调度方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有第二计算机程序,所述第二计算机程序被第二处理器执行时实现如权利要求1至8中任一项所述的物联网流计算调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911265232.9A CN111049900B (zh) | 2019-12-11 | 2019-12-11 | 一种物联网流计算调度方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911265232.9A CN111049900B (zh) | 2019-12-11 | 2019-12-11 | 一种物联网流计算调度方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111049900A CN111049900A (zh) | 2020-04-21 |
CN111049900B true CN111049900B (zh) | 2022-07-01 |
Family
ID=70235584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911265232.9A Active CN111049900B (zh) | 2019-12-11 | 2019-12-11 | 一种物联网流计算调度方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111049900B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035516B (zh) * | 2020-09-30 | 2023-08-18 | 北京百度网讯科技有限公司 | 用于算子服务的处理方法、装置、智能工作站和电子设备 |
CN114598719A (zh) * | 2021-09-06 | 2022-06-07 | 广东东华发思特软件有限公司 | 智慧城市物联事件管理方法、装置及可读介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102769615A (zh) * | 2012-07-02 | 2012-11-07 | 北京大学 | 一种基于MapReduce机制的任务调度方法和系统 |
WO2016163903A1 (en) * | 2015-04-08 | 2016-10-13 | Siemens Aktiengesellschaft | Method and apparatus for automated generation of a data processing topology |
WO2018121738A1 (zh) * | 2016-12-30 | 2018-07-05 | 北京奇虎科技有限公司 | 流数据任务的处理方法和装置 |
CN109144720A (zh) * | 2018-07-13 | 2019-01-04 | 哈尔滨工程大学 | 一种基于共享资源敏感的多核处理器任务调度选择方法 |
CN110213073A (zh) * | 2018-04-20 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 数据流向变更方法、电子设备、计算节点及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170068751A1 (en) * | 2014-05-07 | 2017-03-09 | Sankhya Technologies Private Limited | Manifold system and synthesis of a manifold system from input models |
CN106663075B (zh) * | 2014-09-02 | 2020-12-11 | 起元科技有限公司 | 执行基于图的程序规范 |
-
2019
- 2019-12-11 CN CN201911265232.9A patent/CN111049900B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102769615A (zh) * | 2012-07-02 | 2012-11-07 | 北京大学 | 一种基于MapReduce机制的任务调度方法和系统 |
WO2016163903A1 (en) * | 2015-04-08 | 2016-10-13 | Siemens Aktiengesellschaft | Method and apparatus for automated generation of a data processing topology |
WO2018121738A1 (zh) * | 2016-12-30 | 2018-07-05 | 北京奇虎科技有限公司 | 流数据任务的处理方法和装置 |
CN110213073A (zh) * | 2018-04-20 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 数据流向变更方法、电子设备、计算节点及存储介质 |
CN109144720A (zh) * | 2018-07-13 | 2019-01-04 | 哈尔滨工程大学 | 一种基于共享资源敏感的多核处理器任务调度选择方法 |
Non-Patent Citations (1)
Title |
---|
物联网环境下具有顺序约束关系的静态任务表调度算法;叶佳,周鸣争;《计算机应用》;20140910;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111049900A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10178045B2 (en) | Dynamic discovery and management of microservices for multi-cluster computing platforms | |
CN107025205B (zh) | 一种分布式系统中的训练模型的方法及设备 | |
Li et al. | Coded distributed computing: Straggling servers and multistage dataflows | |
US10360074B2 (en) | Allocating a global resource in a distributed grid environment | |
CN108270805B (zh) | 用于数据处理的资源分配方法及装置 | |
CN110955734B (zh) | 逻辑节点的分布式签名决策系统及其方法 | |
CN111049900B (zh) | 一种物联网流计算调度方法、装置和电子设备 | |
CN105808346B (zh) | 一种任务调度方法与装置 | |
Shafiee et al. | Scheduling coflows with dependency graph | |
WO2020147601A1 (zh) | 用于对图进行学习的系统 | |
CN105227616B (zh) | 一种遥感卫星地面处理系统任务动态创建与分配的方法 | |
CN115408122B (zh) | 一种去中心化的分布式并行计算框架及计算方法 | |
CN106878356B (zh) | 一种调度方法及计算节点 | |
Onoue et al. | Scheduling of parallel migration for multiple virtual machines | |
Meddeber et al. | Tasks assignment for Grid computing | |
CN104915250A (zh) | 一种实现作业内的MapReduce数据本地化的方法 | |
Cao et al. | Online cost-rejection rate scheduling for resource requests in hybrid clouds | |
CN116012485A (zh) | 一种时序路径处理方法及装置、存储介质 | |
CN109600251B (zh) | 一种虚拟网络部署方法、系统及装置 | |
Zarrouk et al. | Towards an embedded distributed implementations of PSO solutions for the flexible job shop problem | |
Trejo-Sánchez et al. | A multi-agent architecture for scheduling of high performance services in a GPU cluster | |
US20220342711A1 (en) | Allocation of heterogeneous computational resource | |
CN114866612B (zh) | 一种电力微服务卸载方法及装置 | |
CN116737348B (zh) | 一种多方任务的处理方法、装置及计算机设备、存储介质 | |
Banerjea et al. | Towards peer-to-peer solution for utilization of volunteer resources to provide computation-as-a-service |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |