CN113268317A - 一种任务处理方法、装置及电子设备 - Google Patents

一种任务处理方法、装置及电子设备 Download PDF

Info

Publication number
CN113268317A
CN113268317A CN202010096919.0A CN202010096919A CN113268317A CN 113268317 A CN113268317 A CN 113268317A CN 202010096919 A CN202010096919 A CN 202010096919A CN 113268317 A CN113268317 A CN 113268317A
Authority
CN
China
Prior art keywords
task
instance
asynchronous
fragment
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.)
Granted
Application number
CN202010096919.0A
Other languages
English (en)
Other versions
CN113268317B (zh
Inventor
张俊城
赵远方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sogou Technology Development Co Ltd
Original Assignee
Beijing Sogou Technology Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sogou Technology Development Co Ltd filed Critical Beijing Sogou Technology Development Co Ltd
Priority to CN202010096919.0A priority Critical patent/CN113268317B/zh
Publication of CN113268317A publication Critical patent/CN113268317A/zh
Application granted granted Critical
Publication of CN113268317B publication Critical patent/CN113268317B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种任务处理方法、装置及电子设备。该方法包括:获取客户端根据目标数据集的n个分片数据集创建的异步任务并存储;从存储的异步任务中获取当前可执行的目标异步任务;通过异步任务集群中的实例集将目标异步任务中包含的m个任务分片分配给实例集中的各任务实例,一个任务分片的物料数据对应一个所述分片数据集;通过实例集并发执行每个任务分片;每执行完成一个任务分片,将已执行完成的任务分片对应的分片数据集删除;若执行任务分片的实例发生故障,将发生故障的实例未执行完成的任务分片进行失效转移,等待空闲实例执行失效转移的任务分片,解决了现有技术中任务重复执行的技术问题,提高了任务执行效率。

Description

一种任务处理方法、装置及电子设备
技术领域
本发明涉及软件技术领域,特别涉及一种任务处理方法、装置及电子设备。
背景技术
互联网应用中,存在大量异步计算场景,比如广告投放中的批量买词、调 价等操作,在大数据量下无法同步计算,需要分布式异步计算来对大数据量的 计算任务进行快速处理。
现有技术中,对于大数据量的计算任务的处理,应用比较广泛的分布式任 务调度方法全都是基于定时任务进行触发,任务严格按照定时触发器配置并发 执行,执行任务的实例发生故障,故障实例中的任务失效转移,由新的实例重 新执行故障实例对应的整个任务,会对故障实例已执行的部分任务重复执行, 造成计算资源的大量浪费,尤其是在任务分配粒度较大的情况下,任务执行效 率大大降低。
发明内容
本发明实施例提供一种任务处理方法、装置及电子设备,用于解决现有技 术中分布式异步计算中任务分片失效转移后任务重复执行的技术问题,提高任 务执行效率。
第一方面,本发明实施例提供一种任务处理方法,应用于异步任务集群, 所述方法包括:
获取客户端提交的异步任务并存储,其中,所述异步任务由所述客户端根 据目标数据集的n个分片数据集创建,n≥1;
从存储的所述异步任务中获取当前可执行的目标异步任务;
通过异步任务集群中的实例集进行任务分配,将所述目标异步任务中包含 的m个任务分片分配给所述实例集中的各任务实例,一个任务分片的物料数据 对应一个所述分片数据集,m≥1;
通过所述实例集中的所述各任务实例并发执行每个任务分片;
每执行完成一个任务分片,将已执行完成的任务分片对应的分片数据集删 除;
若执行所述任务分片的实例发生故障,将发生故障的实例未执行完成的任 务分片进行失效转移,等待空闲实例执行失效转移的任务分片。
可选的,所述通过异步任务集群中的实例集进行任务分配,将所述目标异 步任务中包含的m个任务分片分配给所述实例集中的各任务实例,包括:
创建用于执行所述目标异步任务的实例集,所述实例集中包含主实例和任 务实例;
通过所述主实例对所述目标异步任务进行任务分配,将所述目标异步任务 中包含的m个任务分片平均分配给所述实例集中的各任务实例。
可选的,所述创建用于执行所述目标异步任务的实例集,包括:
为所述目标异步任务建立任务节点;
所述异步任务集群中的所有实例监听所述任务节点,在监听到所述任务节 点建立后,根据所述任务节点的应用配置,在所述任务节点下选择性注册实例 节点;
所述任务节点下注册的所有实例节点对应的实例形成所述实例集。
可选的,在所述任务节点下选择性注册实例节点之后,所述方法还包括:
获取所述任务节点的节点锁,检测所述任务节点下是否存在主实例节点;
若不存在所述主实例节点,在所述任务节点下创建主实例节点并存储主实 例的实例名称;
若存在所述主实例节点,等待所述主实例完成任务分片。
可选的,获取客户端提交的异步任务并存储,包括:
根据客户端提交的任务标识获取对应的异步任务;
将所述异步任务按照任务执行的顺序存储至第一数据库的数据库队列中;
所述从存储的所述异步任务中获取当前可执行的目标异步任务,包括:
从所述数据库队列中获取无前置任务或者前置任务已完成的异步任务作 为当前可执行的所述目标异步任务。
可选的,所述从存储的所述异步任务中获取当前可执行的目标异步任务, 包括:
根据所述异步任务集群的并发配置信息从所述数据库队列中获取所述目 标异步任务;
其中,所述并发配置信息包括如下至少一项信息:可并发执行的最大任务 数、单账户最大可并发执行的任务数及每个类型的任务最大可并发执行的任务 数。
可选的,所述根据客户端提交的任务标识获取对应的异步任务,包括:
从分布式高性能消息队列kafka中消费所述客户端提交的任务标识;
根据所述任务标识从所述客户端对应的第二数据库中获取所述异步任务。
可选的,所述方法还包括:
当实例集中的第一任务实例执行完所述主实例分配的任务分片后,检测失 效转移节点下是否有失效转移的任务分片;
若有,获取失效转移节点锁,将所述失效转移节点下的第一任务分片删除, 并为所述第一任务分片创建失效任务节点,并将所述第一任务实例的实例信息 写入所述失效任务节点中,由所述第一任务实例继续执行所述第一任务分片;
释放所述失效转移节点锁,以供第二实例获取并继续执行所述失效转移节 点下的第二任务分片。
第二方面,本发明实施例提供一种任务处理装置,应用于异步任务集群, 所述装置包括:
第一获取单元,用于获取客户端提交的异步任务并存储,其中,所述异步 任务由所述客户端根据目标数据集的n个分片数据集创建,n≥1;
第二获取单元,用于从存储的所述异步任务中获取当前可执行的目标异步 任务;
分配单元,用于通过异步任务集群中的实例集进行任务分配,将所述目标 异步任务中包含的m个任务分片分配给所述实例集中的各任务实例,一个任务 分片的物料数据对应一个所述分片数据集,m≥1;
执行单元,用于通过所述实例集中的所述各任务实例并发执行每个任务分 片;每执行完成一个任务分片,将已执行完成的任务分片对应的分片数据集删 除;若执行所述任务分片的实例发生故障,将发生故障的实例未执行完成的任 务分片进行失效转移,等待空闲实例执行失效转移的任务分片。
可选的,所述分配单元用于:
创建用于执行所述目标异步任务的实例集,所述实例集中包含主实例和任 务实例;
通过所述主实例对所述目标异步任务进行任务分配,将所述目标异步任务 中包含的m个任务分片平均分配给所述实例集中的各任务实例。
可选的,所述分配单元还用于:
为所述目标异步任务建立任务节点;
所述异步任务集群中的所有实例监听所述任务节点,在监听到所述任务节 点建立后,根据所述任务节点的应用配置,在所述任务节点下选择性注册实例 节点;
所述任务节点下注册的所有实例节点对应的实例形成所述实例集。
可选的,所述分配单元还用于:
在所述任务节点下选择性注册实例节点之后,获取所述任务节点的节点 锁,检测所述任务节点下是否存在主实例节点;
若不存在所述主实例节点,在所述任务节点下创建主实例节点并存储主实 例的实例名称;
若存在所述主实例节点,等待所述主实例完成任务分片。
可选的,所述第一获取单元用于:根据客户端提交的任务标识获取对应的 异步任务;将所述异步任务按照任务执行的顺序存储至第一数据库的数据库队 列中;
所述第二获取单元用于:从所述数据库队列中获取无前置任务或者前置任 务已完成的异步任务作为当前可执行的所述目标异步任务。
可选的,所述第二获取单元还用于:
根据所述异步任务集群的并发配置信息从所述数据库队列中获取所述目 标异步任务;
其中,所述并发配置信息包括如下至少一项信息:可并发执行的最大任务 数、单账户最大可并发执行的任务数及每个类型的任务最大可并发执行的任务 数。
可选的,所述第一获取单元还用于:
从分布式高性能消息队列kafka中消费所述客户端提交的任务标识;
根据所述任务标识从所述客户端对应的第二数据库中获取所述异步任务。
可选的,所述装置还包括失效转移单元,用于:
当实例集中的第一任务实例执行完所述主实例分配的任务分片后,检测失 效转移节点下是否有失效转移的任务分片;
若有,获取失效转移节点锁,将所述失效转移节点下的第一任务分片删除, 并为所述第一任务分片创建失效任务节点,并将所述第一任务实例的实例信息 写入所述失效任务节点中,由所述第一任务实例继续执行所述第一任务分片;
释放所述失效转移节点锁,以供第二实例获取并继续执行所述失效转移节 点下的第二任务分片。
本申请实施例中的上述一个或多个技术方案,至少具有如下技术效果:
本申请实施例提供一种任务处理方法,应用于异步任务集群,该方法包括 获取客户端提交的异步任务并存储,其中,该异步任务由所述客户端根据目标 数据集的n个分片数据集创建,n≥1;从存储的异步任务中获取当前可执行的 目标异步任务,实现了事件触发的异步任务处理;通过异步任务集群中的实例 集进行任务分配,将目标异步任务中包含的m个任务分片分配给实例集中的各 任务实例,一个任务分片的物料数据对应一个所述分片数据集,m≥1;通过实 例集中的各任务实例并发执行每个任务分片,实现了分布式的异步任务计算; 每执行完成一个所述分片数据集对应的任务,将已执行完成的任务对应的分片 数据集删除;若执行所述任务分片的实例发生故障,将发生故障的实例未执行 完成的任务分片进行失效转移,等待空闲实例执行失效转移的任务分片,由于 已执行完成的任务分片对应物料数据即分片数据集已删除,该任务重新执行 时,已执行过的任务物料数据已删除无法获取,进而不能重复执行已执行过的 任务,解决了现有技术中分布式异步计算中实例故障后任务重复执行的技术问 题,提高了任务执行效率。
附图说明
图1为本申请实施例提供的一种任务处理方法的流程示意图;
图2为本申请实施例提供的一种任务处理装置的框架示意图;
图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
在本申请实施例提供的技术方案中,提供一种任务处理方法,在分布式异 步任务处理时,对已处理完成的任务删除该任务的物料信息,避免重复执行, 以解决现有技术中分布式异步计算中实例故障后任务重复执行的技术问题,提 高任务执行效率。
下面结合附图对本申请实施例技术方案的主要实现原理、具体实施方式及 其对应能够达到的有益效果进行详细的阐述。
实施例
本申请实施例提供一种任务处理方法,应用于异步任务集群,该异步任务 集群为同一应用appId节点下的所有服务器形成的一个集群,可共同处理异步 任务。实际应用中,经常会遇到大批量的任务处理场景,对于大批量的任务处 理客户端可以向异步任务集群提交待处理的任务,通过异步任务集群快速进行 任务处理。
客户端在向异步任务集群提交任务之前,先对待处理的目标数据集进行数 据分片,获得n个分片数据集并存储。例如,假设待处理目标是将符合条件的 关键词的价格提高10%,符合条件的关键词总量为2百万个,那么这2百万个 关键词为一个目标数据集,将该目标数据集分成100个分片数据集。客户端清 楚待处理目标数据集内部的业务逻辑,通过客户端将目标数据集划分成块,能 够有效的保证数据划分的正确性。
客户端在存储分片数据集时,可以将各个分片数据集存储于Redis(RemoteDictionary Server,远程字典服务),由于Redis支持主从同步,既方便客户端 存储,也方便异步任务集群快速获取分片数据。在划分分片数据集之后,客户 端还根据各个分片数据集创建异步任务并存储,以根据异步任务进行任务调 度,任务执行时再去获取需要处理的分片数据集,从而提高任务调度的调度效 率。
针对客户端提交的任务,异步任务集群执行一种任务处理方法,请参考图 1,该方法包括如下步骤S11~S16:
S11、获取客户端提交的异步任务并存储,其中,所述异步任务由所述客 户端根据目标数据集的n个分片数据集创建,n≥1。
其中,每个分片数据集对应的任务可以是异步任务的最小任务单元即一个 任务分片,可以作为异步任务的分配依据。
S12、从存储的所述异步任务中获取当前可执行的目标异步任务。
其中,目标异步任务为无前置任务或前置任务已完成的任务。客户端提交 任务后,异步任务集群从提交的任务中获得可执行任务执行,实现了基于事件 驱动的异步任务处理。
S13、通过异步任务集群中的实例集进行任务分配,将所述目标异步任务 中包含的m个任务分片分配给所述实例集中的各任务实例,一个任务分片的物 料数据对应一个所述分片数据集,m≥1。
其中,异步任务集群包含多个服务器,一个服务器提供一个实例进行任务 处理,多个实例形成一个实例集。对目标异步任务进行任务分配又称任务分片, 可以根据实例集中包含的实例数将目标异步任务包含的m个任务分片分配给 各实例,可以采取均匀分片或根据各个实例的执行能力针对性分片,每个实例 都会分配到一个或多个任务分片,使得实例集中的各个实例能够同时执行目标 异步任务的业务逻辑,对其各个任务分片进行并发执行,实现目标异步任务的 分布式计算。
S14、通过所述实例集中的各任务实例并发执行每个任务分片。
其中,实例集中每个实例都可以采用多线程方式执行任务分片。每个实例 根据其所要执行的任务分片,获取每个分片任务的物料数据即对应的分片数据 集,并对获取到的分片数据集执行任务处理即执行每个任务分片。
S15、每执行完成一个所述分片数据集对应的任务分片,将已执行完成的 任务分片对应的所述分片数据集删除。
其中,一个任务分片为任务执行过程中的最小任务单元,一个任务分片的 物料数据对应一个分片数据集。例如:假设实例集中每个实例被分配到任务是: 为10关键词集合中的每个关键词进行改价,那么每执行完一个关键词集合中 的所有关键词改价之后,将已执行完成的任务分片对应的原关键词集合删除, 即删除已执行完成的任务分片对应的物料数据,由于其物料数据已删除,为此 无法再重复执行其任务分片。
S16、若执行所述任务分片的实例发生故障,将发生故障的实例未执行完 成的任务分片进行失效转移,等待空闲实例执行失效转移的任务分片。
其中,实例发生故障是指实例对应的服务器宕机、被下线等异常情况。空 闲实例是指实例集中无当前任务执行的实例。一旦实例发生故障,当前正在执 行的任务分片及其未执行的任务分片将无法执行完成,为了完成所有任务分片 的任务处理,主实例将未执行完成的任务分片进行失效转移,通过空闲实例来 继续执行该失效转移的任务分片。由于已执行完成的任务分片对应的物料数据 已删除,所以重新执行任务分片时只能获取到未执行完成的任务分片对应的分 片数据集,据此执行剩余的任务分片,实现了任务的断点续传。
在具体实施过程中,S11可以从传递消息的中间件获取客户端提交的任务 标识,或者,通过异步任务集群提供的接口接收客户端提交的任务标识;再根 据客户端提交的任务标识获取对应的异步任务。
其中,传递消息的中间件可以是分布式高性能消息队列kafka。客户端完 成数据分片之后,根据各个分片数据集创建异步任务,将异步任务存储于数据 库,将异步任务的任务标识即任务ID发送至分布式高性能消息队列kafka。异 步任务集群从分布式高性能消息队列kafka中消费客户端提交的任务标识;根 据消费获得的任务标识从客户端对应的第二数据库中获取异步任务。将kafka 作为中间件,通过消费kafka消息来获取异步任务,能够有效的保证任务提交 及消费的有序性。
S11对于获取到的异步任务,按照任务执行的顺序存储至第一数据库的数 据库队列中。第一数据库为异步任务集群存储数据的数据库,与客户端存储异 步任务的数据不相关。若S11从kafka中消费获得任务标识,由于kafka中的 任务标识即可包含任务执行的先后顺序,S11可以依据从kafka中获得任务标 识的先后顺序作为任务执行的顺序,将对应的异步任务有序的在数据库队列中 进行排队。若任务标识是从异步任务集群提供的接口中获得,S11可以将任务 标识的提交顺序作为任务执行顺序,将对应的异步任务在数据库队列中进行排 队。
基于S11获取并存储的异步任务,S12可以从所述数据库队列中获取无前 置任务或者前置任务已完成的异步任务作为当前可执行的所述目标异步任务。 由于数据库队列中异步任务已按照任务执行顺序排队,先出队列的任务无前置 任务或者前置任务已执行,只需检测前置任务是否完成即可。在从存储的异步 任务中获取当前可执行的目标异步任务时,可以根据异步任务集群的并发配置 信息从数据库队列中获取目标异步任务,以保证异步任务有序的并发执行。其 中,异步任务集群的并发配置信息包括如下至少一项信息:可并发执行的最大 任务数、单账户最大可并发执行的任务数及每个类型的任务最大可并发执行的 任务数。例如:若异步任务集群可并发执行的最大任务数为100,可从数据库 队列中获取最大包含100个任务数的目标异步任务。
在获得目标异步任务之后,执行S13和S14,包括:
①、创建用于执行目标异步任务的实例集,实例集中包含主实例和任务实 例。该实例集也是一种异步任务集群。
具体的,异步任务集群可以将目标任务注册至Zookeeper,Zookeeper是一 个为分布式应用提供一致性服务的软件,提供配置维护、域名服务、分布式同 步以及同步服务等功能,由Zookeeper为目标异步任务创建任务节点,异步任 务集群监听目标异步任务的节点变化,根据节点变化来创建实例集,并通过实 例集来实现目标异步任务的并发执行。当然,任务节点也可以由异步任务集群 来创建,本实例不做限定。
异步任务集群中的所有实例监听任务节点,在监听到任务节点建立后,根 据监听到的任务节点的应用配置,在该任务节点下选择性注册实例节点。其中, 任务节点的应用配置包括:任务类型、任务数、任务计算量等参数信息。每一 个实例都有专属的服务类型,可根据应用配置选择在服务类型与任务类型一 致、任务数和任务计算量与实例的服务能力相匹配的任务节点下注册实例节 点,为该任务节点提供服务。目标异步任务的任务节点下注册的所有实例节点 对应的实例形成任务处理的实例集。
各实例在任务节点下注册实例节点之后,参与选举leader实例即主实例: 获取任务节点的节点锁,检测该任务节点下是否存在主实例节点;若不存在主 实例节点,在任务节点下创建主实例节点并存储主实例的实例名称;若存在主 实例节点,等待主实例完成任务分片。主实例选举完成后,主实例释放节点锁。 其他实例获取节点锁之后,发现leader实例已选举完成,自动成为任务实例, 等待leader实例完成任务分片。其中,节点锁为限制节点变化的工具,只有获 取到了节点锁的实例才能对节点进行处理,未获取到节点锁的实例则等待节点 锁的释放,以此可以节点变换有序,保证任务顺畅执行。
②、通过主实例对目标异步任务进行任务分片获得m个任务分片,并为每 个任务分片配置任务实例。
例如:若当前实例集中有4台实例,目标数据在redis中有100个分片数 据集,若一个分片数据集为一个任务分片,每台实例将被分配到100/4=25个 任务分片;leader实例在任务节点下创建任务分片节点,每个任务分片节点下 包含分配的实例信息、执行状态信息等。
③、通过任务实例根据i个分片数据集并发执行每个任务分片。
任务分片完成后,各个任务实例获取分配给自身的任务分片,并多线程执 行分配给自身的任务分片。具体的,各个任务实例根据自身所要执行的任务分 片,从任务节点下获取任务分片对应的参数信息,包括任务分片的物料数据的 存储位置,根据其参数信息从redis中获取对应的i个分片数据集即物料数据, 然后,对其物料数据执行相应的任务处理。例如:若某任务分片是对第100~199 个关键词进行改价,执行该任务分片则获取第100~199个关键词并对第 100~199个关键词进行改价。
在执行任务分片时,执行S15每执行完成一个分片数据集对应的任务分片, 将已执行完成的任务分片对应的分片数据集删除。若任务分片的所有任务执行 完成,将任务分片对应的所有分片数据集删除,并且将任务分片的执行状态修 改为执行完成。
若任务分片执行过程中,任务实例发生故障,执行S16进行任务失效转移。 若有任务实例(包括leader实例)发生宕机或下线,任务节点下对应的实例节 点将自动被移除。收到实例节点被移除消息的其他实例,查询zookeeper得到 分配给宕机实例的任务分片,在任务节点下创建失效转移节点,并将未执行完 成的任务分片转移至失效转移节点下。其他实例在执行完分配给自身的任务分 片后,会去检查失效转移节点下是否有失效转移的任务分片,如果有,则继续 处理这些任务分片。
具体的,针对失效转移下的任务分片,当实例集中的第一任务实例即未发 生故障的其他实例,执行完主实例分配的任务分片后,检测失效转移节点下是 否有失效转移的任务分片。若有,获取失效转移节点锁,将失效转移节点下的 第一任务分片删除,并为第一任务分片创建失效任务节点,并将第一任务实例 的实例信息写入失效任务节点中,由第一任务实例继续执行第一任务分片。随 后,释放失效转移节点锁,以供第二实例获取并继续执行失效转移节点下的第 二任务分片。第一任务分片和第二任务分片可以是失效转移节点下的最小任务 分片,也可以是失效转移节点下的最小任务单元。其中,删除实例节点以及创 建失效转移节点均是在同一个任务节点下完成,以此保证节点数据的一致性。
若任务分片执行过程中,leader实例发生宕机或下线,任务节点下该实例 对应的实例节点和leader节点下的实例节点都将自动被移除,异步任务集群中 的其余实例收到leader节点和实例节点被移除的消息后,立即参与leader实例 选举,保证目标异步任务执行过程中一直有leader实例存在,以完成目标异步 任务的任务处理。
当所有任务分片执行完成后,由leader实例执行目标异步任务的后续操作, 并将目标异步任务的执行状态修改为已完成,然后将目标异步任务从zookeeper 上删除。异步任务集群的所有实例监听zookeeper上任务节点的变化,当收到 任务删除的事件后,检查zookeeper中是否有任务的前置任务为当前已删除的 任务,如果有,则该任务为已删除任务的后继任务,开始调度执行该后继任务。
第一方面,在上述实施例中,异步任务服务启动时,会根据目标异步任务 的应用配置,创建相应任务节点并在任务节点下注册自身实例节点(临时节点, 一个异步任务服务对应一个实例节点,服务宕机或重启,该临时节点将自动被 移除),该任务节点下的所有实例形成一个实例集也即异步任务集群,共同处 理提交的目标异步任务。
异步任务集群中各个实例通过监听任务节点变化感知其他服务器状态,当 某服务宕机(对应的实例节点将自动被移除),进行leader选举(leader实例对 应的服务宕机)和任务分片失效转移,其余存活实例会继续执行失效转移的任 务分片,保证任务的正常执行。
当异步任务集群添加新的服务器(创建自身实例节点),该服务器将立即 参与当前应用下所有任务的执行。未分片的任务,新实例会参与任务的分片及 执行;已完成分片的任务,新实例监听失效转移的任务分片,随时等待执行分 配的任务分片,直至任务正常执行完成。
第二方面,通过将任务ID提交至kafka消息队列,异步任务集群消费kafka 消息来获取任务ID,以kafka作为消息中间件,保证消息的有序消费;同时, 异步任务集群也向客户端提供提交任务接口,支持任务实时提交。异步任务集 群将收到的异步任务有序的存储于数据库中,以数据库作为任务实时队列,保 证任务不丢失;同时,异步任务集群根据服务的并发配置信息(任务并发配置 包括同时可并发执行的最大任务数、单账户最大可并发执行的任务数、各个类 型的任务最大可并发执行的任务数),可控的从数据库队列中获取最大并发执 行的任务信息,从而保证任务有序/并发执行;任务并发配置仅限制了可并发执行的任务数,并不会导致任务丢失,任务的并发配置实现了任务限流,保证服 务平稳运行的目标。
第三方面,通过实例集中的所有实例同时执行同一任务,首先为该任务选 举一个leader实例,由leader实例进行任务分片,将各任务分片分配给各实例; 其余实例即任务实例等待leader实例完成任务分片,然后各实例获取分配给自 身的任务分片信息,多线程并发执行自己的任务分片。
第四方面,当某服务器被下线或宕机时即对应实例发生故障时,会将leader 实例分配给故障实例的任务分片进行失效转移;各实例执行完分配给自身的任 务分片后,检查是否有失效转移的任务分片,如果有,则获取失效转移的任务 分片继续执行,避免任务执行的遗漏或错误。
第五方面,将异步任务的物料数据进行存储,已执行的物料数据会实时删 除,以保证各任务分片在失效转移后继续执行时,已执行的物料数据不会被重 复执行,实现了任务断点续传,提高了任务执行效率。
针对上述实施例提供一种任务处理方法,本申请实施例还对应提供一种任 务处理装置,应用于异步任务集群,请参考图2,该装置包括:
第一获取单元21,用于获取客户端提交的异步任务并存储,其中,所述异 步任务由所述客户端根据目标数据集的n个分片数据集创建,n≥1;
第二获取单元22,用于从存储的所述异步任务中获取当前可执行的目标异 步任务;
分配单元23,用于通过异步任务集群中的实例集进行任务分配,将所述目 标异步任务中包含的m个任务分片分配给所述实例集中的各任务实例,一个任 务分片的物料数据对应一个所述分片数据集,m≥1;
执行单元24,用于通过所述实例集中的所述各任务实例并发执行每个任务 分片;每执行完成一个任务分片,将已执行完成的任务分片对应的分片数据集 删除;若执行所述任务分片的实例发生故障,将发生故障的实例未执行完成的 任务分片进行失效转移,等待空闲实例执行失效转移的任务分片。
作为一种可选的实施方式,所述分配单元23用于:创建用于执行所述目 标异步任务的实例集,所述实例集中包含主实例和任务实例;通过所述主实例 对所述目标异步任务进行任务分配,将所述目标异步任务中包含的m个任务分 片平均分配给所述实例集中的各任务实例。
作为一种可选的实施方式,所述分配单元23还用于:为所述目标异步任 务建立任务节点;所述异步任务集群中的所有实例监听所述任务节点,在监听 到所述任务节点建立后,根据所述任务节点的应用配置,在所述任务节点下选 择性注册实例节点;所述任务节点下注册的所有实例节点对应的实例形成所述 实例集。
作为一种可选的实施方式,所述分配单元23还用于:在所述任务节点下 选择性注册实例节点之后,获取所述任务节点的节点锁,检测所述任务节点下 是否存在主实例节点;若不存在所述主实例节点,在所述任务节点下创建主实 例节点并存储主实例的实例名称;若存在所述主实例节点,等待所述主实例完 成任务分片。
作为一种可选的实施方式,所述第一获取单元21用于:根据客户端提交 的任务标识获取对应的异步任务;将所述异步任务按照任务执行的顺序存储至 第一数据库的数据库队列中;
所述第二获取单元22用于:从所述数据库队列中获取无前置任务或者前 置任务已完成的异步任务作为当前可执行的所述目标异步任务。
作为一种可选的实施方式,所述第二获取单元22还用于:根据所述异步 任务集群的并发配置信息从所述数据库队列中获取所述目标异步任务;其中, 所述并发配置信息包括如下至少一项信息:可并发执行的最大任务数、单账户 最大可并发执行的任务数及每个类型的任务最大可并发执行的任务数。
作为一种可选的实施方式,所述第一获取单元21还用于:
从分布式高性能消息队列kafka中消费所述客户端提交的任务标识;根据 所述任务标识从所述客户端对应的第二数据库中获取所述异步任务。
作为一种可选的实施方式,所述装置还包括失效转移单元25,失效转移单 元25用于:当实例集中的第一任务实例执行完所述主实例分配的任务分片后, 检测失效转移节点下是否有失效转移的任务分片;若有,获取失效转移节点 锁,将所述失效转移节点下的第一任务分片删除,并为所述第一任务分片创建 失效任务节点,并将所述第一任务实例的实例信息写入所述失效任务节点中, 由所述第一任务实例继续执行所述第一任务分片;释放所述失效转移节点锁, 以供第二实例获取并继续执行所述失效转移节点下的第二任务分片。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关 该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图3是根据一示例性实施例示出的一种用于实现任务处理方法的电子设备 800的框图。例如,电子设备800可以是移动电话,计算机,数字广播终端, 消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理 等。
参照图3,电子设备800可以包括以下一个或多个组件:处理组件802, 存储器804,电源组件806,多媒体组件808,音频组件810,输入/展现(I/O) 的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫, 数据通信,相机操作和记录操作相关联的操作。处理元件802可以包括一个或 多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处 理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交 互。例如,处理部件802可以包括多媒体模块,以方便多媒体组件808和处理 组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些 数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联 系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的 易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器 (SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储 器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器, 快闪存储器,磁盘或光盘。
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包 括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分 配电力相关联的组件。
多媒体组件808包括在所述电子设备800和用户之间的提供一个展现接口 的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。 如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信 号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手 势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述 触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包 括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或 视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前 置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变 焦能力。
音频组件810被配置为展现和/或输入音频信号。例如,音频组件810包括 一个麦克风(MIC),当电子设备800处于操作模式,如呼叫模式、记录模式 和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可 以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音 频组件810还包括一个扬声器,用于展现音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接 口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、 音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方 面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态, 组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组 件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与 电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备 800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任 何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器, 如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该 传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传 感器或温度传感器。
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式 的通信。电子设备800可以接入基于通信标准的无线网络,如WiFi,2G或3G, 或它们的组合。在一个示例性实施例中,通信部件816经由广播信道接收来自 外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述 通信部件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC 模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB) 技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路 (ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑 器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或 其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介 质,例如包括指令的存储器804,上述指令可由电子设备800的处理器820执 行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、 随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端 的处理器执行时,使得移动终端能够执行一种任务处理方法,所述方法包括: 获取客户端提交的异步任务并存储,其中,所述异步任务由所述客户端根据目 标数据集的n个分片数据集创建,n≥1;从存储的所述异步任务中获取当前可 执行的目标异步任务;通过异步任务集群中的实例集进行任务分配,将所述目 标异步任务中包含的m个任务分片分配给所述实例集中的各任务实例,一个任 务分片的物料数据对应一个所述分片数据集,m≥1;通过所述实例集中的所述 各任务实例并发执行每个任务分片;每执行完成一个任务分片,将已执行完成 的任务分片对应的分片数据集删除;若执行所述任务分片的实例发生故障,将 发生故障的实例未执行完成的任务分片进行失效转移,等待空闲实例执行失效 转移的任务分片。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结 构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的 权利要求来限制
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的 精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。

Claims (10)

1.一种任务处理方法,其特征在于,应用于异步任务集群,所述方法包括:
获取客户端提交的异步任务并存储,其中,所述异步任务由所述客户端根据目标数据集的n个分片数据集创建,n≥1;
从存储的所述异步任务中获取当前可执行的目标异步任务;
通过异步任务集群中的实例集进行任务分配,将所述目标异步任务中包含的m个任务分片分配给所述实例集中的各任务实例,一个任务分片的物料数据对应一个所述分片数据集,m≥1;
通过所述实例集中的所述各任务实例并发执行每个任务分片;
每执行完成一个任务分片,将已执行完成的任务分片对应的分片数据集删除;
若执行所述任务分片的实例发生故障,将发生故障的实例未执行完成的任务分片进行失效转移,等待空闲实例执行失效转移的任务分片。
2.如权利要求1所述的方法,其特征在于,所述通过异步任务集群中的实例集进行任务分配,将所述目标异步任务中包含的m个任务分片分配给所述实例集中的各任务实例,包括:
创建用于执行所述目标异步任务的实例集,所述实例集中包含主实例和任务实例;
通过所述主实例对所述目标异步任务进行任务分配,将所述目标异步任务中包含的m个任务分片平均分配给所述实例集中的各任务实例。
3.如权利要求2所述方法,其特征在于,所述创建用于执行所述目标异步任务的实例集,包括:
为所述目标异步任务建立任务节点;
所述异步任务集群中的所有实例监听所述任务节点,在监听到所述任务节点建立后,根据所述任务节点的应用配置,在所述任务节点下选择性注册实例节点;
所述任务节点下注册的所有实例节点对应的实例形成所述实例集。
4.如权利要求3所述的方法,其特征在于,在所述任务节点下选择性注册实例节点之后,所述方法还包括:
获取所述任务节点的节点锁,检测所述任务节点下是否存在主实例节点;
若不存在所述主实例节点,在所述任务节点下创建主实例节点并存储主实例的实例名称;
若存在所述主实例节点,等待所述主实例完成任务分片。
5.如权利要求1所述的方法,其特征在于,获取客户端提交的异步任务并存储,包括:
根据客户端提交的任务标识获取对应的异步任务;
将所述异步任务按照任务执行的顺序存储至第一数据库的数据库队列中;
所述从存储的所述异步任务中获取当前可执行的目标异步任务,包括:
从所述数据库队列中获取无前置任务或者前置任务已完成的异步任务作为当前可执行的所述目标异步任务。
6.如权利要求5所述的方法,其特征在于,所述从存储的所述异步任务中获取当前可执行的目标异步任务,包括:
根据所述异步任务集群的并发配置信息从所述数据库队列中获取所述目标异步任务;
其中,所述并发配置信息包括如下至少一项信息:可并发执行的最大任务数、单账户最大可并发执行的任务数及每个类型的任务最大可并发执行的任务数。
7.如权利要求5所述的方法,其特征在于,所述根据客户端提交的任务标识获取对应的异步任务,包括:
从分布式高性能消息队列kafka中消费所述客户端提交的任务标识;
根据所述任务标识从所述客户端对应的第二数据库中获取所述异步任务。
8.一种任务处理装置,其特征在于,应用于异步任务集群,所述装置包括:
第一获取单元,用于获取客户端提交的异步任务并存储,其中,所述异步任务由所述客户端根据目标数据集的n个分片数据集创建,n≥1;
第二获取单元,用于从存储的所述异步任务中获取当前可执行的目标异步任务;
分配单元,用于通过异步任务集群中的实例集进行任务分配,将所述目标异步任务中包含的m个任务分片分配给所述实例集中的各任务实例,一个任务分片的物料数据对应一个所述分片数据集,m≥1;
执行单元,用于通过所述实例集中的所述各任务实例并发执行每个任务分片;每执行完成一个任务分片,将已执行完成的任务分片对应的分片数据集删除;若执行所述任务分片的实例发生故障,将发生故障的实例未执行完成的任务分片进行失效转移,等待空闲实例执行失效转移的任务分片。
9.一种电子设备,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上的程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上的程序所包含的用于进行如权利要求1~7任一所述方法对应的操作指令。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~7任一所述方法对应步骤。
CN202010096919.0A 2020-02-17 2020-02-17 一种任务处理方法、装置及电子设备 Active CN113268317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010096919.0A CN113268317B (zh) 2020-02-17 2020-02-17 一种任务处理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010096919.0A CN113268317B (zh) 2020-02-17 2020-02-17 一种任务处理方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN113268317A true CN113268317A (zh) 2021-08-17
CN113268317B CN113268317B (zh) 2023-10-31

Family

ID=77227637

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010096919.0A Active CN113268317B (zh) 2020-02-17 2020-02-17 一种任务处理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN113268317B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541419A (zh) * 2023-07-06 2023-08-04 美云智数科技有限公司 数据导入导出方法、装置、电子设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053157A1 (en) * 2012-08-16 2014-02-20 Microsoft Corporation Asynchronous execution flow
CN106874437A (zh) * 2017-02-04 2017-06-20 中国人民大学 面向数据库一体机的内存数据仓库行列存储转换实现方法
CN108833131A (zh) * 2018-04-25 2018-11-16 北京百度网讯科技有限公司 分布式数据库云服务的系统、方法、设备和计算机存储介质
US10275326B1 (en) * 2014-10-31 2019-04-30 Amazon Technologies, Inc. Distributed computing system failure detection
CN110673933A (zh) * 2019-08-15 2020-01-10 平安普惠企业管理有限公司 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053157A1 (en) * 2012-08-16 2014-02-20 Microsoft Corporation Asynchronous execution flow
US10275326B1 (en) * 2014-10-31 2019-04-30 Amazon Technologies, Inc. Distributed computing system failure detection
CN106874437A (zh) * 2017-02-04 2017-06-20 中国人民大学 面向数据库一体机的内存数据仓库行列存储转换实现方法
CN108833131A (zh) * 2018-04-25 2018-11-16 北京百度网讯科技有限公司 分布式数据库云服务的系统、方法、设备和计算机存储介质
CN110673933A (zh) * 2019-08-15 2020-01-10 平安普惠企业管理有限公司 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张乐;: "基于单元集群的MapReduce中节点失效的改进", 微型机与应用, no. 16 *
苟丽美;张锋叶;林国华;: "基于Zookeeper的GIS集群实现", 计算机工程与设计, no. 09 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541419A (zh) * 2023-07-06 2023-08-04 美云智数科技有限公司 数据导入导出方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN113268317B (zh) 2023-10-31

Similar Documents

Publication Publication Date Title
CN111950988B (zh) 分布式工作流调度方法、装置、存储介质及电子设备
WO2017166713A1 (zh) 服务请求处理方法及装置
US9170842B2 (en) Information processing terminal and resource release method
CN105955766A (zh) 应用预加载方法及装置
EP3142304B1 (en) Synchronization method for notification message of electronic device, server and electronic device
US10454795B1 (en) Intermediate batch service for serverless computing environment metrics
CN107888965B (zh) 图像礼物展示方法及装置、终端、系统、存储介质
US11151017B2 (en) Method for processing refresh and display exceptions, and terminal
US11184305B2 (en) Method and apparatus for updating group member data, and terminal, system and storage medium
CN112187862B (zh) 一种任务处理方法、装置和用于任务处理的装置
CN115237613B (zh) 一种多方安全计算任务调度方法、装置和可读存储介质
CN105373563B (zh) 数据库切换方法及装置
CN115328741A (zh) 一种异常处理方法、装置、设备和存储介质
CN113268317B (zh) 一种任务处理方法、装置及电子设备
CN106851595B (zh) 有序广播处理方法、装置和终端设备
CN110795314B (zh) 一种检测慢节点的方法、装置及计算机可读存储介质
CN112486658A (zh) 一种任务调度方法、装置和用于任务调度的装置
CN116048757A (zh) 任务处理方法、装置、电子设备和存储介质
CN110908814A (zh) 消息处理方法、装置、电子设备及存储介质
CN116303303A (zh) 批量数据处理方法、装置、设备及介质
CN115834483A (zh) 基于集群的流量控制方法、装置、设备及存储介质
CN111818293B (zh) 通信方法、装置和电子设备
CN111241134B (zh) 一种数据处理方法及装置
CN109426572B (zh) 任务处理方法、装置及电子设备
CN113360254A (zh) 任务调度方法及系统

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