CN116339958B - 一种任务执行方法、装置以及设备 - Google Patents
一种任务执行方法、装置以及设备 Download PDFInfo
- Publication number
- CN116339958B CN116339958B CN202310620838.XA CN202310620838A CN116339958B CN 116339958 B CN116339958 B CN 116339958B CN 202310620838 A CN202310620838 A CN 202310620838A CN 116339958 B CN116339958 B CN 116339958B
- Authority
- CN
- China
- Prior art keywords
- task
- sub
- state
- execution
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000009826 distribution Methods 0.000 claims abstract description 21
- 238000010586 diagram Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 14
- 238000013144 data compression Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书实施例公开了一种任务执行方法、装置以及设备,属于分布式技术领域,应用于集群中的节点。方案包括:确定维护任务状态和任务子步骤状态的数据库,任务状态表示任务的执行相关状态,任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;从数据库中获取任务状态;当任务状态为执行中时,判断任务的当前执行节点是否可用,当前执行节点属于集群;若当前执行节点不可用时,将自己更新为任务的当前执行节点,并保持任务状态为执行中;获取任务的下一个子步骤;将下一个子步骤的状态更新为执行中,并执行下一个子步骤。能够解决长任务的执行会随着平台的重启操作而丢失任务状态的问题,能够更为可靠和高效地执行任务。
Description
技术领域
本说明书涉及分布式技术领域,尤其涉及一种任务执行方法、装置以及设备。
背景技术
随着互联网技术和计算能力的迅速发展,应用为用户服务的智能型和高效性也极大提升,而背后的服务平台也面临着较大的任务执行压力,尤其是一些计算量大很耗时的任务,将这类任务称为长任务。
在实际应用中,长任务的执行会随着平台的重启操作而丢失任务状态,由此导致长任务难以顺利按时执行完成,会额外浪费大量计算资源重新执行长任务。
基于此,需要更为可靠和高效的任务执行方案。
发明内容
本说明书一个或多个实施例提供一种任务执行方法、装置、设备以及存储介质,用以解决如下技术问题:需要更为可靠和高效的任务执行方案。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
本说明书一个或多个实施例提供的一种任务执行方法,应用于集群中的节点,所述方法包括:
确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
从所述数据库中获取所述任务状态;
当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
本说明书一个或多个实施例提供的一种任务执行装置,应用于集群中的节点,所述装置包括:
状态数据库确定模块,确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
任务状态获取模块,从所述数据库中获取所述任务状态;
节点可用性判断模块,当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
任务接续执行模块,若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
本说明书一个或多个实施例提供的一种任务执行设备,应用于集群中的节点,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
从所述数据库中获取所述任务状态;
当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
从所述数据库中获取所述任务状态;
当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
本说明书一个或多个实施例采用的上述至少一个技术方案能够达到以下有益效果:将任务拆分为了多个子步骤,并将任务的任务状态和任务子步骤的子步骤状态存入数据库,并响应于各任务执行节点的任务执行情况,进行更新维护,从而,即使平台发生重启导致当前的一些任务执行节点任务执行中断,其他尚可用的节点仍然能够根据数据库中的任务状态和子步骤状态,及时追踪到任务中断的具体的子步骤,并从断点继续地将该子步骤继续执行完成,并且继续执行后面的子步骤,以尝试将整个任务执行完毕,从而有助于更可靠更高效地执行任务,尤其是执行长任务更能体现出优势。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种任务执行方法的流程示意图;
图2为本说明书一个或多个实施例提供的一种实际应用场景下,图1的方法的一种具体实施方案的流程示意图;
图3为本说明书一个或多个实施例提供的在图平台的场景下,基于拓扑匹配的一种图数据长任务的执行方案的示意图;
图4为本说明书一个或多个实施例提供的一种任务执行装置的结构示意图;
图5为本说明书一个或多个实施例提供的一种任务执行设备的结构示意图。
具体实施方式
本说明书实施例提供一种任务执行方法、装置、设备以及存储介质。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
背景技术中提到了实际应用中,平台执行长任务所遇到的问题。更直观地,以基于图数据(由图节点和图边及相应属性等数据构成)的图平台场景为例具体说明,在该场景下,任务执行需求频繁且对性能要求较高。
对于具有大规模用户群体的应用而言,其所使用到的图数据库的数据量一般有几十甚至上百T的规模,针对这样的图数据库的诸如点边统计、大点统计,或大规模图数据压缩等任务就会很耗时,任务完成时间往往是小时级别的,从而,对图平台而言成为了比较有代表性的长任务。其中:点边统计一般指,全图遍历,统计图里面,每个点、边类型拥有的数据量;大点统计一般指,全图遍历,统计图里面,每个点的出度,入度数量做排序,可以定义大于设定阈值(比如,1亿)出入度为大点;大规模图数据压缩,一般指全图遍历,对图数据做压缩处理,优化空间。
在申请人之前的方案中,图平台在发起一个长任务比如点边统计任务后,然后要一直轮训,直到该点边统计任务执行完成。这个过程都是放在线程中操作的,如果在轮训的过程中,图平台做了重启操作,则线程持有的任务状态会丢失,该任务无法继续执行,需要整体重新执行。
本申请的方案优化了平台对任务的管理,即使平台重启,也能够继续之前没有执行完的任务,从而有助于解决长任务执行问题。下面继续详细说明本申请的方案。
图1为本说明书一个或多个实施例提供的一种任务执行方法的流程示意图。该流程可以在电商平台、支付平台等具有任务尤其是长任务执行需求的平台上执行,具体可以在平台所使用的集群中的至少部分节点上执行。流程中的一些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。
图1中的流程包括以下步骤:
S102:确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示对应的任务的执行相关状态,所述任务子步骤状态(也简称为子步骤状态或子步骤的状态)表示由该任务拆分出的多个子步骤分别的执行相关状态。
在本说明书一个或多个实施例中,将任务拆分为多个具有设定执行顺序的子步骤,若有需要,也支持一部分子步骤并发执行,以便在追踪任务整体状态的同时,也能够细粒度地追踪任务具体的执行中断位置(可以称为断点),进而在执行中断位置具体的子步骤上,接续执行该子步骤尚未执行完成的部分。对于长任务,根据实际情况可以拆成更多个子步骤。
对于任务,其执行相关状态可以包括等待执行、执行中、成功、失败等几种状态。等待执行表示该任务整体尚未开始执行。执行中表示已有节点在执行该任务,且该任务尚未执行完成,该节点可能正在正常地执行着该任务,也可能由于重启暂时不可用。成功、失败则表示该任务的执行结果,对于处于失败状态的任务,可以设定策略允许重新执行该任务。
类似地,对于子步骤,其执行相关状态可以包括等待执行、执行中、成功、失败等几种状态。在同一个任务的各子步骤串行顺序执行的情况下,该执行相关状态可以不包括等待执行,尝试追踪执行中的子步骤即可。
在本说明书一个或多个实施例中,为了更可靠地追踪状态,不是依靠执行线程一直持有任务状态,而是将任务状态、子步骤状态均持久化至数据库中,并且根据执行情况的进行,相应地及时更新数据库中的任务状态、子步骤状态。
为了便于节点获取尤其是半途中接续地获取任务或子步骤以执行,任务和子步骤本身内容(不单单是相应的标识)也可以持久化至数据库中,从而可以在基于数据库追踪任务状态或子步骤状态时,便利地获取需要接续执行对应于状态的任务或子步骤。在同一时刻,数据库中可以同时维护着多个不同的任务,在这种情况下,数据库中还维护着各任务、各子步骤、各状态之间的正确对应关系。
在本说明书一个或多个实施例中,由任务拆分为多个子步骤的拆分方式是多样的,可以根据对任务执行节点的选择差异化进行,以便于更低成本更合理地接续执行。比如,若以管理节点(比如,Master机)作为任务执行节点,则从管理节点的角度而言,可以更粗放地拆分任务,拆分出的子步骤相对不关心很多具体的计算动作,而若以工作节点(比如,worker机)作为任务执行节点,可以细化至具体的计算动作或计算区域拆解。
直观地,以图平台场景下的点边统计任务为例。假定由多个管理节点执行该点边统计任务,则比如拆分为:发起点边统计任务、查询任务进度、获取点边统计任务结果等多个子步骤(这里是示例性的,根据需要可以拆成大量子步骤);而其中涉及的具体的统计动作可以是管理节点下发给自己所管辖的多个工作节点执行的,但是,从任务层面上无需关系工作节点的动作。假定由多个工作节点执行该点边统计任务,则比如拆分为:接收点边统计任务、对图数据中的区域1进行点边统计、对图数据中的区域2进行点边统计、... 、对图数据中的区域N进行点边统计、上报局部区域统计结果、转发局部区域统计结果等子步骤。
S104:从所述数据库中获取所述任务状态。
S106:当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群。
在本说明书一个或多个实施例中,判断获取的任务状态当前具体是哪种状态,比如,有可能是等待执行、也有可能是执行中,等等。若是执行中,则继续执行步骤S106~S112,否则,有其他的后续可选步骤,后面会补充说明。
即使任务状态为执行中,也只能说明之前已经有节点接下了对应的任务或子步骤,但该节点当前是否确实在正常地执行着对应的子步骤,是不一定的。比如,若该节点重启了,则会暂时不具有可用性,需要花费一段时间(比如,几分钟、几十分钟甚至更长)后,重启完成后可能才恢复可用性。
在本说明书一个或多个实施例中,为了便于追踪节点可用性,可以将每个任务和每个子步骤的当前执行节点(如果当前有的话)的信息(至少包括节点标识,还可以包括节点当前状态、节点能力、节点位置等可选信息),以及将该信息与任务和子步骤之间的对应关系,也持久化至数据库中并及时更新。除此之外,还可以将子步骤已经执行完的部分中间结果持久化至数据库中,以便接续执行时使用。
步骤S106中的当前执行节点,与该步骤的执行主体节点不是同一个节点,该执行主体节点可以自由地关注多个任务或多个子步骤的不同的当前执行节点的情况,以便在需要时接续。当前,该执行主体节点也可以灵活地执行其他任务,如此,基于数据库中的任务状态和子步骤状态,无需像主备机制那样限制节点相互之间的地位和身份,更加灵活高效,也更充分地利用了节点资源。
对于节点可用性的判断策略根据实际情况设置。若节点本身留存了较为实时的节点状态,比如,重启中、宕机中、主备切换中等,那么可以直接参照留存的该节点状态,判断节点可用性。否则,可以通过尝试与当前执行节点通信,或查询当前执行节点的历史通信记录(比如,心跳信号等),来判断节点可用性。
S108:若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中。继续执行步骤S110和S112。
在本说明书一个或多个实施例中,在数据库中更新信息,将该任务的当前执行节点替换为自己,由于自己当前是可用的,且已经要接续上任务的执行,则可以保持任务状态为执行中。
例如,假定任务和子步骤也保存于数据库中,与对应的执行相关状态关联,以便执行。则本节点在准备接续时,可以在数据库中,将自己的标识与任务或子步骤相关联,以表示自己为任务或子步骤的当前执行节点,并可以直接从数据库中获取准备接续执行的子步骤。
另外,若策略上允许失败后重新执行,则还可以关注任务状态为失败的任务,或子步骤状态为失败的子步骤,在这种情况下,若该任务为失败,且判断任务的当前执行节点不可用,则也可以将自己更新为该任务的当前执行节点,并将任务状态从失败更新为执行中,进而具体地追踪失败的子步骤,将子步骤状态也从失败更新为执行中,并尝试重新执行该子步骤。进一步地,若任务的失败状态与其某些子步骤的失败状态是解耦合(部分子步骤的失败状态不会导致整个任务被更新为失败状态)的,那么,可以在数据库中直接追踪子步骤状态,而未必要先看任务状态。
S110:获取所述任务的下一个子步骤。
在本说明书一个或多个实施例中,该下一个子步骤指该任务的尚未执行成功的顺序最靠前的子步骤。该下一个子步骤可能是执行中(这表示该子步骤可能已经执行了一部分,但由于当前执行节点不可用,暂时未能正常地继续执行下去),也可能是等待执行(这表示该子步骤整体尚未开始执行)。
从数据库中获取任务对应的子步骤状态,尤其可以执行子步骤状态为执行中的子步骤,以及时进行子步骤接续执行。
S112:将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
若该下一个子步骤的状态已经为执行中,则保持着该状态继续执行该下一个子步骤,直至该下一个子步骤执行成功后,再将该状态更新为成功。
在本说明书一个或多个实施例中,接续地执行子步骤状态为执行中的子步骤,可以从该子步骤中尚未执行的部分开始继续执行,若该子步骤顺利执行完毕,则可以继续执行再下一个子步骤,以尝试完成任务。
而若本节点执行过程中,也出现了不可用的问题,那么还可以由其他节点来尝试接续中断的子步骤的执行。
通过图1的方法,将任务拆分为了多个子步骤,并将任务的任务状态和任务子步骤的子步骤状态存入数据库,并响应于各任务执行节点的任务执行情况,进行更新维护,从而,即使平台发生重启导致当前的一些任务执行节点任务执行中断,其他尚可用的节点仍然能够根据数据库中的任务状态和子步骤状态,及时追踪到任务中断的具体的子步骤,并从断点继续地将该子步骤继续执行完成,并且继续执行后面的子步骤,以尝试将整个任务执行完毕,从而有助于更可靠更高效地执行任务,尤其是执行长任务更能体现出优势。
基于图1的方法,本说明书还提供了该方法的一些具体实施方案和扩展方案,下面继续进行说明。
在本说明书一个或多个实施例中,对于步骤S104,在从数据库中获取任务状态之后,若确定了任务状态当前不为执行中,而为等待执行时,那么就表示对应的任务整体都尚未开始执行,也就暂时不存在该任务的当前任务执行节点,则可以将自己更新为该任务的当前执行节点,并更新任务状态为执行中;如此更新之后,获取该任务的下一个子步骤(比如,第一个子步骤),将下一个子步骤的子步骤状态更新为执行中,并开始执行下一个子步骤,以尝试完成任务。
这种情况属于初始时对任务启动执行,而不属于任务或子步骤的接续执行,本节点不可用时,同样也有其他节点能够尝试接续执行,在这种过程中,不同节点之间并不需要建立诸如主备之类的绑定关系,是更加松散灵活的,而且也有利于更及时高效的接续执行,能够将当前任务执行节点不可用带来的影响尽量降低。
在本说明书一个或多个实施例中,虽然本节点可以主动尝试联系当前执行节点,以进行可用性判断,但是,由于同一时期可能还有其他节点也会做同样的尝试,那么节点间的通信开销是不够划算的,也会增加节点压力。为了解决这个问题,可以由当前执行节点在可用的持续期间定时上报心跳信号,比如,上报给统一的管理节点或比较空闲的节点,接收到心跳信号的节点则将心跳信号的上报时间记录于数据库中,当然,当前执行节点也可以直接将心跳信号上报给数据库服务器入库。
基于这样的思路,本节点将自己更新为任务的当前执行节点,并更新任务状态为执行中之后,在判断任务状态对应的任务的当前执行节点是否可用时,通过数据库确定任务状态对应的任务的当前执行节点,及其最近一次上报心跳信号的上报时间,判断最近一次上报心跳信号的上报时间距离当前时间是否已经超时,若是,则确定当前执行节点不可用,否则,可以认为该任务在正常执行中,可以忽略,或者,还可以采用其他措施继续分析节点可用性。
根据上面的说明,本说明书一个或多个实施例提供的一种实际应用场景下,图1的方法的一种具体实施方案,其流程参见图2。
图2中的方案包括以下步骤:
将图平台针对图数据库的任务比如点边统计任务,拆分成多个子步骤。比如,拆分称上述的发起点边统计任务、查询任务进度、获取点边统计结果等子步骤。
将任务存入数据库中的任务表,子步骤存入数据库中的子步骤表并记录每个子步骤的正确执行顺序,在表中确立任务与子步骤之前的正确对应关系。初始时,将任务和子步骤的状态设置成等待执行(比如,表示为waiting_run)。
本节点(比如,图平台的某集群服务器)通过定时器轮训,扫描自己的线程池空闲的线程数量,若有空闲的线程,则通过空闲的线程扫描数据库中的任务状态,以确定状态为等待执行和/或执行中(比如,表示为running)的任务,从而有利于及时发现异常进而接续,而且也能够更充分地利用自身的线程资源。
若获取到任务表中任务状态为等待执行的任务,抢执行锁,在数据库中更新该任务的当前任务执行节点为自己(比如,记录自己的host信息),开始获取任务的下一个子步骤,更新任务状态为执行中,更新当前执行的该子步骤的状态为执行中,开始执行该子步骤,执行完后,根据执行成功与否的结果,更新子步骤状态为成功或失败。以此类推,尝试获取下一个子步骤继续处理,若该任务的所有子步骤均已按正确顺序执行成功,则更新任务状态为成功。
若获取到任务表中任务状态为执行中的任务,检查为该任务记录当前任务执行节点,并查询其最近一次心跳信号的上报时间是否超时。若没有超时就跳过,忽略该任务;若超时,就抢执行锁,并将当前任务执行节点更新为自己,开始追踪任务进度。
从数据库中,按照任务的子步骤之间的顺序,依次查找对应的子步骤状态;若当前查找到的子步骤状态为失败,则更新任务的任务状态为失败;若当前查找到的子步骤状态为成功,则继续追踪下一个子步骤;若当前查找到的子步骤状态为执行中,则说明上次执行到该子步骤断点了,追踪结束,已经找到接续点,继续执行该子步骤状态对应的子步骤,尽量从接续点继续执行。若子步骤执行失败,则更新子步骤状态为失败,可以尝试重新执行该子步骤;若子步骤执行成功,则更新子步骤状态为成功,在子步骤为任务的最后一个子步骤的情况下,更新任务的任务状态为成功,在子步骤不为任务的最后一个子步骤的情况下,继续获取任务的下一个子步骤进行处理。
前面提到了申请人在图平台场景下使用上述方案,可以利用该场景的特点,在可能存在多个节点追踪状态以尝试接续任务或子步骤情况下,提升全局的效率。思路在于:在实际应用中,集群往往是分布式的,其中的节点可能分散于不同的机房甚至不同的城市地区,各种通讯之类的开销具有差异化,当某个任务的当前执行节点不可用时,基于上述方案可能会有多个其他节点进行追踪以尝试接续执行,在这里考虑多个其他节点如何更合理地配合以提高全局效率,减少不必要的竞争;图平台场景下的长任务,往往是针对大规模的图数据的,图数据由节点与边以及相关属性构成,整个长任务的执行需要在图数据中进行遍历,即从节点通过连接的边去到另一个节点,在各节点上和/或各边上进行相应的统计,在这种情况下,在图数据各个区域上的工作,在整个图数据中也可以视为是分布式的,考虑将图数据中的工作分布式情况与集群中节点分布式情况进行匹配,让节点尽量按照匹配的区域进行任务接续,一方面有助于降低开销减少竞争,另一方面也有助于节点接续完当前子步骤之后,就近探索周围区域涉及的其他子步骤。
基于上一段的思路,本说明书一个或多个实施例提供的在图平台的场景下,基于拓扑匹配的一种图数据长任务的执行方案,参见图3。在该场景下,任务为图平台针对图数据库的任务,以长任务为例。
图3中的方案包括以下步骤:
S302:获取通过将所述集群的节点拓扑图与所述长任务在所述图数据库中涉及的图数据的拓扑图进行匹配得到的相似区域分布图。
节点拓扑图可以反映集群中的节点在通信连接方面的分布情况,或者,在机房和地区位置方面的分布情况。图数据的拓扑图则可以反映图节点及相互之间的连接边的分布情况。在匹配时,除了从图形相似程度方面匹配以外,还可以考虑连接权重。相似区域分布图可以是分别从节点拓扑图、图数据的拓扑图中提取出的一部分具有相似性的拓扑图,可以分开表示,也可以合并表示。
S304:判断自己是否处于所述相似区域分布图中,且得到所述判断的结果为是。
若处于相似区域分布图中,则表示本节点比较适合在该相似区域分布图范围内进行任务接续,否则,可以忽略,优先有相似区域分布图内的节点接续该区域内的任务,以减少竞争和开销。
S306:将自己更新为所述长任务的当前执行节点。
S308:执行所述子步骤状态为执行中,且在所述相似区域分布图中与自己匹配的所述区域性子步骤。
在本说明书一个或多个实施例中,长任务拆分出的多个子步骤中,包含针对涉及的图数据的指定局部区域进行处理的区域性子步骤,比如,通过执行区域性子步骤用于对该指定局部区域进行点边统计等。则本节点尽量在自己所属于的相似区域内进行任务接续。
在本说明书一个或多个实施例中,对于本节点而言,若自己所属相似区域内暂时没有任务可接续了,则继续从该相似区域的边缘,向相邻区域探索追踪其他可能存在的可接续任务,以避免节点资源限制,而且探索开销相对更小。
基于同样的思路,本说明书一个或多个实施例还提供了上述方法对应的装置和设备,分别参见图4、图5。装置和设备能够相应执行上述方法及相关的可选方案。
图4为本说明书一个或多个实施例提供的一种任务执行装置的结构示意图,应用于集群中的节点,所述装置包括:
状态数据库确定模块402,确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
任务状态获取模块404,从所述数据库中获取所述任务状态;
节点可用性判断模块406,当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
任务接续执行模块408,若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
可选地,所述任务接续执行模块408,在所述从所述数据库中获取所述任务状态之后,当所述任务状态为等待执行时,将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
可选地,所述任务接续执行模块408,若所述子步骤执行失败,则更新所述子步骤状态为失败;
若所述子步骤执行成功,则更新所述子步骤状态为成功;
在所述子步骤为所述任务的最后一个子步骤的情况下,更新所述任务的任务状态为成功;在所述子步骤不为所述任务的最后一个子步骤的情况下,继续获取所述任务的下一个子步骤进行处理。
可选地,所述任务接续执行模块408,在所述将自己更新为所述任务的当前执行节点之后,从所述数据库中,按照所述任务的子步骤之间的顺序,依次查找对应的子步骤状态;
若当前查找到的所述子步骤状态为失败,则更新所述任务的任务状态为失败;
若当前查找到的所述子步骤状态为成功,则继续追踪下一个子步骤;
若当前查找到的所述子步骤状态为执行中,则追踪结束,继续执行该子步骤状态对应的子步骤。
可选地,还包括:
心跳信号上报记录模块410,在所述将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中之后,在自己仍为所述任务的当前执行节点的期间,定时上报心跳信号,以使所述心跳信号的上报时间被记录于数据库中;
所述任务接续执行模块408,在所述若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点之前,通过所述数据库确定所述任务状态对应的任务的当前执行节点,及其最近一次上报心跳信号的上报时间;
判断所述最近一次上报心跳信号的上报时间距离当前时间是否已经超时;
若是,则确定所述当前执行节点不可用。
可选地,所述任务状态获取模块404,定时扫描自己的线程池空闲的线程数量;
若有空闲的线程,则通过所述空闲的线程扫描所述数据库中的所述任务状态,以确定状态为等待执行或执行中的任务。
可选地,所述任务和所述子步骤也保存于所述数据库中,与对应的执行相关状态关联,以便执行;
所述任务接续执行模块408,在所述数据库中,将自己的标识与所述任务或所述子步骤相关联,以表示自己为所述任务的当前执行节点。
可选地,所述任务为图平台针对图数据库的任务;
所述任务包括以下至少一种:
点边统计、大点统计、大规模图数据压缩。
可选地,所述任务为图平台针对图数据库的任务;
所述任务接续执行模块408,在所述将自己更新为所述任务的当前执行节点之前,获取通过将所述集群的节点拓扑图与所述任务在所述图数据库中涉及的图数据的拓扑图进行匹配得到的相似区域分布图;
判断自己是否处于所述相似区域分布图中,且得到所述判断的结果为是。
可选地,所述任务拆分出的多个子步骤中,包含针对所述涉及的图数据的指定局部区域进行处理的区域性子步骤;
所述任务接续执行模块408,执行所述子步骤状态为执行中,且在所述相似区域分布图中与自己匹配的所述区域性子步骤。
图5为本说明书一个或多个实施例提供的一种任务执行设备的结构示意图,应用于集群中的节点,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
从所述数据库中获取所述任务状态;
当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
基于同样的思路,本说明书一个或多个实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
从所述数据库中获取所述任务状态;
当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、***、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (19)
1.一种任务执行方法,应用于集群中的节点,所述任务为图平台针对图数据库的任务,所述方法包括:
确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
从所述数据库中获取所述任务状态;
当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤;
所述将自己更新为所述任务的当前执行节点之前,所述方法还包括:
获取通过将所述集群的节点拓扑图与所述任务在所述图数据库中涉及的图数据的拓扑图进行匹配得到的相似区域分布图;
判断自己是否处于所述相似区域分布图中,且得到所述判断的结果为是。
2.如权利要求1所述的方法,所述从所述数据库中获取所述任务状态之后,所述方法还包括:
当所述任务状态为等待执行时,将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
3.如权利要求1所述的方法,还包括:
若所述子步骤执行失败,则更新所述子步骤状态为失败;
若所述子步骤执行成功,则更新所述子步骤状态为成功;
在所述子步骤为所述任务的最后一个子步骤的情况下,更新所述任务的任务状态为成功;在所述子步骤不为所述任务的最后一个子步骤的情况下,继续获取所述任务的下一个子步骤进行处理。
4.如权利要求1或2所述的方法,所述将自己更新为所述任务的当前执行节点之后,所述方法还包括:
从所述数据库中,按照所述任务的子步骤之间的顺序,依次查找对应的子步骤状态;
若当前查找到的所述子步骤状态为失败,则更新所述任务的任务状态为失败;
若当前查找到的所述子步骤状态为成功,则继续追踪下一个子步骤;
若当前查找到的所述子步骤状态为执行中,则追踪结束,继续执行该子步骤状态对应的子步骤。
5.如权利要求2所述的方法,所述将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中之后,所述方法还包括:
在自己仍为所述任务的当前执行节点的期间,定时上报心跳信号,以使所述心跳信号的上报时间被记录于数据库中;
所述若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点之前,所述方法还包括:
通过所述数据库确定所述任务状态对应的任务的当前执行节点,及其最近一次上报心跳信号的上报时间;
判断所述最近一次上报心跳信号的上报时间距离当前时间是否已经超时;
若是,则确定所述当前执行节点不可用。
6.如权利要求2所述的方法,还包括:
定时扫描自己的线程池空闲的线程数量;
若有空闲的线程,则通过所述空闲的线程扫描所述数据库中的所述任务状态,以确定状态为等待执行或执行中的任务。
7.如权利要求1所述的方法,所述任务和所述子步骤也保存于所述数据库中,与对应的执行相关状态关联,以便执行;
所述将自己更新为所述任务的当前执行节点,具体包括:
在所述数据库中,将自己的标识与所述任务或所述子步骤相关联,以表示自己为所述任务的当前执行节点。
8.如权利要求1~3任一项所述的方法,所述任务为图平台针对图数据库的长任务;
所述长任务包括以下至少一种:
点边统计、大点统计、大规模图数据压缩。
9.如权利要求1所述的方法,所述任务拆分出的多个子步骤中,包含针对所述涉及的图数据的指定局部区域进行处理的区域性子步骤;
所述执行所述下一个子步骤,具体包括:
执行所述子步骤状态为执行中,且在所述相似区域分布图中与自己匹配的所述区域性子步骤。
10.一种任务执行装置,应用于集群中的节点,所述任务为图平台针对图数据库的任务,所述装置包括:
状态数据库确定模块,确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
任务状态获取模块,从所述数据库中获取所述任务状态;
节点可用性判断模块,当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
任务接续执行模块,若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤;
所述任务接续执行模块,在所述将自己更新为所述任务的当前执行节点之前,获取通过将所述集群的节点拓扑图与所述任务在所述图数据库中涉及的图数据的拓扑图进行匹配得到的相似区域分布图;
判断自己是否处于所述相似区域分布图中,且得到所述判断的结果为是。
11.如权利要求10所述的装置,所述任务接续执行模块,在所述从所述数据库中获取所述任务状态之后,当所述任务状态为等待执行时,将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤。
12.如权利要求10所述的装置,所述任务接续执行模块,若所述子步骤执行失败,则更新所述子步骤状态为失败;
若所述子步骤执行成功,则更新所述子步骤状态为成功;
在所述子步骤为所述任务的最后一个子步骤的情况下,更新所述任务的任务状态为成功;在所述子步骤不为所述任务的最后一个子步骤的情况下,继续获取所述任务的下一个子步骤进行处理。
13.如权利要求10或11所述的装置,所述任务接续执行模块,在所述将自己更新为所述任务的当前执行节点之后,从所述数据库中,按照所述任务的子步骤之间的顺序,依次查找对应的子步骤状态;
若当前查找到的所述子步骤状态为失败,则更新所述任务的任务状态为失败;
若当前查找到的所述子步骤状态为成功,则继续追踪下一个子步骤;
若当前查找到的所述子步骤状态为执行中,则追踪结束,继续执行该子步骤状态对应的子步骤。
14.如权利要求11所述的装置,还包括:
心跳信号上报记录模块,在所述将自己更新为所述任务的当前执行节点,并更新所述任务状态为执行中之后,在自己仍为所述任务的当前执行节点的期间,定时上报心跳信号,以使所述心跳信号的上报时间被记录于数据库中;
所述任务接续执行模块,在所述若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点之前,通过所述数据库确定所述任务状态对应的任务的当前执行节点,及其最近一次上报心跳信号的上报时间;
判断所述最近一次上报心跳信号的上报时间距离当前时间是否已经超时;
若是,则确定所述当前执行节点不可用。
15.如权利要求11所述的装置,所述任务状态获取模块,定时扫描自己的线程池空闲的线程数量;
若有空闲的线程,则通过所述空闲的线程扫描所述数据库中的所述任务状态,以确定状态为等待执行或执行中的任务。
16.如权利要求10所述的装置,所述任务和所述子步骤也保存于所述数据库中,与对应的执行相关状态关联,以便执行;
所述任务接续执行模块,在所述数据库中,将自己的标识与所述任务或所述子步骤相关联,以表示自己为所述任务的当前执行节点。
17.如权利要求10~12任一项所述的装置,所述任务为图平台针对图数据库的任务;
所述任务包括以下至少一种:
点边统计、大点统计、大规模图数据压缩。
18.如权利要求10所述的装置,所述任务拆分出的多个子步骤中,包含针对所述涉及的图数据的指定局部区域进行处理的区域性子步骤;
所述任务接续执行模块,执行所述子步骤状态为执行中,且在所述相似区域分布图中与自己匹配的所述区域性子步骤。
19.一种任务执行设备,应用于集群中的节点,所述任务为图平台针对图数据库的任务,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:
确定维护任务状态和任务子步骤状态的数据库,所述任务状态表示任务的执行相关状态,所述任务子步骤状态表示该任务拆分出的多个子步骤分别的执行相关状态;
从所述数据库中获取所述任务状态;
当所述任务状态为执行中时,判断所述任务的当前执行节点是否可用,所述当前执行节点属于所述集群;
若所述当前执行节点不可用时,将自己更新为所述任务的当前执行节点,并保持所述任务状态为执行中;
获取所述任务的下一个子步骤;
将所述下一个子步骤的状态更新为执行中,并执行所述下一个子步骤;
所述将自己更新为所述任务的当前执行节点之前,还包括:
获取通过将所述集群的节点拓扑图与所述任务在所述图数据库中涉及的图数据的拓扑图进行匹配得到的相似区域分布图;
判断自己是否处于所述相似区域分布图中,且得到所述判断的结果为是。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310620838.XA CN116339958B (zh) | 2023-05-30 | 2023-05-30 | 一种任务执行方法、装置以及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310620838.XA CN116339958B (zh) | 2023-05-30 | 2023-05-30 | 一种任务执行方法、装置以及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116339958A CN116339958A (zh) | 2023-06-27 |
CN116339958B true CN116339958B (zh) | 2023-09-08 |
Family
ID=86879102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310620838.XA Active CN116339958B (zh) | 2023-05-30 | 2023-05-30 | 一种任务执行方法、装置以及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116339958B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399207A (zh) * | 2019-06-29 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 分布式存储***中定时任务处理方法、***及存储介质 |
CN110673936A (zh) * | 2019-09-18 | 2020-01-10 | 平安科技(深圳)有限公司 | 编排业务的断点续作方法、装置、存储介质及电子设备 |
CN112035326A (zh) * | 2020-09-03 | 2020-12-04 | 中国银行股份有限公司 | 基于集群节点互检的异常节点任务处理方法及装置 |
CN113032119A (zh) * | 2021-03-23 | 2021-06-25 | 北京三快在线科技有限公司 | 一种任务调度方法、装置、存储介质及电子设备 |
CN113448758A (zh) * | 2021-06-30 | 2021-09-28 | 未鲲(上海)科技服务有限公司 | 处理任务的方法、装置及终端设备 |
CN114356720A (zh) * | 2022-01-12 | 2022-04-15 | 中国农业银行股份有限公司 | 基于图数据库的作业链任务延迟预警方法、装置和设备 |
CN114567634A (zh) * | 2022-03-07 | 2022-05-31 | 华中科技大学 | 面向后e级图计算的方法、***、存储介质及电子设备 |
CN114880504A (zh) * | 2022-07-08 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 一种图数据的查询方法、装置以及设备 |
CN115016917A (zh) * | 2022-06-30 | 2022-09-06 | 济南浪潮数据技术有限公司 | 一种任务控制方法、装置及可读存储介质 |
CN115113939A (zh) * | 2022-07-20 | 2022-09-27 | 深圳微众信用科技股份有限公司 | 异常处理的方法、装置及电子设备 |
CN115904907A (zh) * | 2022-12-19 | 2023-04-04 | 支付宝(杭州)信息技术有限公司 | 任务处理方法及装置 |
CN116149814A (zh) * | 2023-01-03 | 2023-05-23 | 武汉众智数字技术有限公司 | 一种基于kafka的数据持久化任务分布式调度方法及*** |
CN116149821A (zh) * | 2023-02-13 | 2023-05-23 | 刘学 | 一种集群多任务滑窗调度处理方法、***、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8521703B2 (en) * | 2010-11-05 | 2013-08-27 | International Business Machines Corporation | Multiple node/virtual input/output (I/O) server (VIOS) failure recovery in clustered partition mobility |
US9348560B2 (en) * | 2013-06-04 | 2016-05-24 | Qualcomm Incorporated | Efficient execution of graph-based programs |
JP7074777B2 (ja) * | 2017-11-20 | 2022-05-24 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド | タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器 |
US11556407B2 (en) * | 2019-09-15 | 2023-01-17 | Oracle International Corporation | Fast node death detection |
-
2023
- 2023-05-30 CN CN202310620838.XA patent/CN116339958B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399207A (zh) * | 2019-06-29 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 分布式存储***中定时任务处理方法、***及存储介质 |
CN110673936A (zh) * | 2019-09-18 | 2020-01-10 | 平安科技(深圳)有限公司 | 编排业务的断点续作方法、装置、存储介质及电子设备 |
CN112035326A (zh) * | 2020-09-03 | 2020-12-04 | 中国银行股份有限公司 | 基于集群节点互检的异常节点任务处理方法及装置 |
CN113032119A (zh) * | 2021-03-23 | 2021-06-25 | 北京三快在线科技有限公司 | 一种任务调度方法、装置、存储介质及电子设备 |
CN113448758A (zh) * | 2021-06-30 | 2021-09-28 | 未鲲(上海)科技服务有限公司 | 处理任务的方法、装置及终端设备 |
CN114356720A (zh) * | 2022-01-12 | 2022-04-15 | 中国农业银行股份有限公司 | 基于图数据库的作业链任务延迟预警方法、装置和设备 |
CN114567634A (zh) * | 2022-03-07 | 2022-05-31 | 华中科技大学 | 面向后e级图计算的方法、***、存储介质及电子设备 |
CN115016917A (zh) * | 2022-06-30 | 2022-09-06 | 济南浪潮数据技术有限公司 | 一种任务控制方法、装置及可读存储介质 |
CN114880504A (zh) * | 2022-07-08 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 一种图数据的查询方法、装置以及设备 |
CN115113939A (zh) * | 2022-07-20 | 2022-09-27 | 深圳微众信用科技股份有限公司 | 异常处理的方法、装置及电子设备 |
CN115904907A (zh) * | 2022-12-19 | 2023-04-04 | 支付宝(杭州)信息技术有限公司 | 任务处理方法及装置 |
CN116149814A (zh) * | 2023-01-03 | 2023-05-23 | 武汉众智数字技术有限公司 | 一种基于kafka的数据持久化任务分布式调度方法及*** |
CN116149821A (zh) * | 2023-02-13 | 2023-05-23 | 刘学 | 一种集群多任务滑窗调度处理方法、***、设备及介质 |
Non-Patent Citations (1)
Title |
---|
基于图数据库的5G数据流转安全防护机制;粟栗等;《电信科学》(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116339958A (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109101627B (zh) | 异构数据库同步方法及装置 | |
CN111061788A (zh) | 一种基于云架构的多源异构数据转换整合***及其实现方法 | |
CN110019469B (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
JPS58225447A (ja) | 計算装置の動作方法 | |
CN107545015B (zh) | 一种查询故障的处理方法及处理装置 | |
CN111400011A (zh) | 一种实时任务调度方法、***、设备及可读存储介质 | |
CN112445598A (zh) | 一种基于quartz的任务调度方法、装置、电子设备以及介质 | |
CN114840272B (zh) | 一种多数据源动态规划及监测***、方法 | |
CN108108119B (zh) | 一种可扩展的存储集群事物的配置方法及装置 | |
US9612921B2 (en) | Method and system for load balancing a distributed database providing object-level management and recovery | |
CN116339958B (zh) | 一种任务执行方法、装置以及设备 | |
CN114356999A (zh) | 一种数据处理方法、***及计算机可读存储介质 | |
CN112559496B (zh) | 一种分布式数据库事务原子性实现方法及装置 | |
US6092084A (en) | One system of a multisystem environment taking over log entries owned by another system | |
CN108334384B (zh) | 基于状态机的4g模块管理方法 | |
CN111897626A (zh) | 一种面向云计算场景的虚拟机高可靠***和实现方法 | |
US6076095A (en) | Method of one system of a multisystem environment taking over log entries owned by another system | |
CN114692585A (zh) | 表服务处理方法及*** | |
CN114385415A (zh) | 一种虚拟机跨备份存储池备份的方法和装置 | |
CN113032385A (zh) | 一种易扩展可配置化的数据备份***及方法 | |
CN113946543A (zh) | 基于人工智能的数据归档方法、装置、设备及存储介质 | |
US7386556B2 (en) | Substitute manager component that obtains state information of one or more software components upon failure of a first manager component | |
CN112749156A (zh) | 数据处理方法、数据库管理***和数据处理设备 | |
CN107644035B (zh) | 一种数据库***及其部署方法 | |
US20240118905A1 (en) | Performing shutdown of a node in a database system |
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 |