CN111221662A - 任务调度方法、系统及装置 - Google Patents
任务调度方法、系统及装置 Download PDFInfo
- Publication number
- CN111221662A CN111221662A CN201910981287.3A CN201910981287A CN111221662A CN 111221662 A CN111221662 A CN 111221662A CN 201910981287 A CN201910981287 A CN 201910981287A CN 111221662 A CN111221662 A CN 111221662A
- Authority
- CN
- China
- Prior art keywords
- task
- message
- message queue
- scheduling
- execution
- 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
Links
Images
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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请公开了一种任务调度方法、系统及装置。具体方案包括:调度设备在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列;执行设备从消息队列中抓取到任务开始消息时,生成并发送任务执行消息至消息队列;调度设备从消息队列中抓取到任务执行消息时,向外部服务器发送服务请求,在接收到服务数据时,将服务数据发送给消息队列;执行设备从消息队列中抓取到服务数据时,根据服务数据完成任务,通过消息队列将完成消息发送给调度设备,调度设备在接收到完成消息时,向客户端发送执行结果。本申请可以避免任务服务器耗费大量时间等待外部服务器的响应,提升服务提供方的任务吞吐量,提升系统性能。
Description
技术领域
本申请涉及分布式服务技术,特别是涉及一种任务调度方法、系统及装置。
背景技术
随着互联网的发展,服务提供方的用户量越来越大,提供的服务越来越复杂,因此广泛采用分布式服务技术实现,将不同的业务功能拆分成若干个任务,不同的任务之间采用远程调用的方式进行交互。
然而某些任务的实现时常会强依赖于外部服务器提供的接口服务,当外部服务器的接口响应速度过慢、耗时过长时,执行设备需要耗费大量时间等待外部服务器的响应,从而极大影响服务提供方的任务吞吐量。甚至最终导致耗尽服务提供方的系统资源,无法继续提供服务。
发明内容
有鉴于此,本申请的主要目的在于提供一种任务调度方法,该方法可以在执行设备需要依赖外部服务器提供的接口服务的情况下,避免任务服务器耗费大量时间等待外部服务器的响应,从而大幅提升服务提供方的任务吞吐量,提升服务提供方的系统性能。
为了达到上述目的,本申请提出的技术方案为:
第一方面,本申请实施例提供了一种任务调度方法,包括以下步骤:
调度设备在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列;
所述执行设备从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从消息队列中抓取下一个消息;
所述调度设备从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列;
所述执行设备从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备,并由所述调度设备在接收到所述完成消息时,向所述客户端发送执行结果。
一种可能的实施方式中,所述调度设备在收到客户端发来的任务指令时,所述生成并发送任务开始消息至消息队列的步骤之后,所述方法还包括:
根据当前时间与发送任务开始消息的时间确定间隔时长,所述调度设备判断所述间隔时长是否达到预设时长阈值,当达到所述预设时长阈值且未接收到所述完成消息时,将执行失败信息作为所述执行结果发送给所述客户端。
一种可能的实施方式中,所述通过所述消息队列将完成消息发送给所述调度设备的步骤为:
将所述完成消息通过所述消息队列以广播模式发送给所述调度设备。
一种可能的实施方式中,所述调度设备在收到客户端发来的任务指令时,所述生成并发送任务开始消息至消息队列的步骤之前,所述方法还包括:
生成任务标识信息;所述任务标识信息携带于所述调度设备和所述执行设备与所述消息队列之间交互的每个消息中。
一种可能的实施方式中,所述调度设备在收到客户端发来的任务指令时,所述生成并发送任务开始消息至消息队列的步骤之后,所述方法还包括:
根据所述任务标识信息,在主线程管理器中注册任务的主线程上下文;
所述调度设备在接收到所述完成消息时,所述向所述客户端发送执行结果的步骤之前,所述方法还包括:
根据所述任务标识信息从所述主线程管理器中取出所述主线程上下文。
第二方面,本申请实施例提供一种任务调度系统,包括:调度设备、消息队列和执行设备;
所述调度设备通过所述消息队列与所述执行设备连接,所述调度设备连接客户端和外部服务器;
所述调度设备用于在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列;用于从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列;还用于在接收到所述完成消息时,向所述客户端发送执行结果;
所述执行设备用于从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从消息队列中抓取下一个消息;还用于从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备;
所述消息队列用于在所述调度设备和所述执行设备之间进行每个消息的转发。
第三方面,本申请实施例提供一种任务调度装置,应用于调度设备,包括:
发送模块,用于生成并发送所述任务开始消息至消息队列;用于向外部服务器发送服务请求;用于从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求;用于在接收到所述服务数据时,将所述服务数据发送给所述消息队列;还用于在接收到完成消息时,向所述客户端发送执行结果;
接收模块,用于从所述消息队列中抓取所述任务执行消息;用于等待接收所述外部服务器返回的服务数据;还用于通过所述消息队列接收所述完成消息。
第四方面,本申请实施例还提供一种任务调度装置,应用于执行设备,包括:
接收模块,用于从消息队列中抓取任务开始消息;还用于从所述消息队列中抓取服务数据;
任务完成模块,用于根据所述服务数据完成任务;
发送模块,用于生成并发送任务执行消息至所述消息队列;还用于通过所述消息队列将完成消息发送给调度设备。
第五方面,本申请实施例还提供一种任务调度方法,应用于调度设备,包括:
调度设备在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列;
所述调度设备从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列。
第六方面,本申请实施例还提供一种任务调度方法,应用于执行设备,包括:
执行设备从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从所述消息队列中抓取下一个消息;
所述执行设备从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备,并由所述调度设备在接收到所述完成消息时,向所述客户端发送执行结果。
第七方面,本申请实施例还提供一种计算机可读存储介质。具体方案为:
一种计算机可读存储介质,存储有计算机指令,所述指令被处理器执行时可实现上述第五方面及第五方面中任一种可能的实施方式、或者第六方面及第六方面中任一种可能的实施方式的步骤。
第八方面,本申请实施例还提供一种电子设备。具体方案为:
一种电子设备,该电子设备包括上述的计算机可读存储介质,还包括可执行所述计算机可读存储介质的处理器。
综上所述,本申请提出的一种任务调度方法、系统及装置。本申请在现有技术中实现分布式服务的执行设备基础上增加调度设备和消息队列。调度设备通过消息队列调度执行设备调用外部服务器接口服务的交互过程,使现有技术中的同步的交互过程变为异步的交互过程,将等待外部服务器接口服务相应的成本转移到调度设备,使执行设备在时序上无需依赖和等待外部服务器接口服务的响应,使执行设备可以并行地执行两个以上的任务,从而大幅提升服务提供方的任务吞吐量,提升服务提供方的系统性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的任务调度方法的流程示意图;
图2为本申请实施例提供的另一种任务调度方法的流程示意图;
图3为本申请实施例提供的一种任务调度系统的结构示意图;
图4为完成支付任务的执行设备的数据交互示意图;
图5为本申请实施例提供的一种应用于支付任务的任务调度方法的架构及流程示意图;
图6为本申请实施例提供的一种任务调度装置的结构示意图;
图7为本申请实施例提供的另一种任务调度装置的结构示意图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
随着互联网的发展,服务提供方的用户量越来越大,提供的服务越来越复杂,因此广泛采用分布式服务技术实现,将不同的业务功能产分成若干个任务,不同的任务之间采用远程调用的方式进行交互。每个任务通过执行设备实现,具体的,执行设备通常为一组或多组完成不同功能的分布式任务服务器。然而执行设备执行任务时常会强依赖于外部服务器提供的接口服务,当外部服务器的接口响应速度过慢、耗时过长时,执行设备需要耗费大量时间等待外部服务器的响应,从而极大影响服务提供方的任务吞吐量。甚至最终导致耗尽服务提供方的系统资源,无法继续提供服务。
有鉴于此,本申请实施例的核心发明点在于,在现有技术中实现分布式服务的执行设备基础上增加调度设备和消息队列。调度设备在收到客户端发来的任务指令时,生成任务标识信息,并通过任务标识信息区分分布式任务调度系统中并发的任务。进一步的,调度设备通过消息队列调度执行设备调用外部服务器接口服务的交互过程,使现有技术中的同步的交互过程变为异步的交互过程,并使用任务标识信息对并发的任务进行区分,使执行设备在时序上无需依赖和等待外部服务器接口服务的响应,从而大幅提升服务提供方的任务吞吐量,提升服务提供方的系统性能。
为使本申请的目的、技术方案和优点更加清楚,下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
实施例一
图1为本申请实施例提供的任务调度方法的流程示意图,如图1所示,该实施例主要引用于调度设备,具体步骤包括:
S101:调度设备在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列。
调度设备用于对执行设备执行任务的过程、对执行设备与外部服务器交互的过程和对执行设备和客户端交互的过程进行调度。调度设备也可以是分布式的,因此,调度设备可以由至少一个分布式计算设备实现,例如由至少一个分布式服务器或分布式计算机实现。本申请实施例由调度设备实现的任务调度方法,可以由一个调度设备实现,也可以由两个以上调度设备分别实现任务调度方法中的不同步骤。
用户通过客户端发送任务指令,任务指令为指示任务开始执行的指令。为了降低执行设备执行任务的过程对其他设备的依赖程度,例如,降低执行任务过程对外部服务器的依赖程度,采用消息队列将同步的交互过程变为异步的交互过程,具体的,采用消息队列进行调度设备与执行设备之间的消息的中转发送。在本申请实施例提供的任务调度方法由两个以上调度设备实现不同的步骤时,也采用消息队列进行不同调度设备之间的消息的中转发送。因此,在接收到任务指令后,调度设备首先生成并发送任务开始消息至消息队列。
S102:所述执行设备从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从消息队列中抓取下一个消息。
执行设备可以由至少一个分布式计算设备实现,例如由至少一个分布式服务器或分布式计算机实现。在分布式系统中,实现一个任务的不同步骤可以由不同的执行设备实现,因此,本申请实施例提供的任务调度方法可以包括两个以上的执行设备。
为了降低执行设备执行任务的过程对其他设备的依赖程度,执行设备在调度设备的协助下完成任务的执行、以及与外部服务器和客户端的交互,并且执行设备通过消息队列实现与调度设备的交互。当采用两个以上执行设备执行任务指令指定的任务时,每个执行设备之间的交互也通过消息队列进行。
执行设备抓取消息队列中的消息,从消息队列中抓取消息之后,按照消息的内容执行消息对应的任务,之后从消息队列中抓取下一个消息,例如,在抓取到任务开始消息时,生成并发送任务执行消息至消息队列,之后从消息队列中抓取下一个消息。因此,执行设备执行任务的过程无需等待,只需连续不断地从消息队列中抓取消息,并执行消息对应的任务。
S103:所述调度设备从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列。
执行设备在执行任务时如需进行与外部服务器的交互,交互过程通过调度设备进行,这样执行设备无需阻塞线程等待外部服务器的响应,可以继续执行其他任务。因此,在需要与外部服务器进行交互时,调度设备接受执行设备发来的任务执行消息,并向外部服务器发送服务请求,请求外部服务器的接口服务。之后,由调度设备代替执行设备等待接收外部服务器返回的服务数据,调度设备等待外部服务器响应过程中,执行设备仍在执行其他任务,不会受到外部服务器响应时间的影响。当调度设备接收到外部服务器返回的服务数据后,再将服务数据发送给消息队列。
S104:所述执行设备从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备,并由所述调度设备在接收到所述完成消息时,向所述客户端发送执行结果。
执行设备与客户端之间的交互也通过调度设备进行,从而使执行设备无需等待一个客户端发来的任务指令指定的任务完成并返回执行结果,这样执行设备可以同时进行多个任务指令指定的任务,大大增加任务吞吐量。因此,在任务完成时,执行设备会向调度设备发送携带有任务标识信息和执行结果的完成消息,调度设备接收到完成消息时,向客户端发送执行结果。
这里,完成任务不一定代表成功的完成任务,也可能由于各种原因造成任务失败,在任务结束后,无论成功或失败,均将完成消息通过消息队列发送给调度设备。因此,可以在完成消息中携带任务信息,包括任务成功信息或任务失败信息等,以便调度设备发送给客户端后,客户端依据任务信息判断完成任务或重新发送任务指令。
实施例二
如图2所示,本申请实施例提供另一种任务调度方法,包括:
S201:调度设备接收客户端发来的任务指令。
S202:调度设备生成任务标识信息。
由于在本申请实施例提供的任务调度方法中,执行设备可以同时执行两个以上的任务,为了对每个任务进行区分,调度设备在接收到任务指令时,为每个任务生成任务标识信息,例如,可以为每个任务生成任务编号或任务编码。并且任务标识信息携带于所述调度设备和所述执行设备与所述消息队列之间交互的每个消息中,在每个任务之间进行区分。
S203:调度设备生成并发送任务开始消息至消息队列。
为了对每个任务的任务开始消息进行区分,任务开始消息中可以携带上述任务标识信息。有些任务需要客户端发来的输入数据才可以执行,因此,调度设备接收的任务指令中携带有完成任务所需的输入数据,调度设备生成的任务开始消息中也携带了上述输入数据。
S204:调度设备获取预设时长阈值,并根据任务标识信息,在主线程管理器中注册任务的主线程上下文。
在生成并发送任务开始消息至消息队列之后,调度设备根据任务标识信息,在主线程管理器中注册任务的主线程上下文,并阻塞主线程。为了防止后续步骤出现错误导致该调度设备的主线程一直处于等待状态,调度设备获取预设时长阈值,根据当前时间与发送任务开始消息的时间确定间隔时长,并不断判断间隔时长是否达到预设时长阈值,当达到预设时长阈值且未接收到所述完成消息时,将执行失败信息作为所述执行结果发送给所述客户端。
S205:所述执行设备从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从消息队列中抓取下一个消息。
在执行任务的过程中,一般会要求保存任务数据,以便后来针对任务数据进行查询、核对、统计等操作,执行设备在抓取任务开始消息后,将任务开始消息中可能携带的任务标识信息和输入数据存储到数据库中。
这里,生成并发送的任务执行消息中也携带有任务标识信息,并且在执行任务需要中间数据的情况下,任务执行消息还可以携带执行设备生成的中间数据。
S206:所述调度设备从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据。
由调度设备代替执行设备进行与外部服务器的交互,从而防止避免任务服务器耗费大量时间等待外部服务器的响应,使执行设备可以同时进行多个任务,大幅提升服务提供方的任务吞吐量。
S207:调度设备在接收到所述服务数据时,将所述服务数据发送给所述消息队列。
为了区别每个任务及该任务对应的服务数据,将服务数据及对应的任务标识信息一同发送给消息队列。
S208:执行设备从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备。
执行设备在接收服务数据的同时,也接收任务标识信息,根据服务数据完成上述任务标识信息对应的任务。优选的,执行设备将所述完成消息通过所述消息队列以广播模式发送给所述调度设备。这里,完成消息中也携带有任务标识信息。
S209:调度设备在接收到所述完成消息时,向所述客户端发送执行结果。
在发送执行结果之前,调度设备根据任务标识信息从主线程管理器中取出主线程上下文,并唤醒主线程,使主线程得以继续执行下去。
实施例三
本申请实施例还提供一种任务调度方法,应用于调度设备,包括:
调度设备在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列;
所述调度设备从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列。
一种可能的实施方式中,调度设备在收到客户端发来的任务指令之后,生成并发送任务开始消息至消息队列之前,任务调度方法,还包括:
调度设备判断是否达到预设时长阈值,当达到预设时长阈值且未接收到所述完成消息时,将执行失败信息作为所述执行结果发送给所述客户端。
实施例四
本申请实施例还提供一种任务调度方法,应用于执行设备,包括:
执行设备从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从所述消息队列中抓取下一个消息。
所述执行设备从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备,并由所述调度设备在接收到所述完成消息时,向所述客户端发送执行结果
一种可能的实施方式中,执行设备将所述完成消息通过所述消息集合以广播模式发送给所述调度设备。
基于相同的设计构思,本申请实施例还提供一种任务调度系统、装置、存储介质及电子设备。
实施例五
本申请实施例还提供一种任务调度系统,如图3所示任务调度系统300包括:调度设备301、消息队列302和执行设备303;
所述调度设备301通过所述消息队列302与所述执行设备303连接;
所述调度设备301连接客户端304和外部服务器305。
这里,调度设备301、消息队列302和执行设备303均可采用分布式计算设备实现,并且根据不同的需求,调度设备301、消息队列302和执行设备303均可采用两个以上分布式计算设备实现。调度设备301可以包括实现本申请实施例提供的任务调度方法中不同步骤的子调度设备,执行设备303也可以包括执行任务的不同步骤和实现本申请实施例提供的任务调度方法中不同步骤的子执行设备。
所述调度设备301用于在收到客户端304发来的任务指令时,生成并发送任务开始消息至消息队列302;用于从所述消息队列302中抓取到所述任务执行消息时,向外部服务器305发送服务请求,等待接收所述外部服务器305返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列302;还用于在接收到所述完成消息时,向所述客户端304发送执行结果;
所述执行设备303用于从所述消息队列302中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列302,之后继续从消息队列302中抓取下一个消息;还用于从所述消息队列302中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备301;
所述消息队列302用于在所述调度设备301和所述执行设备303之间进行每个消息的转发。
实施例六
以常用的支付中的支付信息认证任务为例,如图4所示,完成支付信息认证任务一般需要交易服务器411、支付服务器412和金融网关服务器413三种执行设备401。交易服务器411的边界定位为接收所有的用户交易任务的客户端指令,包括充值、提现、转账、身份认证、支付信息认证等的所有用户交易任务都要先请求到交易服务器411,并将任务请求数据保存到数据库。支付服务器412的边界定位是任何收取用户费用或银行收取支付公司费用的交易都要通过支付服务器412请求统一支付,并将支付数据做统一的沉淀存储,以便日后做结算使用。金融网关服务器413是与银行提供的外部服务器进行交互的网关。
客户端402在发起支付任务时,首先需要向执行设备401中的交易服务器411发送认证任务指令,交易服务器411同步向支付服务器412发起认证任务请求,支付服务器412收到交易服务器411发起的认证任务请求后,同步向金融网关服务器413发起认证任务请求,最后由收到支付服务器412发来的认证任务请求的金融网关服务器413向外部服务器403发送支付信息认证请求,例如银行提供的外部服务器发送支付信息认证请求。外部服务器403对支付信息进行认证后,向执行设备401中的金融网关服务器413返回认证结果,收到认证结果的金融网关服务器413通过支付服务器412将认证结果返回给交易服务器411,再由交易服务器411将认证结果返回给客户端402。
客户端402、交易服务器411、支付服务器412、金融网关服务器413和外部服务器403之间的每一步数据交互均同步实现。这里,同步是指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系,也就是说,客户端402、交易服务器411、支付服务器412、金融网关服务器413和外部服务器403的每一次数据交互在时间上是同步关系。并且由于交易服务器411、支付服务器412和金融网关服务器413的认证任务均需要依赖外部服务器的返回结果才能完成。因此,交易服务器411、支付服务器412和金融网关服务器413在整个支付信息认证过程中均处于阻塞状态,需等待外部服务器403返回认证结果完成此次认证任务后,才能进行其他任务。如果外部服务器403响应时间较长,且无法通过优化外部服务器403的接口性能减少响应时间的情况下,交易服务器411、支付服务器412和金融网关服务器413势必需要等待较长时间获取认证结果。
由于在分布式系统中,执行设备401中的交易服务器411、支付服务器412和金融网关服务器413不仅承担支付任务这一个任务,还承担充值、提现、冻结、转账等任务,且不止接收一个客户端402的发起的任务指令,而是需要接收两个以上客户端402的发起的任务指令,满足两个以上客户端402执行任务的需求。因此,交易服务器411、支付服务器412和金融网关服务器413的阻塞耗时会极大影响执行设备的任务吞吐量,甚至最终导致耗尽服务提供方的系统资源,无法继续提供服务。
实施例四以如图4所示的实现支付中的支付信息认证任务的执行设备为例,提供了一种应用于实现该支付信息认证任务的任务调度系统,在实现支付信息认证任务核心功能的包括交易服务器411、支付服务器412和金融网关服务器413的执行设备401的基础上,增加调度设备501和消息队列502,形成如图5所示的任务调度系统。
为了更好地执行支付信息认证任务,使用前置调度设备511和后置调度设备512实现如图5所示的任务调度系统的调度设备501,其中前置调度设备511用于实现与客户端402之间的交互过程,用于实现客户端402与交易服务器411之间的解耦合,使交易服务器411无需维持阻塞线程直至支付任务的完成,从而增加了交易服务器411的任务吞吐量。后置调度设备512用于实现与外部服务器403之间的交互过程,实现了外部服务器403与金融网关服务器413之间的解耦合,使金融网关服务器413无需等待外部服务器403的响应,提升了金融网关服务器413的任务吞吐量。前置调度设备511、后置调度设备512、交易服务器411、支付服务器412和金融网关服务器413均与消息队列502连接,通过消息队列502实现每个设备之间的消息交互,将时间上同步的交互过程变为异步的交互过程,执行设备401和调度设备501执行完自己需执行的步骤后,将执行结果发送给消息队列502,消息队列502再将执行结果发送给执行下一步骤的设备,完成自己需执行的步骤的执行设备401和调度设备501发送执行结果给消息结合502后,即可接收其他任务消息或任务指令,执行其他任务,从而可以实现多个任务的并行执行。
如图5所示,使用本示例的任务调度系统实现本申请实施例提供的任务调度方法和执行支付任务的步骤包括:
S501:前置调度设备511接收客户端402发来的认证指令。
这里,认证指令是用于指示支付信息认证任务开始执行的任务指令。在实际实施时,任务指令可以携带执行任务必须的输入数据,例如任务指令可以根据需要携带区分不同用户的用户标识信息、区分不同客户端的客户端标识信息,或者区分不同应用平台的平台标识信息等。具体的,本示例客户端402发来的认证指令用于进行支付信息认证任务,可以携带支付信息,例如,携带用户的身份信息,例如姓名、身份证号、手机号、银行卡信息等。
S502:前置调度设备511在接收到客户端402发来的认证指令时,生成任务标识信息。
每个任务标识信息是唯一的,且任务标识信息与任务一一对应,任务标识信息用于区分每个任务。
S503:前置调度设备511发送携带有任务标识信息的任务开始消息给消息队列502。
当任务指令携带有执行任务必须的输入数据时,任务开始消息在携带任务标识信息的基础上,还可以携带有任务指令携带的输入数据。在本示例中,任务开始消息除了携带任务标识信息,还携带有认证指令携带的支付信息。
S504:前置调度设备511获取预设时长阈值。
为了防止外部服务器403宕机、掉线等意外情况造成等待服务响应的时间过长,客户端402一直处于等待任务响应的状态,因此,前置调度设备511获取预设时长阈值,当达到预设时长阈值且未接收到所述完成消息时,前置调度设备511将执行失败信息作为所述执行结果发送给所述客户端402。客户端402接收到执行失败信息后,可以选择重新发起任务指令,或者将执行失败信息显示给用户,以便用户执行下一步操作。
当使用线程进行任务管理时,前置调度设备511在接收到客户端402发来的认证指令后,需要将主线程上下文注册到主线程任务管理器,并阻塞主线程等待完成整个身份信息认证过程,直至达到预设时长阈值。这里,主线程上下文为线程上下文中的一种,线程上下文为一个线程的阻塞唤醒装置,用于阻塞线程和唤醒线程。
为了防止后续的执行设备401或调度设备501组成的设备链路可能存在的执行失败情况,导致主线程永远无法被唤醒,甚至最终耗尽前置调度设备511的资源。当达到预设时长阈值且未接收到所述完成消息时,则会从主线程管理器中移除该主线程上下文,并唤醒主线程。
S505:交易服务器411从消息队列502中抓取前置调度设备511发送的任务开始消息。
这里,交易服务器411通常为用于实现交易系统的分布式计算设备集群中的分布式计算设备。
S506:交易服务器411在抓取到任务开始消息时,将任务开始消息中的任务标识信息存储到数据库。
由于交易服务器411无需等待当前的身份信息认证任务结束,可以同时执行两个以上任务,为了区分每个任务,将任务标识信息存储到数据库中,当收到当前身份信息认证任务需要的认证结果时,根据任务标识信息可以确定认证结果对应的身份信息认证任务。在实际实施时,除了任务标识信息,也可以将输入数据存储到数据库。
S507:交易服务器411将第一任务消息发送给消息队列502。
第一任务消息可以携带任务标识信息和第一任务数据,这里的第一任务数据根据不同的任务确定,可以是交易服务器411等执行设备401根据输入数据或任务需要确定的第一任务数据,也可以直接将输入数据作为第一任务数据转发。若任务的执行过程中不需要第一任务数据,交易服务器411发送的第一任务消息中也可以不携带第一任务数据,交易服务器411发送的第一任务消息中需要携带任务标识信息。在发送第一任务消息给消息队列502后,交易服务器继续从消息队列502中抓取下一个消息。
S508:支付服务器412从消息队列502中抓取交易服务器411发送的第一任务消息。
这里,支付服务器412通常为用于实现统一支付系统的分布式计算设备集群中的分布式计算设备。
S509:支付服务器412在抓取到第一任务消息时,将任务消息中的任务标识信息存储到数据库。
在实际实施时,除了任务标识信息,如果第一任务消息中还携带有第一任务数据,也可以将第一任务数据也存储到数据库。
S510:支付服务器412将第二任务消息发送给消息队列502。
同样的,第二任务消息可以携带任务标识信息和第二任务数据,第二任务数据可以为支付服务器412等执行设备401根据输入数据、第一任务数据或任务需要确定的第二任务数据,也可以直接将输入数据或第一任务数据作为第二任务数据转发。若任务的执行过程中不需要第二任务数据,交易服务器411发送的第二任务消息中也可以不携带第二任务数据,第二任务消息中需要携带任务标识信息。
支付服务器412将第二任务消息发送给消息队列502后,继续从消息队列502中抓取下一个消息。
S511:金融网关服务器413从消息队列502中抓取支付服务器412发送的第二任务消息。
这里,金融网关服务器413通常为用于实现金融网关系统的分布式计算设备集群中的分布式计算设备。
S512:金融网关服务器413在接受到交易服务器411通过消息队列502发送的第二任务消息时,将任务消息中的任务标识信息存储到数据库。
在实际实施时,除了任务标识信息,在第二任务消息中携带有第二任务数据的情况下,可以将第二任务数据也存储到数据库。
S513:金融网关服务器413将第三任务消息发送给消息队列502。
同样的,第三任务消息中可以携带任务标识信息和第三任务数据,第三任务数据可以为支付服务器412等执行设备401根据输入数据、第一任务数据、第二任务数据或任务需要确定的第三任务数据,也可以直接将输入数据、第一任务数据第二任务数据或作为第三任务数据转发。若任务的执行过程中不需要第三任务数据,交易服务器411发送的第三任务消息中也可以不携带第三任务数据,第三任务消息中需要携带任务标识信息。
这里,第三任务消息是调度设备501从执行设备401接收的任务执行消息。实际实施时,依据具体情况,第一任务消息、第二任务消息和第三任务消息都可以是任务执行消息。
金融网关服务器413将第三任务消息发送给消息队列502后,可以继续从消息队列502中抓取下一个消息。
S514:后置调度设备512从消息队列502中抓取金融网关服务器413发来的第三任务消息。
后置调度设备512通常为用于实现调度设备501的分布式计算设备集群中的分布式计算设备。
S515:后置调度设备512向银行提供的进行支付信息认证的外部服务器403发送服务请求。
这里,发送的服务请求无需携带用于内部识别任务的任务标识信息,但是在第三任务消息中携带有第三任务数据的情况下,需要携带执行支付信息认证任务所需的第三任务数据。之后,等待外部服务器403的响应。
S516:外部服务器403依据第三任务数据进行支付信息认证,并返回认证结果给后置调度设备512。
这里,认证结果为外部服务器返回的服务数据。
S517:后置调度设备512将认证结果和任务标识信息发送给消息队列502。
这里的认证结果和任务标识信息对应于同一个支付信息认证任务。
S518:金融网关服务器413从消息队列502中抓取认证结果和任务标识信息。
S519:金融网关服务器413将认证结果和任务标识信息发送给消息队列502。
S520:支付服务器412从消息队列502中抓取认证结果和任务标识信息。
S521:支付服务器412依据认证结果更新数据库中发起此支付信息认证任务的客户端402对应的用户的认证状态。
S522:支付服务器412将认证结果和任务标识信息发送给消息队列502。
S523:交易服务器411从消息队列502中抓取认证结果和任务标识信息。
S524:交易服务器411将完成消息发送给消息队列502。
完成消息中通常携带了认证结果和任务标识信息。这里,认证结果可以是认证成功的结果,也可以是认证失败的结果。
S525:消息队列502将完成消息转发给前置调度设备511。
具体的,由于分布式系统通常会部署两个以上的分布式计算设备,从而达到服务高可用的目的,因此在分布式系统中,消息队列向不同的认证设备101或调度设备501发送消息等有两种方式,分别是集群模式和广播模式。集群模式是针对一个目标计算设备发送消息,而广播模式是针对分布式系统中的每个分布式计算设备均发送消息。由于前置调度设备511也通常采用分布式计算设备实现,为了服务高可用任务调度系统中会部署两个以上的分布式计算设备作为前置调度设备511,在客户端402发来认证指令时,会随机的请求到某一个前置调度设备511,并由该前置调度设备511阻塞其主线程,将主线程上下文注册到该前置调度设备511的主线程管理器中,因此,在接受到认证结果后,需要向该前置调度设备511发送完成消息从而唤醒其被阻塞的主线程。然而分布式系统中,一个计算设备集群向另一个计算设备集群模式消息,例如消息队列502向前置调度设备511发送完成消息时,将完成消息发送给计算设备集群中的哪个设备是随机的,因此,为了保证阻塞了主线程的该前置调度设备511可以接收到完成消息,从而唤醒被阻塞的主线程,需要使用广播模式实现消息队列502向前置调度设备511发送完成消息的过程。也就是说,执行设备需要将完成消息通过消息队列以广播模式发送给调度设备。而本示例中,由于分布式系统消息、信息或数据发送、接收和处理的特点,其他的消息队列502向某一执行设备401或调度设备501发送消息、信息或数据的过程则无需保证某一个执行设备401或调度设备501收到消息、信息或数据。因此,本示例中,其他的消息队列502向某一执行设备401或调度设备501发送消息、信息或数据的过程,均可采用集群模式实现。这里,集群模式的消息发送,就是上述每个执行设备401或调度设备501从消息队列502中抓取消息的过程。
S526:前置调度设备511根据任务标识信息从主线程管理器中取出主线程上下文。
也就是说,前置调度设备511根据任务标识信息将此支付信息认证任务的主线程从阻塞状态中唤醒。唤醒主线程后,如果主线程上下文不为空,继续执行主线程中接下来的任务,并从主线程管理器中删除该主线程上下文。
S527:前置调度设备511向客户端402返回认证结果。
本申请实施例提供的任务调度系统增加了调度设备501和消息队列502,具体的,在示例中,具体增加了前置调度设备511、后置调度设备512和消息队列502,前置调度设备511用来作为客户端402请求后端服务的接入代理层,后置调度设备512直接与外部服务器403的长耗时的接口服务对接,当前置调度设备511接收到客户端402发送的任务指令后,前置调度设备511先生成一个唯一的任务标识信息,并将当前主线程上下文注册到主线程管理器中,一般来说,主线程管理器实际上采用一个哈希表(HashMap)实现,在主线程管理器中以前置调度设备511生成的任务标识信息为键值,以当前主线程上下文为数据值,将主线程上下文存储到主线程管理器的哈希表中。前置调度设备511将携带生成的任务标识信息及任务数据发送到消息队列502中,例如,可以发送到消息队列或消息中间件,之后阻塞主线程,并设置预设时间阈值。前置调度设备511发送到消息队列502的消息,通过消息队列502异步发送给后端的执行设备401。执行设备401抓取到消息队列502的数据后,保存任务标识信息及任务数据到数据库,同样携带任务标识信息及任务数据在各个执行设备401中进行异步发送和接收,直到发送到后置调度设备512,并由后置调度设备512发送任务数据至外部服务器403,最终接收外部服务器403同步返回的认证结果,然后再通过消息队列502将认证结果及前置调度设备511原先生成的任务标识信息原路反方向返回,最后前置调度设备511根据任务标识信息从主线程管理器中取出主线程上线文,从主线程管理器中注销该主线程上下文,并唤醒主线程往下继续执行,向客户端402返回认证结果。因分布式的线上环境中前置调度设备511会部署多台服务器,这里利用了消息队列502以广播模式发送任务标识信息和认证结果,线上的每个前置调度设备511都会收到后端回调的任务标识信息和认证结果,只有主线程管理器中存在以任务标识信息为键值存储的朱线程上下文的前置调度设备511,才会唤醒主线程继续执行,如果不存在,则将携带任务标识信息和认证结果的该消息废弃。
通过增加前置调度设备511和后置调度设备512,并将前置调度设备511、后置调度设备512通过消息队列502与执行设备401交互,可以方便地将数据统一沉淀到执行设备401的数据库中。进一步的,因前置调度设备511、后置调度设备512与执行设备401采用异步方式进行通信,因此,在整个任务执行过程中只需阻塞前置调度设备511,而不会阻塞执行设备401,从而不会影响执行设备401的任务吞吐量。
在一种可能的实施方式中,任务调度系统单独由调度设备实现,调度设备与执行设备相互独立,调度设备专门用于与外部服务器对接,解决外部服务器响应缓慢的问题。这种实施方式也可以避免执行设备耗费大量时间等待外部服务器的响应的问题。但这种实施方式不符合分布式服务的设计原则,而且导致分布式计算设备集群的业务边界模糊。进一步的,执行设备与外部服务器之间通常需要进行数据交换,并且通常需要将执行设备与外部服务器的交互数据记录到服务器,采用独立的调度设备,执行设备需要首先将交互的数据发送给调度设备,并且在任务执行过程中,可能还需要不断进行数据交互,数据交互过程会复杂化。并且,执行设备与外部服务器之间的交互数据通常需要保存到数据库,以便后续计算、处理、统计或进行结算等业务使用,所以调度设备与执行设备相互独立,会把本应汇集的数据分散开,导致数据库建立过程混乱和复杂化,不符合分布式服务的设计原则。因此,本申请实施例优选的采用包括调度设备、消息队列和执行设备的任务调度系统。
实施例七
如图6所示,本申请实施例还提供一种任务调度装置600,应用于调度设备,包括:
发送模块601,用于生成并发送所述任务开始消息至消息队列;用于向外部服务器发送服务请求;用于从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求;用于在接收到所述服务数据时,将所述服务数据发送给所述消息队列;还用于在接收到完成消息时,向所述客户端发送执行结果;
接收模块602,用于从所述消息队列中抓取所述任务执行消息;用于等待接收所述外部服务器返回的服务数据;还用于通过所述消息队列接收所述完成消息。
一种可能的实施方式中,任务调度装置600,还包括计时模块603,用于:
根据当前时间与发送任务开始消息的时间确定间隔时长,所述调度设备判断所述间隔时长是否达到预设时长阈值,当达到所述预设时长阈值且未接收到所述完成消息时,将执行失败信息作为所述执行结果发送给所述客户端。
一种可能的实施方式中,任务调度装置600,还包括标识生成模块604,用于:生成任务标识信息;所述任务标识信息携带于所述调度设备和所述执行设备与所述消息队列之间交互的每个消息中。
一种可能的实施方式中,任务调度装置600,还包括线程管理模块605,用于:根据所述任务标识信息,在主线程管理器中注册任务的主线程上下文;还用于根据所述任务标识信息从所述主线程管理器中取出所述主线程上下文。
实施例八
如图7所示,本申请实施例还提供一种任务调度装置700,应用于执行设备,包括:
接收模块701,用于从消息队列中抓取任务开始消息;还用于从所述消息队列中抓取服务数据;
任务完成模块702,用于根据所述服务数据完成任务;
发送模块703,用于生成并发送任务执行消息至所述消息队列;还用于通过所述消息队列将完成消息发送给所述调度设备。
一种可能的实施方式中,发送模块703,还用于:
将所述完成消息通过所述消息队列以广播模式发送给所述调度设备。
实施例九
一种计算机可读介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行本申请实施例三或实施例四提供的任务调度方法的步骤。实际应用中,所述的计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或多个程序被执行时,实现根据参考实施例七或实施例八提供的装置进行本申请实施例三或实施例四提供的任务调度方法的步骤。
根据本申请公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本申请保护的范围。在本申请公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本申请所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌微控制器等来实现。因此这种可以实现本申请所述方法的硬件也可以构成本申请。
实施例八
本申请实施例还提供一种电子设备,可以是计算机或服务器,其中可以集成本申请上述装置实施例七或实施例八的装置。如图8所示,其示出了本申请实施例提供的电子设备800。
该电子设备可以包括一个或者一个以上处理核心的处理器801、一个或一个以上计算机可读存储介质802。该电子设备还可以包括电源803、输入输出单元804。本领域技术人员可以理解,图8中并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中:
处理器801是该电子设备的控制部分,利用各种接口和线路连接各个部分,通过运行或执行存储在计算机可读存储介质802中的软件程序,执行本申请实施例三或实施例四提供的任务调度方法的步骤。
计算机可读存储介质802可用于存储软件程序,即本申请实施例三或实施例四提供的任务调度方法中涉及的程序。
处理器801通过运行存储在计算机可读存储介质802的软件程序,从而执行各种功能应用以及数据处理。计算机可读存储介质802可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据电子设备需要使用的数据等。此外,计算机可读存储介质802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,计算机可读存储介质802还可以包括存储器控制器,以提供处理器801对计算机可读存储介质802的访问。
电子设备还包括给各个部件供电的电源803,优选的,电源803可以通过电源管理系统与处理器801逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源803还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入输出单元804,比如可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入;比如可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
本申请附图中的流程图和框图,示出了按照本申请公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本申请中。特别地,在不脱离本申请精神和教导的情况下,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本申请公开的范围。
本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思路,并不用于限制本申请。对于本领域的技术人员来说,可以依据本申请的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种任务调度方法,其特征在于,包括:
调度设备在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列;
执行设备从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从所述消息队列中抓取下一个消息;
所述调度设备从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列;
所述执行设备从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备,并由所述调度设备在接收到所述完成消息时,向所述客户端发送执行结果。
2.根据权利要求1所述的方法,其特征在于,所述调度设备在收到客户端发来的任务指令时,所述生成并发送任务开始消息至消息队列的步骤之后,所述方法还包括:
根据当前时间与发送任务开始消息的时间确定间隔时长,所述调度设备判断所述间隔时长是否达到预设时长阈值,当达到所述预设时长阈值且未接收到所述完成消息时,将执行失败信息作为所述执行结果发送给所述客户端。
3.根据权利要求1所述的方法,其特征在于,所述通过所述消息队列将完成消息发送给所述调度设备的步骤为:
将所述完成消息通过所述消息队列以广播模式发送给所述调度设备。
4.根据权利要求1所述的方法,其特征在于,所述调度设备在收到客户端发来的任务指令时,所述生成并发送任务开始消息至消息队列的步骤之前,所述方法还包括:
生成任务标识信息;所述任务标识信息携带于所述调度设备和所述执行设备与所述消息队列之间交互的每个消息中。
5.根据权利要求4所述的方法,其特征在于,所述调度设备在收到客户端发来的任务指令时,所述生成并发送任务开始消息至消息队列的步骤之后,所述方法还包括:
根据所述任务标识信息,在主线程管理器中注册任务的主线程上下文;
所述调度设备在接收到所述完成消息时,所述向所述客户端发送执行结果的步骤之前,所述方法还包括:
根据所述任务标识信息从所述主线程管理器中取出所述主线程上下文。
6.一种任务调度系统,其特征在于,包括:调度设备、消息队列和执行设备;
所述调度设备通过所述消息队列与所述执行设备连接,所述调度设备连接客户端和外部服务器;
所述调度设备用于在收到所述客户端发来的任务指令时,生成并发送任务开始消息至所述消息队列;用于从所述消息队列中抓取到任务执行消息时,向所述外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列;还用于在接收到完成消息时,向所述客户端发送执行结果;
所述执行设备用于从所述消息队列中抓取到所述任务开始消息时,生成并发送所述任务执行消息至所述消息队列,之后继续从所述消息队列中抓取下一个消息;还用于从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将所述完成消息发送给所述调度设备;
所述消息队列用于在所述调度设备和所述执行设备之间进行每个消息的转发。
7.一种任务调度装置,其特征在于,应用于调度设备,包括:
发送模块,用于生成并发送任务开始消息至消息队列;用于向外部服务器发送服务请求;用于从所述消息队列中抓取到所述任务执行消息时,向所述外部服务器发送所述服务请求;用于在接收到服务数据时,将所述服务数据发送给所述消息队列;还用于在接收到完成消息时,向客户端发送执行结果;
接收模块,用于从所述消息队列中抓取所述任务执行消息;用于等待接收所述外部服务器返回的所述服务数据;还用于通过所述消息队列接收所述完成消息。
8.一种任务调度装置,其特征在于,应用于执行设备,包括:
接收模块,用于从消息队列中抓取任务开始消息;还用于从所述消息队列中抓取服务数据;
任务完成模块,用于根据所述服务数据完成任务;
发送模块,用于生成并发送任务执行消息至所述消息队列;还用于通过所述消息队列将完成消息发送给调度设备。
9.一种任务调度方法,其特征在于,应用于调度设备,包括:
调度设备在收到客户端发来的任务指令时,生成并发送任务开始消息至消息队列;
所述调度设备从所述消息队列中抓取到所述任务执行消息时,向外部服务器发送服务请求,等待接收所述外部服务器返回的服务数据,并在接收到所述服务数据时,将所述服务数据发送给所述消息队列。
10.一种任务调度方法,其特征在于,应用于执行设备,包括:
执行设备从所述消息队列中抓取到所述任务开始消息时,生成并发送任务执行消息至所述消息队列,之后继续从所述消息队列中抓取下一个消息;
所述执行设备从所述消息队列中抓取到所述服务数据时,根据所述服务数据完成任务,通过所述消息队列将完成消息发送给所述调度设备,并由所述调度设备在接收到所述完成消息时,向所述客户端发送执行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910981287.3A CN111221662B (zh) | 2019-10-16 | 2019-10-16 | 任务调度方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910981287.3A CN111221662B (zh) | 2019-10-16 | 2019-10-16 | 任务调度方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111221662A true CN111221662A (zh) | 2020-06-02 |
CN111221662B CN111221662B (zh) | 2021-01-05 |
Family
ID=70810682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910981287.3A Active CN111221662B (zh) | 2019-10-16 | 2019-10-16 | 任务调度方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221662B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181990A (zh) * | 2020-10-15 | 2021-01-05 | 金蝶云科技有限公司 | 一种临时表重用的方法及装置 |
CN112181617A (zh) * | 2020-09-17 | 2021-01-05 | 东北大学 | 一种基于特定索引结构的高效调度算法 |
CN112559461A (zh) * | 2020-12-26 | 2021-03-26 | 中国建设银行股份有限公司 | 文件传输方法及装置、存储介质及电子设备 |
CN113254184A (zh) * | 2021-06-11 | 2021-08-13 | 中移(杭州)信息技术有限公司 | 任务调度方法、装置、调度系统以及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000056992A (ja) * | 1998-08-13 | 2000-02-25 | Nec Corp | タスクスケジューリングシステム、方法及び記録媒体 |
CN102012808A (zh) * | 2010-11-10 | 2011-04-13 | 上海光芒科技有限公司 | 云计算环境下的基于soa的可扩展的分布式架构 |
CN103347053A (zh) * | 2013-06-19 | 2013-10-09 | 成都市欧冠信息技术有限责任公司 | 基于管道技术的远程协同处理过程调用方法 |
CN104615487A (zh) * | 2015-01-12 | 2015-05-13 | 中国科学院计算机网络信息中心 | 并行任务优化系统和方法 |
US20150205633A1 (en) * | 2013-05-24 | 2015-07-23 | Google Inc. | Task management in single-threaded environments |
CN105005469A (zh) * | 2015-06-03 | 2015-10-28 | 浙江大学 | 一种基于Zookeeper和RabbitMQ的非阻塞调用方法 |
CN105391683A (zh) * | 2015-09-30 | 2016-03-09 | 小米科技有限责任公司 | 远程方法调用的方法、装置及系统 |
CN105653365A (zh) * | 2016-02-22 | 2016-06-08 | 青岛海尔智能家电科技有限公司 | 任务处理方法及装置 |
US20160381182A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | De-duplicating remote procedure calls |
US20170034310A1 (en) * | 2015-07-29 | 2017-02-02 | Netapp Inc. | Remote procedure call management |
CN107066339A (zh) * | 2016-12-14 | 2017-08-18 | 中国航空结算有限责任公司 | 分布式作业管理器及分布式作业管理方法 |
CN107247634A (zh) * | 2017-06-06 | 2017-10-13 | 广州视源电子科技股份有限公司 | 一种机器人动态异步远程过程调用的方法和装置 |
-
2019
- 2019-10-16 CN CN201910981287.3A patent/CN111221662B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000056992A (ja) * | 1998-08-13 | 2000-02-25 | Nec Corp | タスクスケジューリングシステム、方法及び記録媒体 |
CN102012808A (zh) * | 2010-11-10 | 2011-04-13 | 上海光芒科技有限公司 | 云计算环境下的基于soa的可扩展的分布式架构 |
US20150205633A1 (en) * | 2013-05-24 | 2015-07-23 | Google Inc. | Task management in single-threaded environments |
CN103347053A (zh) * | 2013-06-19 | 2013-10-09 | 成都市欧冠信息技术有限责任公司 | 基于管道技术的远程协同处理过程调用方法 |
CN104615487A (zh) * | 2015-01-12 | 2015-05-13 | 中国科学院计算机网络信息中心 | 并行任务优化系统和方法 |
CN105005469A (zh) * | 2015-06-03 | 2015-10-28 | 浙江大学 | 一种基于Zookeeper和RabbitMQ的非阻塞调用方法 |
US20160381182A1 (en) * | 2015-06-26 | 2016-12-29 | International Business Machines Corporation | De-duplicating remote procedure calls |
US20170034310A1 (en) * | 2015-07-29 | 2017-02-02 | Netapp Inc. | Remote procedure call management |
CN105391683A (zh) * | 2015-09-30 | 2016-03-09 | 小米科技有限责任公司 | 远程方法调用的方法、装置及系统 |
CN105653365A (zh) * | 2016-02-22 | 2016-06-08 | 青岛海尔智能家电科技有限公司 | 任务处理方法及装置 |
CN107066339A (zh) * | 2016-12-14 | 2017-08-18 | 中国航空结算有限责任公司 | 分布式作业管理器及分布式作业管理方法 |
CN107247634A (zh) * | 2017-06-06 | 2017-10-13 | 广州视源电子科技股份有限公司 | 一种机器人动态异步远程过程调用的方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181617A (zh) * | 2020-09-17 | 2021-01-05 | 东北大学 | 一种基于特定索引结构的高效调度算法 |
CN112181617B (zh) * | 2020-09-17 | 2024-05-17 | 东北大学 | 一种基于特定索引结构的高效调度算法 |
CN112181990A (zh) * | 2020-10-15 | 2021-01-05 | 金蝶云科技有限公司 | 一种临时表重用的方法及装置 |
CN112559461A (zh) * | 2020-12-26 | 2021-03-26 | 中国建设银行股份有限公司 | 文件传输方法及装置、存储介质及电子设备 |
CN113254184A (zh) * | 2021-06-11 | 2021-08-13 | 中移(杭州)信息技术有限公司 | 任务调度方法、装置、调度系统以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111221662B (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221662B (zh) | 任务调度方法、系统及装置 | |
CN101365999B (zh) | 发送完成事件批处理 | |
CN106357811B (zh) | 一种备份数据的删除方法、装置及系统 | |
CN111782365B (zh) | 定时任务处理方法、装置、设备及存储介质 | |
CN105229989B (zh) | 针对移动设备的节能数据处理方法、存储介质和系统 | |
US20170047069A1 (en) | Voice processing method and device | |
CN105187327A (zh) | 一种分布式消息队列中间件 | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
CN106776395B (zh) | 一种共享集群的任务调度方法及装置 | |
CN107193672B (zh) | 一种跨区块异步调用合约系统 | |
CN104303149A (zh) | 用于调度便携式计算设备中的请求的方法和系统 | |
CN103716397B (zh) | 一种面向服务仿真时钟推进方法 | |
CN110740145A (zh) | 消息消费方法、装置、存储介质及电子设备 | |
CN101179553A (zh) | 用于并行消息的有效保序传递的方法和装置 | |
CN105308566B (zh) | 请求式可扩展定时器轮 | |
CN103618590A (zh) | 一种事务处理过程的超时控制方法和装置 | |
CN106354566A (zh) | 一种命令处理的方法以及服务器 | |
CN111913793A (zh) | 分布式任务调度方法、装置、节点设备和系统 | |
CN112311597A (zh) | 消息推送方法和装置 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN115576684A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN117480067A (zh) | 电动车辆充电管理和客户端设备 | |
CN107391274A (zh) | 离线消息的处理方法及装置 | |
CN111985634B (zh) | 神经网络的运算方法、装置、计算机设备及存储介质 | |
CN106550021B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200702 Address after: 100085 Floor 102-1, Building No. 35, West Second Banner Road, Haidian District, Beijing Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd. Address before: 300 280 Tianjin Economic and Technological Development Zone Nangang Industrial Zone Office Building C Block 1, Room 112, Unit 05 Applicant before: BEIKE TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |