CN112181627A - 定时任务调度方法、装置及系统 - Google Patents
定时任务调度方法、装置及系统 Download PDFInfo
- Publication number
- CN112181627A CN112181627A CN202011158217.7A CN202011158217A CN112181627A CN 112181627 A CN112181627 A CN 112181627A CN 202011158217 A CN202011158217 A CN 202011158217A CN 112181627 A CN112181627 A CN 112181627A
- Authority
- CN
- China
- Prior art keywords
- executor
- client
- timing task
- center module
- message
- 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.)
- Pending
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/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
- 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/505—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 load
-
- 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/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供一种定时任务调度方法、装置及系统。该方法包括:调度中心模块确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务;调度中心模块在第一定时任务的启动时刻,按照第一定时任务的预设路由策略,从第一客户端执行器和第二客户端执行器中选择用于执行第一定时任务的目标客户端执行器;调度中心模块向目标客户端执行器发送第一消息,第一消息用于通知目标客户端执行器执行第一定时任务;调度中心模块从目标客户端执行器接收第二消息,第二消息携带有第一定时任务的执行结果。从而,解耦定时任务的调度逻辑与业务处理,使得定时任务能够顺利执行,提高了应用系统的可用性和稳定性。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种定时任务调度方法、装置及系统。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。在业务场景中,应用软件常常需要在特定时刻周期性地执行某些操作,定时任务解决的就是这种业务场景。例如,根据业务数据定时生成业务报表、根据磁盘压力定时删除文件、定时对账、定时更新缓存数据、定时评估企业风险、定时上传某企业的用户数据等。
应用软件会将开发好的定时任务同时部署到多台服务器上进行执行。当其中一台服务器宕机后,启动另一台服务器继续执行定时任务,以完成定时任务对应的业务处理。
目前,一般使用Quartz(开源项目)开发好定时任务,并将Quartz定时任务集成在业务系统中,使得Quartz定时任务随着业务系统部署到应用软件中。在定时任务的启动时刻到达后,多台服务器都会去获取数据库锁,且只会有一台服务器会抢占到该数据库锁,并由该台服务器执行定时任务,其他服务器将进行等待。
然而,定时任务的调度逻辑和业务处理存在同一个应用软件中。在服务器的如中央处理单元(central processing unit,CPU)和内存等系统资源固定的前提下,定时任务的调度逻辑与业务处理之间不可避免地会相互影响,容易引起定时任务无法顺利执行的问题,降低了应用系统的可用性和稳定性。
发明内容
本申请实施例提供一种定时任务调度方法、装置及系统,实现了定时任务的调度逻辑与业务处理的解耦,使得定时任务能够顺利执行,提高了应用系统的可用性和稳定性。
第一方面,本申请实施例提供一种定时任务调度方法,应用于调度中心模块,调度中心模块分别与第一客户端执行器和第二客户端执行器通信连接,第一客户端执行器和第二客户端执行器不同;
该方法包括:
调度中心模块确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务;调度中心模块在第一定时任务的启动时刻,按照第一定时任务的预设路由策略,从第一客户端执行器和第二客户端执行器中选择用于执行第一定时任务的目标客户端执行器;调度中心模块向目标客户端执行器发送第一消息,第一消息用于通知目标客户端执行器执行第一定时任务;调度中心模块从目标客户端执行器接收第二消息,第二消息携带有第一定时任务的执行结果。
通过第一方面提供的方法,将定时任务的调度逻辑与业务处理解耦,调度中心模块负责定时任务的调度逻辑,客户端执行器负责接收调度中心模块的调度指令,执行相应的调度逻辑,使得客户端执行器按照预设路由策略执行定时任务,使得资源能够合理利用,解决了单台服务器执行定时任务时存在处理极限的问题,提高了应用系统的可用性和稳定性。
在一种可能的设计中,调度中心模块确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务,包括:调度中心模块在确定配置列表中存在第一客户端执行器的标识和第二客户端执行器的标识时,确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务;其中,配置列表中存储有支持执行第一定时任务的所有的客户端执行器的标识。
由此,通过查表的方式快速确定第一客户端执行器和第二客户端执行器是否均支持执行第一定时任务。
在一种可能的设计中,该方法还包括:调度中心模块从第一客户端执行器接收第三消息;调度中心模块从第二客户端执行器接收第四消息;调度中心模块确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务,包括:调度中心模块在第三消息中携带有第一定时任务的标识且第四消息中携带有第一定时任务的标识时,确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务。
由此,通过传输定时任务的标识的方式快速确定第一客户端执行器和第二客户端执行器是否均支持执行第一定时任务。
在一种可能的设计中,第三消息中还携带有第一客户端执行器的标识;第四消息中还携带有第二客户端执行器的标识;调度中心模块将第一客户端执行器的标识和第二客户端执行器的标识存储在配置列表中,配置列表中存储有支持执行第一定时任务的所有的执行器的标识。
由此,通过定时任务的标识和客户端执行器的标识可构成配置列表,为确定客户端执行器是否支持执行定时任务奠定了基础。
在一种可能的设计中,调度中心模块按照第一定时任务的预设路由策略,从第一客户端执行器和第二客户端执行器中选择用于执行第一定时任务的目标客户端执行器,包括:调度中心模块在预设路由策略为随机路由策略时,确定目标客户端执行器为第一客户端执行器或者第二客户端执行器;
或者,调度中心模块在预设路由策略为轮询路由策略时,若第一定时任务的执行次数为N,则确定目标客户端执行器为第一客户端执行器;若第一定时任务的执行次数为N+1,则确定目标客户端执行器为第二客户端执行器,N为正整数;
或者,调度中心模块在预设路由策略为分片路由策略时,确定目标客户端执行器包括第一客户端执行器和第二客户端执行器,其中,第一客户端执行器执行第一定时任务的业务量与第二客户端执行器执行第一定时任务的业务量之和为第一定时任务的业务量。
由此,调度中心模块通过不同的预设路由策略,可制定出不同调度客户端执行器执行定时任务的方式,提高了调度方式的灵活性和可能性,且可均衡客户端执行器,合理利用客户端执行器的系统资源。
在一种可能的设计中,该方法还包括:调度中心模块在预设时长内未收到目标客户端执行器发送的第一定时任务的执行结果,或者,从目标客户端执行器发送的第一定时任务的执行结果表示第一定时任务执行失败时,从第一客户端执行器和第二客户端执行器中选择用于再次执行第一定时任务的目标客户端执行器,并向目标客户端执行器发送第一消息,直至从目标客户端执行器接收到的第一定时任务的执行结果表示第一定时任务执行成功为止。
由此,调度中心模块可重新触发执行定时任务,使得定时任务的执行具备重试调度机制,无需人工触发执行定时任务或者等待定时任务的下一个启动时刻才能够触发执行定时任务。
在一种可能的设计中,该方法还包括:调度中心模块存储第一定时任务的执行结果。由此,方便用户的查看需求。
第二方面,本申请实施例提供一种定时任务调度方法,应用于客户端执行器,客户端执行器与调度中心模块通信连接,客户端执行器支持执行第一定时任务;
该方法包括:客户端执行器从调度中心模块接收第一消息,第一消息为调度中心模块在第一定时任务的启动时刻发送的,第一消息用于通知客户端执行器执行第一定时任务;客户端执行器响应于第一消息,执行第一定时任务;客户端执行器向调度中心模块发送第二消息,第二消息携带有第一定时任务的执行结果。
通过第二方面的方法,将定时任务的调度逻辑与业务处理解耦,调度中心模块负责定时任务的调度逻辑,客户端执行器负责接收调度中心模块的调度指令,执行相应的调度逻辑,使得客户端执行器按照预设路由策略执行定时任务,使得资源能够合理利用,解决了单台服务器执行定时任务时存在处理极限的问题,提高了应用系统的可用性和稳定性。
在一种可能的设计中,该方法还包括:客户端执行器向调度中心模块发送第五消息,第五消息中携带有客户端执行器的标识和第一定时任务的标识。由此,为调度中心模块确定客户端执行器是否支持执行第一定时任务提供依据。其中,第五消息可为第三消息或者第四消息。
在一种可能的设计中,在客户端执行器支持执行第二定时任务时,第五消息中还携带有第二定时任务的标识,第二定时任务与第一定时任务不同。由此,客户端执行器可支持执行多个定时任务,提高了客户端执行器的可用率。
在一种可能的设计中,第一消息中还携带有客户端执行器执行第一定时任务的业务量,业务量小于等于第一定时任务的业务量;客户端执行第一定时任务,包括:客户端执行器按照业务量执行第一定时任务。
由此,客户端执行器不仅可以基于默认的业务量执行第一定时任务,还可基于接收到的业务量执行第一定时任务。从而,提高了调度中心模块调度客户端执行器的灵活度。
在一种可能的设计中,该方法还包括:客户端执行器向调度中心模块发送心跳检测请求,心跳检测请求用于判断调度中心模块是否可用;客户端执行器从调度中心模块接收心跳检测响应,心跳检测响应用于表示调度中心模块是否可用;客户端执行器从调度中心模块接收第一消息,包括:客户端执行器在从心跳检测响应表示调度中心模块可用时,从调度中心模块接收第一消息。
由此,客户端执行器可确保调度中心模块是否可用,避免了定时任务在启动时刻无法执行的问题,使得定时任务能够顺序执行。
在一种可能的设计中,该方法还包括:客户端执行器在心跳检测响应表示调度中心模块不可用,或者,在预设时长内从调度中心模块未接收到心跳检测响应时,在第一定时任务的启动时刻,执行第一定时任务。
由此,在调度中心模块不可用时,客户端执行器能够主动执行定时任务,作为兜底方案,确保定时任务顺序执行。
第三方面,本申请实施例提供一种定时任务调度装置,装置应用于调度中心模块,装置分别与第一客户端执行器和第二客户端执行器通信连接,第一客户端执行器和第二客户端执行器不同;
装置包括:确定模块,用于确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务;选择模块,用于在第一定时任务的启动时刻,按照第一定时任务的预设路由策略,从第一客户端执行器和第二客户端执行器中选择用于执行第一定时任务的目标客户端执行器;发送模块,用于向目标客户端执行器发送第一消息,第一消息用于通知目标客户端执行器执行第一定时任务;接收模块,用于从目标客户端执行器接收第二消息,第二消息携带有第一定时任务的执行结果。
在一种可能的设计中,确定模块,具体用于在确定配置列表中存在第一客户端执行器的标识和第二客户端执行器的标识时,确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务;其中,配置列表中存储有支持执行第一定时任务的所有的执行器的标识。
在一种可能的设计中,接收模块,还用于从第一客户端执行器接收第三消息;接收模块,还用于从第二客户端执行器接收第四消息;确定模块,具体用于在第三消息中携带有第一定时任务的标识且第四消息中携带有第一定时任务的标识时,确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务。
在一种可能的设计中,选择模块,具体用于在预设路由策略为随机路由策略时,确定目标客户端执行器为第一客户端执行器或者第二客户端执行器;
或者,选择模块,具体用于在预设路由策略为轮询路由策略时,若第一定时任务的执行次数为N,则确定目标客户端执行器为第一客户端执行器;若第一定时任务的执行次数为N+1,则确定目标客户端执行器为第二客户端执行器,N为正整数;
或者,选择模块,具体用于在预设路由策略为分片路由策略时,确定目标客户端执行器包括第一客户端执行器和第二客户端执行器,其中,第一客户端执行器执行第一定时任务的业务量与第二客户端执行器执行第一定时任务的业务量之和为第一定时任务的业务量。
在一种可能的设计中,装置还包括:存储模块,用于存储第一定时任务的执行结果。
上述第三方面以及上述第三方面的各可能的设计中所提供的定时任务调度装置,其有益效果可以参见上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不再赘述。
第四方面,本申请实施例提供一种定时任务调度装置,装置应用于客户端执行器,装置与调度中心模块通信连接,装置支持执行第一定时任务;
装置包括:接收模块,用于从调度中心模块接收第一消息,第一消息为调度中心模块在第一定时任务的启动时刻发送的,第一消息用于通知客户端执行器执行第一定时任务;执行模块,用于响应于第一消息,执行第一定时任务;发送模块,用于向调度中心模块发送第二消息,第二消息携带有第一定时任务的执行结果。
在一种可能的设计中,发送模块,还用于向调度中心模块发送第五消息,第五消息中携带有客户端执行器的标识和第一定时任务的标识。
在一种可能的设计中,在装置支持执行第二定时任务时,第五消息中还携带有第二定时任务的标识,第二定时任务与第一定时任务不同。
在一种可能的设计中,第一消息中还携带有客户端执行器执行第一定时任务的业务量,业务量小于等于第一定时任务的业务量;执行模块,具体用于按照业务量执行第一定时任务。
在一种可能的设计中,发送模块,还用于向调度中心模块发送心跳检测请求,心跳检测请求用于判断调度中心模块是否可用;接收模块,还用于从调度中心模块接收心跳检测响应,心跳检测响应用于表示调度中心模块是否可用;接收模块,具体用于在心跳检测响应表示调度中心模块可用时,从调度中心模块接收第一消息。
在一种可能的设计中,执行模块,还用于在心跳检测响应表示调度中心模块不可用,或者,在预设时长内从调度中心模块未接收到心跳检测响应时,在第一定时任务的启动时刻,执行第一定时任务。
上述第四方面以及上述第四方面的各可能的设计中所提供的定时任务调度装置,其有益效果可以参见上述第二方面和第二方面的各可能的实施方式所带来的有益效果,在此不再赘述。
第五方面,本申请实施例提供一种定时任务调度系统,系统包括:第一服务器、第二服务器和第三服务器,第一服务器中设置有第三方面及第三方面任一种可能的设计中的调度中心模块,第二服务器中设置有第四方面及第四方面任一种可能的设计中的客户端执行器,第三服务器中设置有第四方面及第四方面任一种可能的设计中的客户端执行器,调度中心模块与每个客户端执行器通信连接;
或者,系统包括:第四服务器和第五服务器,第四服务器中设置有第三方面及第三方面任一种可能的设计中的调度中心模块和第四方面及第四方面任一种可能的设计中的客户端执行器,第五服务器中设置有第四方面及第四方面任一种可能的设计中的客户端执行器,调度中心模块与每个客户端执行器通信连接。
第六方面,本申请实施例提供一种电子设备,包括:存储器和处理器;存储器用于存储程序指令;处理器用于调用存储器中的程序指令使得电子设备执行第一方面及第一方面任一种可能的设计中的定时任务调度方法;或者,处理器用于调用存储器中的程序指令使得电子设备执行第二方面及第二方面任一种可能的设计中的定时任务调度方法。
第七方面,本申请实施例提供一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行第一方面及第一方面任一种可能的设计中的定时任务调度方法;或者,使得电子设备执行第二方面及第二方面任一种可能的设计中的定时任务调度方法。
第八方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行第一方面及第一方面任一种可能的设计中的定时任务调度方法;或者,使得计算机执行第二方面及第二方面任一种可能的设计中的定时任务调度方法。
第九方面,本申请实施例提供一种芯片系统,芯片系统包括:处理器;当处理器执行存储器中存储的计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的定时任务调度方法,或者,电子设备执行第二方面及第二方面任一种可能的设计中的定时任务调度方法。
附图说明
图1A-图1B为本申请一实施例提供的一种定时任务调度系统的结构示意图;
图2为本申请一实施例提供的调度中心模块的结构示意图;
图3为本申请一实施例提供的一种定时任务调度方法的信令交互图;
图4A-图4D为本申请一实施例提供的人机交互界面示意图;
图5为本申请一实施例提供的定时任务调度方法的流程图。
具体实施方式
目前,一般使用Quartz(开源项目)开发好定时任务,并将Quartz定时任务集成在业务系统中,使得Quartz定时任务随着业务系统部署到应用软件中。在定时任务的启动时刻到达后,多台服务器都会去获取数据库锁,且只会有一台服务器会抢占到该数据库锁,从而由该台服务器执行定时任务。
然而,前述方法至少存在如下问题:
1、一台服务器执行定时任务,存在处理极限的问题,导致定时任务无法完成。
2、定时任务的调度逻辑和业务处理存在同一个应用软件中。在服务器的如中央处理单元(central processing unit,CPU)和内存等系统资源固定的前提下,定时任务的调度逻辑与业务处理之间不可避免地会相互影响。
3、在定时任务执行失败后,定时任务没有重试的调度逻辑,需要人工手动触发定时任务或者等待定时任务的下一个启动时刻。
4、应用中的业务系统按照多实例进行部署,并基于负载均衡的策略机制去接收业务请求,而定时任务的执行完成依赖于哪台服务器抢占了数据库锁。定时任务的调度逻辑中没有负载均衡的策略机制,导致在抢占到数据库锁的服务器上的系统资源非常紧张时,定时任务仍由该服务器执行,容易出现多台服务器中资源分配不合理的情况。
为了解决上述问题,本申请实施例中,采用服务器-客户机(client-server)模式,调度中心模块负责多个客户端执行器的调度管理,按照调度配置信息发出调度请求,本身不实现定时任务的业务处理。客户端执行器负责接收调度请求并实现定时任务的业务处理,简化了客户端执行器的操作。通常,客户端执行器可由客户端软件开发工具包(software development kit,SDK)实现。
其中,调度中心模块与每个客户端执行器通信连接,如采用超文本传输协议(HTTP)或者远程过程调用协议(remote procedure call protocol,RPC)中的可靠消息总线(reliable message bus,RMB)的方式实现通信连接。
从而,由调度中心模块实现定时任务的调度逻辑,由客户端执行器实现定时任务的业务处理,实现了将定时任务的调度逻辑和业务处理之间的解耦,使得定时任务能够顺利执行,提高了应用系统的可用性和稳定性。
其中,调度中心模块和客户端执行器均可部署服务器上,例如文件传输协议(filetransfer protocol,FTP)服务器,Web服务器,企业核心应用服务器等,且客户端执行器通常部署在两台或者两台以上的服务器上。为了便于说明,本申请实施例以在两台服务器上部署客户端执行器为例进行示意。
请参阅图1A-图1B,图1A-图1B为本申请一实施例提供的一种定时任务调度系统的结构示意图。
如图1A所示,该定时任务调度系统可以包括:第一服务器、第二服务器和第三服务器。其中,第一服务器中部署有调度中心模块。第二服务器中部署有第一客户端执行器,第三服务器中部署有第二客户端执行器。
如图1B所示,该定时任务调度系统可以包括:第三服务器和第四服务器。其中,第三服务器中部署有调度中心模块和第一客户端执行器。第三服务器中部署有第二客户端执行器。
基于图1A的描述,调度中心模块与第一客户端执行器可部署在不同的服务器上。基于图1B的描述,调度中心模块与第一客户端执行器可部署在同一台服务器上。
其中,第一客户端执行器支持执行的定时任务与第二客户端执行器支持支持的定时任务存在交集。即,第一客户端执行器支持执行的全部的定时任务与第二客户端执行器支持支持的全部的定时任务可以完全相同,也可以部分相同。另外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
下面,结合图2,介绍调度中心模块的具体功能。
请参阅图2,图2为本申请一实施例提供的调度中心模块的结构示意图。如图2所示,调度中心模块可按照功能划分为四个单元,各个单元之间可以相互调用。
1、执行器管理单元:主要负责收集客户端执行器的标识(如客户端执行器的网际互连协议(Internet protocol,IP)和端口),以及客户端执行器支持执行的全部的定时任务的标识(如handler,用于唯一标识一个定时任务),以便基于客户端执行器的标识以及客户端执行器支持执行的全部的定时任务的标识准确定位到客户端执行器,为后续调用执行定时任务的客户端执行器提供保障。
其中,执行器管理单元可采用自动注册或者手工注册的方式,收集客户端执行器的标识,以及客户端执行器支持执行的全部的定时任务的标识。自动注册,即在客户端执行器部署在服务器上之后,客户端执行器可调用执行器管理单元中的注册接口地址,向调度中心模块上报客户端执行器的标识,以及客户端执行器支持执行的全部的定时任务的标识。手工注册,即用户在调度中心模块中配置客户端执行器的标识,以及客户端执行器可支持执行的全部的定时任务的标识。
2、任务管理单元:主要负责配置在执行器管理单元中记录的客户端执行器的执行频率(如每天凌晨1点定时对账)以及预设路由策略。
其中,预设路由策略为任务管理单元调度客户端执行器执行定时任务所采用的策略。在一些实施例中,预设路由策略可根据服务器的系统资源和用户意愿等参数进行设置。通常,预设路由策略支持负载均衡算法,如轮询、随机、分片等路由策略。轮询路由策略是将定时任务轮流分配给第一客户端执行器和第二客户端执行器。随机路由策略是将定时任务随机选择一个客户端执行器来执行定时任务。分片路由策略是将定时任务的业务量换分为两部分,分配给第一客户端执行器和第二客户端执行器去执行。
3、日志管理单元:主要负责收集客户端执行器执行定时任务的日志信息,即在一段时长内相同的定时任务的执行结果的汇总,且向调度中心模块的Web查询界面提供该定时任务的日志信息,以便用户在调度中心模块的Web查询界面中进行日志信息的查询。需要说明的是,本申请实施例包括但不限于Web查询界面来显示定时任务的日志信息。
其中,任意一个定时任务的执行结果可以包括定时任务执行成功的结果以及基于定时任务产生的业务数据(如基于业务数据产生的业务报表等)。或者,任意一次执行定时任务的执行结果可以包括定时任务执行失败的结果,此处涉及的定时任务执行失败的情况可以包括:客户端执行器无法执行定时任务的情况以及客户端执行器执行定时任务时由于各种因素导致定时任务执行失败的情况。
4、报表以及告警单元:报表单元主要负责提供Web查询界面,可将任意一个时间段内的执行结果生成相关的报表,该报表中可包括如执行结果为成功的定时任务的数量、执行结果为失败的定时任务的数量以及成功率等。告警单元主要负责在定时任务执行失败时调用邮箱地址向邮箱地址对应的用户(如相关负责人)及时通知。
另外,基于不同的定时任务,可以部署调度中心模块的多实例,使得每个调度中心模块实现对应的定时任务的调度逻辑,降低了调度中心模块出错的概率。或者,一个调度中心模块可基于不同的定时任务进行部署,有利于提高调度中心模块的可用率。
基于图1A、图1B和图2的描述,结合图3,介绍调度中心模块、第一客户端执行器以及第二客户端执行器实现定时任务调度方法的具体实现过程。
请参阅图3,图3为本申请一实施例提供的一种定时任务调度方法的信令交互图。如图3所示,本申请实施例的定时任务调度方法可以包括:
S101、调度中心模块确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务。
其中,第一定时任务为任意一个第一客户端执行器与第二客户端执行器均支持执行的定时任务。
由于调度中心模块中的执行器管理单元记录有客户端执行器的标识以及客户端执行器支持执行的全部的定时任务的标识,因此,调度中心模块在执行第一定时任务之前,可确定第一客户端执行器和第二客户端执行是否均支持执行第一定时任务。
下面,采用多个实施例,介绍调度中心模块确定第一客户端执行器和第二客户端执行器是否均支持执行第一定时任务的具有实现过程。
在一些实施例中,调度中心模块可以根据执行器管理单元中客户端执行器的标识以及客户端执行器支持执行的全部的定时任务的标识的记录,将支持执行任意一个定时任务的所有的客户端执行器的标识存储到一个配置列表中,从而得到每个定时任务对应的配置列表。
其中,任意一个定时任务对应的配置列表可采用数组、表格、矩阵等表示方式。
在执行第一定时任务之前,调度中心模块在第一定时任务对应的配置列表中查找是否存在第一客户端执行器的标识和第二客户端执行器的标识。若均存在,则调度中心模块可确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务。
在另一些实施例中,在第一客户端执行器部署到对应的服务器上时,第一客户端执行器可启动一个注册线程,向调度中心模块发送第三消息,该第三消息中可携带有第一定时任务的标识(如handler1)。
从而,调度中心模块在确定第三消息中的第一定时任务的标识与执行器管理单元中记录的第一定时任务的标识一致时,可确定第一客户端执行器支持执行第一定时任务。
同样地,在第二客户端执行器部署到对应的服务器上时,第二客户端执行器可启动一个注册线程,向调度中心模块发送第四消息,该第四消息中可携带有第一定时任务的标识。
从而,调度中心模块在确定第四消息中的第一定时任务的标识与执行器管理单元中记录的第一定时任务的标识一致时,可确定第二客户端执行器支持执行第一定时任务。
其中,本申请实施例对第三消息和第四消息的具体实现方式不做限定。
另外,第三消息中还可携带有第一客户端执行器的标识,如IP和端口,以便调度中心模块确定第三消息的发送方为第一客户端执行器。第四消息中还可携带有第二客户端执行器的标识,如IP和端口,以便调度中心模块确定第四消息的发送方为第二客户端执行器。并且,客户端执行器的标识也可用于调度中心模块得到每个定时任务对应的配置列表。
另外,第三消息中还可携带有第一客户端执行器支持执行的除了第一定时任务之外的其他的定时任务的标识,如第二定时任务的标识(如handler2),使得第一客户端执行器具备执行多个定时任务的功能,提高了第一客户端执行器的可用率。
同样地,第四消息中还可携带有第二客户端执行器支持执行的除了第一定时任务之外的其他的定时任务的标识,如第二定时任务的标识(如handler2),使得第二客户端执行器具备执行多个定时任务的功能,提高了第二客户端执行器的可用率。
S102、调度中心模块在第一定时任务的启动时刻,按照第一定时任务的预设路由策略,从第一客户端执行器和第二客户端执行器中选择用于执行第一定时任务的目标客户端执行器。
基于步骤S101,调度中心模块可确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务。因此,调度中心模块需要从第一客户端执行器和第二客户端执行器中确定执行第一定时任务的客户端执行器。
由于调度中心模块中的任务管理单元记录有预设路由策略,因此,调度中心模块基于用户的选择或者默认的配置,选择第一定时任务的预设路由策略。其中,本申请实施例对第一定时任务的预设路由策略的具体实现方式不做限定。
从而,在第一定时任务的启动时刻,调度中心模块可按照第一定时任务的预设路由策略,从第一客户端执行器和第二客户端执行器中选择用于执行第一定时任务的目标客户端执行器。
下面,采用多个实施例,介绍调度中心模块基于预设路由策略确定目标客户端执行器的实现过程。
在一些实施例中,在预设路由策略为随机路由策略时,调度中心模块可确定目标客户端执行器随机为第一客户端执行器或者第二客户端执行器。
在另一些实施例中,在预设路由策略为轮询路由策略时,调度中心模块可确定目标客户端执行器轮流为第一客户端执行器或者第二客户端执行器。即,若第一定时任务的执行次数为N,则调度中心模块可确定目标客户端执行器为第一客户端执行器;若第一定时任务的执行次数为N+1,则调度中心模块可确定目标客户端执行器为第二客户端执行器,N为正整数。
在另一些实施例中,在预设路由策略为分片路由策略时,调度中心模块可确定目标客户端执行器包括第一客户端执行器和第二客户端执行器,且将第一定时任务的业务量分发给第一客户端执行器和第二客户端执行器。
其中,第一客户端执行器执行第一定时任务的业务量与第二客户端执行器执行第一定时任务的业务量之和为第一定时任务的业务量。
在另一些实施例中,在预设路由策略为其他路由策略时,调度中心模块可比较第一客户端执行器的系统资源与第二客户端执行器的系统资源。在第一客户端执行器的系统资源优于第二客户端执行器的系统资源时,调度中心模块可确定目标客户端执行器为第一客户端执行器。
需要说明的是,本申请实施例的预设路由策略包括但不限于上述方式。
S103、调度中心模块向目标客户端执行器发送第一消息,第一消息用于通知目标客户端执行器执行第一定时任务。
基于步骤S102,调度中心模块可确定执行第一定时任务的目标客户端执行器。由于调度中心模块中的执行器管理单元记录有各个客户端执行器的标识,因此,调度中心模块基于目标客户端执行器的标识,可准确定位到目标客户端执行器。从而,调度中心模块可向目标客户端执行器发送第一消息,使得目标客户端执行器能够及时且快速执行第一定时任务。
其中,本申请实施例对第一消息的具体实现方式不做限定。
例如,第一消息可以为第一定时任务的标识,使得目标客户端执行器按照第一定时业务量的默认业务量执行第一定时任务。
又如,第一消息也可以为第一定时任务的标识和目标客户端执行器的标识,使得目标客户端执行器在校验第一消息的准确性后按照第一定时业务量的默认业务量执行第一定时任务。
又如,第一消息也可以为第一定时任务的标识、目标客户端执行器的标识以及第一定时任务的业务量,使得目标客户端执行器在校验第一消息的准确性后按照发送的第一定时业务的业务量执行第一定时任务。
S104、目标客户端执行器响应于第一消息,执行第一定时任务。
S105、目标客户端执行器向调度中心模块发送第二消息,第二消息携带有第一定时任务的执行结果。
目标客户端执行器在接收到第一消息后,可对第一消息进行解析,以便获知目标客户端执行器需要执行第一定时任务以及执行第一定时任务的业务量。
从而,目标客户端执行器在确定目标客户端执行器可支持执行第一定时任务时,按照第一消息的解析结果,可调用执行器服务以及启动一个任务线程,执行第一定时任务,并得到第一定时任务的执行结果。
并且,目标客户端执行器可启动一个回调线程,向调度中心模块发送携带有第一定时任务的执行结果的第二消息。其中,第一定时任务的执行结果可参见前文中对任意一个定时任务的执行结果的描述,此处不做赘述。
例如,目标客户端执行器在目标客户端执行器支持执行的所有的定时任务的标识中查找是否存在第一定时任务的标识。若存在,则目标客户端执行器执行第一定时任务,并在第一定时任务执行完成后,目标客户端执行器向调度中心模块返回第一定时任务的执行结果。若不存在,则目标客户端执行器向调度中心模块向第一定时任务通知第一定时任务的执行结果为无法执行第一定时任务。
在一些实施例中,调度中心模块可存储第一定时任务的执行结果,如将基于执行结果生成的日志信息和相关报表记录到调度中心模块的数据库中,方便后续业务人员从调度中心模块提供的Web查询界面中进行查看。
下面,在一个具体实施例中,结合图4A-图4D,介绍调度中心模块和客户端执行器实现定时任务调度方法的具体工作过程。
请参阅图4A-图4D,图4A-图4D为本申请一实施例提供的人机交互界面示意图。
业务人员可登陆图4A示例性所示的调度中心模块的Web查询界面101a,Web查询界面101a用于显示定时任务的如定时任务的ID、任务描述、运行描述、负责人信息、状态、操作等调度情况,Web查询界面101a中包括控件102a,控件102a用于添加新的定时任务。
调度中心模块在接收到业务人员添加第一定时任务的操作(如在Web查询界面101a点击控件102a的操作)后,可在Web查询界面101a上显示窗口102b,窗口102b用于配置新的定时任务的如执行器、任务描述、路由策略、标识(如handler)等信息,使得业务人员可在窗口102b中配置第一定时任务的执行频率、预设路由策略以及第一定时任务的handler1。
调度中心模块在接收到业务任务在窗口102b点击文字“保存”控件的操作后,可显示图4C示例性所示的界面101b,该界面101b中包括第一定时任务的相关容102c。
其中,第一定时任务的相关容102c中可包括:第一定时任务的标识(即ID)、任务描述、运行描述、负责人、状态、文字“执行”控件、文字“停止”控件、文字“编辑”控件、文字“删除”控件、文字“日志”控件等信息。
文字“执行”控件用于表示第一定时任务正在执行,以便业务人员可以及时获知调度中心模块当前正在调度第一定时任务。文字“停止”控件用于停止执行第一定时任务。文字“日志”控件用于进入到第一定时任务的日志信息。文字“编辑”控件用于编辑第一定时任务的标识等信息。文字“删除”控件用于删除第一定时任务。
调度中心模块在接收到业务人员在界面101b点击文字“执行”控件的操作后,可启动循环线程获取第一定时任务的调度信息,并确定当前时刻是否到达第一定时任务的启动时刻。若到达,则调度中心模块基于配置的第一定时任务的执行频率、预设路由策略以及第一定时任务的handler1,从配置列表中查询到第一客户端执行器的标识和第二客户端执行器的标识。
A、如果预设路由策略配置为随机路由策略,则调度中心模块通过计算X%Y的值来确定目标客户端执行器的序号,其中,X为随机数,Y为客户端执行器的数量,第一客户端执行器和第二客户端执行器的序号均已设置好。
B、如果预设路由策略配置为轮询路由策略,则调度中心模块可轮流将第一客户端执行器和第二客户端执行器确定为目标客户端执行器。
C、如果预设路由策略配置为分片路由策略,则调度中心模块可确定目标客户端包括第一客户端执行器和第二客户端执行器,且配置第一客户端执行器的业务量(如100)和第二客户端执行器的业务量(如200)。
从而,调度中心模块通知目标客户端执行器执行第一定时任务。并且,调度中心模块可继续显示图4C示例性所示的界面。
需要说明的是,该界面包括但不限于上述表示内容,且本申请实施例对该界面的具体实现方式也不做限定。
在目标客户端执行器执行完成第一定时任务,目标客户端执行器可向调度中心模块发送第一定时任务的执行结果。调度中心模块可存储第一定时任务的执行结果。调度中心模块在检测到业务人员点击控件3的操作后,可显示图4D示例性所示的界面101c,该界面101c用于显示第一定时任务的日志信息,如显示有第一定时任务的调度总数、每次第一定时任务的调度时刻和每次第一定时任务的执行结果等。
本申请实施例提供的定时任务调度方法,通过将定时任务的调度逻辑与业务处理解耦,调度中心模块负责定时任务的调度逻辑,客户端执行器负责接收调度中心模块的调度指令,执行相应的调度逻辑,使得客户端执行器按照预设路由策略执行定时任务,使得资源能够合理利用,解决了单台服务器执行定时任务时存在处理极限的问题,提高了应用系统的可用性和稳定性。
在一些实施例中,在预设时长内未收到目标客户端执行器发送的第一定时任务的执行结果,或者,从目标客户端执行器发送的第一定时任务的执行结果表示第一定时任务执行失败时,调度中心模块可重新执行步骤S101-S103,即从第一客户端执行器和第二客户端执行器中选择用于再次执行第一定时任务的目标客户端执行器,并向目标客户端执行器发送第一消息,直至从目标客户端执行器接收到的第一定时任务的执行结果表示第一定时任务执行成功为止。
从而,由于第一定时任务的调度逻辑与业务处理解耦,因此,在调度中心模块调用目标客户端执行器执行失败后,调度中心模块可重新触发执行第一定时任务,使得第一定时任务的执行具备重试调度机制,无需人工触发执行第一定时任务或者等待第一定时任务的下一个启动时刻才能够触发执行第一定时任务。
在一些实施例中,调度中心模块可能存在故障,导致第一定时任务无法执行。因此,任意一个客户端执行器可在第一定时任务的启动时刻之前,检查调度中心模块是否能够正常工作。从而,在调度中心模块能够正常工作时,该客户端执行器可等待调度中心模块的调度。在调度中心模块无法正常工作时,该客户端执行器可采用现有的定时任务调度方法,以便存在客户端执行器在第一定时任务的启动时刻,执行第一定时任务。
其中,本申请实施例对该客户端执行器判断调度中心模块是否能够正常工作的具体实现方式不做限定。下面,采用具体的实施例,结合图5,介绍前述过程的具体实现过程。
请参阅图5,图5为本申请一实施例提供的定时任务调度方法的流程图。如图5所示,本申请实施例的定时任务调度方法可以包括:
S201、客户端执行器向调度中心模块发送心跳检测请求,心跳检测请求用于判断调度中心模块是否可用。
由于每个客户端执行器与调度中心模块均通信连接,因此,客户端执行器可启动一个心跳检测线程,按照第一定时任务的执行检测调度中心模块是否可用。其中,本申请实施例对心跳检测请求的具体实现方式不做限定。
S202、客户端执行器在从调度中心模块接收的心跳检测响应表示调度中心模块可用时,从调度中心模块接收第一消息。
S203、客户端执行器在从调度中心模块接收的心跳检测响应表示调度中心模块不可用,或者,在预设时长内从调度中心模块未接收到心跳检测响应时,在第一定时任务的启动时刻,执行第一定时任务。
客户端执行器可在该心跳检测线程上获取调度中心模块发送的心跳检测响应。其中,本申请实施例对心跳检测响应的具体实现方式不做限定。
在从调度中心模块接收到心跳检测响应且心跳检测响应表示调度中心模块可用时,客户端执行器可等待调度中心模块的调用。若该客户端执行器包含在目标客户端执行器中,则该客户端执行器便可从调度中心模块接收第一消息,与图3中的步骤S103的具体实现方式相同,此处不做赘述。
在从调度中心模块接收到心跳检测响应且心跳检测响应表示调度中心模块不可用,或者,在预设时长内从调度中心模块未接收到心跳检测响应时,客户端执行器可启动一个线程,触发在第一定时任务的启动时刻执行第一定时任务。
从而,在调度中心模块出现故障时,客户端执行器能够执行定时任务可作为兜底方案,保证了定时任务的正常执行,不强依赖于调度中心模块。
示例性地,本申请实施例还提供一种定时任务调度装置。
本申请实施例的定时任务调度装置应用于调度中心模块,定时任务调度装置分别与第一客户端执行器和第二客户端执行器通信连接,第一客户端执行器和第二客户端执行器不同。
本申请实施例的定时任务调度装置可以包括:
确定模块,用于确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务;
选择模块,用于在第一定时任务的启动时刻,按照第一定时任务的预设路由策略,从第一客户端执行器和第二客户端执行器中选择用于执行第一定时任务的目标客户端执行器;
发送模块,用于向目标客户端执行器发送第一消息,第一消息用于通知目标客户端执行器执行第一定时任务;
接收模块,用于从目标客户端执行器接收第二消息,第二消息携带有第一定时任务的执行结果。
在一些实施例中,确定模块,具体用于在确定配置列表中存在第一客户端执行器的标识和第二客户端执行器的标识时,确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务;其中,配置列表中存储有支持执行第一定时任务的所有的执行器的标识。
在一些实施例中,接收模块,还用于从第一客户端执行器接收第三消息;接收模块,还用于从第二客户端执行器接收第四消息;确定模块,具体用于在第三消息中携带有第一定时任务的标识且第四消息中携带有第一定时任务的标识时,确定第一客户端执行器和第二客户端执行器均支持执行第一定时任务。
在一些实施例中,选择模块,具体用于在预设路由策略为随机路由策略时,确定目标客户端执行器为第一客户端执行器或者第二客户端执行器;
或者,选择模块,具体用于在预设路由策略为轮询路由策略时,若第一定时任务的执行次数为N,则确定目标客户端执行器为第一客户端执行器;若第一定时任务的执行次数为N+1,则确定目标客户端执行器为第二客户端执行器,N为正整数;
或者,选择模块,具体用于在预设路由策略为分片路由策略时,确定目标客户端执行器包括第一客户端执行器和第二客户端执行器,其中,第一客户端执行器执行第一定时任务的业务量与第二客户端执行器执行第一定时任务的业务量之和为第一定时任务的业务量。
在一些实施例中,装置还包括:存储模块,用于存储第一定时任务的执行结果。
本申请实施例中可以根据上述方法示例对定时任务调度装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请各实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请实施例的定时任务调度装置,可以用于执行前文提及的定时任务调度方法中调度中心模块的技术方案,其实现原理和技术效果类似,其中各个模块的实现的操作可以进一步参考方法实施例的相关描述,此处不再赘述。此处的模块也可以替换为部件或者电路。
示例性地,本申请实施例还提供一种定时任务调度装置。
本申请实施例的定时任务调度装置应用于客户端执行器,装置与调度中心模块通信连接,装置支持执行第一定时任务。
本申请实施例的定时任务调度装置可以包括:
接收模块,用于从调度中心模块接收第一消息,第一消息为调度中心模块在第一定时任务的启动时刻发送的,第一消息用于通知客户端执行器执行第一定时任务;
执行模块,用于响应于第一消息,执行第一定时任务;
发送模块,用于向调度中心模块发送第二消息,第二消息携带有第一定时任务的执行结果。
在一些实施例中,发送模块,还用于向调度中心模块发送第五消息,第五消息中携带有客户端执行器的标识和第一定时任务的标识。
在一些实施例中,在装置支持执行第二定时任务时,第五消息中还携带有第二定时任务的标识,第二定时任务与第一定时任务不同。
在一些实施例中,第一消息中还携带有客户端执行器执行第一定时任务的业务量,业务量小于等于第一定时任务的业务量;执行模块,具体用于按照业务量执行第一定时任务。
在一些实施例中,发送模块,还用于向调度中心模块发送心跳检测请求,心跳检测请求用于判断调度中心模块是否可用;接收模块,还用于从调度中心模块接收心跳检测响应,心跳检测响应用于表示调度中心模块是否可用;接收模块,具体用于在心跳检测响应表示调度中心模块可用时,从调度中心模块接收第一消息。
在一些实施例中,执行模块,还用于在心跳检测响应表示调度中心模块不可用,或者,在预设时长内从调度中心模块未接收到心跳检测响应时,在第一定时任务的启动时刻,执行第一定时任务。
本申请实施例中可以根据上述方法示例对定时任务调度装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请各实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请实施例的定时任务调度装置,可以用于执行前文提及的定时任务调度方法中的客户端执行器的技术方案,其实现原理和技术效果类似,其中各个模块的实现的操作可以进一步参考方法实施例的相关描述,此处不再赘述。此处的模块也可以替换为部件或者电路。
示例性地,本申请实施例还提供一种定时任务调度系统。
在一些实施例中,定时任务调度系统包括:第一服务器、第二服务器和第三服务器,第一服务器中设置有前文实施例中的调度中心模块,第二服务器中设置有前文实施例中的客户端执行器,第三服务器中设置有前文实施例中的客户端执行器,调度中心模块与每个客户端执行器通信连接。
本申请实施例的定时任务调度系统,可以用于执行图1A示例性所示的定时任务调度系统,以及前文提及的定时任务调度方法的技术方案,其实现原理和技术效果类似,此处不再赘述。
在另一些实施例中,定时任务调度系统包括:第四服务器和第五服务器,第四服务器中设置有前文实施例中的调度中心模块和前文实施例中的客户端执行器,第五服务器中设置有前文实施例中的客户端执行器,调度中心模块与每个客户端执行器通信连接。
本申请实施例的定时任务调度系统,可以用于执行图1B示例性所示的定时任务调度系统,以及前文提及的定时任务调度方法的技术方案,其实现原理和技术效果类似,此处不再赘述。
示例性地,本申请实施例还提供一种电子设备,包括:存储器和处理器;存储器用于存储程序指令;处理器用于调用存储器中的程序指令使得电子设备执行前文实施例中的定时任务调度方法。
示例性地,本申请实施例还提供一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行前文实施例中的定时任务调度方法。
示例性地,本申请实施例还提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行前文实施例中的定时任务调度方法。
示例性地,本申请实施例提供一种芯片系统,芯片系统包括:处理器;当处理器执行存储器中存储的计算机指令时,电子设备执行前文实施例中的定时任务调度方法。
在上述实施例中,全部或部分功能可以通过软件、硬件、或者软件加硬件的组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (19)
1.一种定时任务调度方法,其特征在于,应用于调度中心模块,所述调度中心模块分别与第一客户端执行器和第二客户端执行器通信连接,所述第一客户端执行器和所述第二客户端执行器不同;
所述方法包括:
所述调度中心模块确定所述第一客户端执行器和所述第二客户端执行器均支持执行第一定时任务;
所述调度中心模块在所述第一定时任务的启动时刻,按照所述第一定时任务的预设路由策略,从所述第一客户端执行器和所述第二客户端执行器中选择用于执行所述第一定时任务的目标客户端执行器;
所述调度中心模块向所述目标客户端执行器发送第一消息,所述第一消息用于通知所述目标客户端执行器执行所述第一定时任务;
所述调度中心模块从所述目标客户端执行器接收第二消息,所述第二消息携带有所述第一定时任务的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述调度中心模块确定所述第一客户端执行器和所述第二客户端执行器均支持执行第一定时任务,包括:
所述调度中心模块在确定配置列表中存在所述第一客户端执行器的标识和所述第二客户端执行器的标识时,确定所述第一客户端执行器和所述第二客户端执行器均支持执行所述第一定时任务;
其中,所述配置列表中存储有支持执行所述第一定时任务的所有的客户端执行器的标识。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述调度中心模块从所述第一客户端执行器接收第三消息;
所述调度中心模块从所述第二客户端执行器接收第四消息;
所述调度中心模块确定所述第一客户端执行器和所述第二客户端执行器均支持执行第一定时任务,包括:
所述调度中心模块在所述第三消息中携带有所述第一定时任务的标识且所述第四消息中携带有所述第一定时任务的标识时,确定所述第一客户端执行器和所述第二客户端执行器均支持执行所述第一定时任务。
4.根据权利要求3所述的方法,其特征在于,所述第三消息中还携带有所述第一客户端执行器的标识;所述第四消息中还携带有所述第二客户端执行器的标识;
所述调度中心模块将所述第一客户端执行器的标识和所述第二客户端执行器的标识存储在配置列表中,所述配置列表中存储有支持执行所述第一定时任务的所有的执行器的标识。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述调度中心模块按照所述第一定时任务的预设路由策略,从所述第一客户端执行器和所述第二客户端执行器中选择用于执行所述第一定时任务的目标客户端执行器,包括:
所述调度中心模块在所述预设路由策略为随机路由策略时,确定所述目标客户端执行器为所述第一客户端执行器或者所述第二客户端执行器;
或者,所述调度中心模块在所述预设路由策略为轮询路由策略时,若所述第一定时任务的执行次数为N,则确定所述目标客户端执行器为所述第一客户端执行器;若所述第一定时任务的执行次数为N+1,则确定所述目标客户端执行器为所述第二客户端执行器,N为正整数;
或者,所述调度中心模块在所述预设路由策略为分片路由策略时,确定所述目标客户端执行器包括所述第一客户端执行器和所述第二客户端执行器,其中,所述第一客户端执行器执行所述第一定时任务的业务量与所述第二客户端执行器执行所述第一定时任务的业务量之和为所述第一定时任务的业务量。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
所述调度中心模块在预设时长内未收到所述目标客户端执行器发送的所述第一定时任务的执行结果,或者,从所述目标客户端执行器发送的所述第一定时任务的执行结果表示所述第一定时任务执行失败时,从所述第一客户端执行器和所述第二客户端执行器中选择用于再次执行所述第一定时任务的目标客户端执行器,并向所述目标客户端执行器发送所述第一消息,直至从所述目标客户端执行器接收到的所述第一定时任务的执行结果表示所述第一定时任务执行成功为止。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
所述调度中心模块存储所述第一定时任务的执行结果。
8.一种定时任务调度方法,其特征在于,应用于客户端执行器,所述客户端执行器与调度中心模块通信连接,所述客户端执行器支持执行第一定时任务;
所述方法包括:
所述客户端执行器从所述调度中心模块接收第一消息,所述第一消息为所述调度中心模块在所述第一定时任务的启动时刻发送的,所述第一消息用于通知所述客户端执行器执行所述第一定时任务;
所述客户端执行器响应于所述第一消息,执行所述第一定时任务;
所述客户端执行器向所述调度中心模块发送第二消息,所述第二消息携带有所述第一定时任务的执行结果。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述客户端执行器向所述调度中心模块发送第五消息,所述第五消息中携带有所述客户端执行器的标识和所述第一定时任务的标识。
10.根据权利要求9所述的方法,其特征在于,在所述客户端执行器支持执行第二定时任务时,所述第五消息中还携带有所述第二定时任务的标识,所述第二定时任务与所述第一定时任务不同。
11.根据权利要求8-10任一项所述的方法,其特征在于,所述第一消息中还携带有所述客户端执行器执行所述第一定时任务的业务量,所述业务量小于等于所述第一定时任务的业务量;
所述客户端执行所述第一定时任务,包括:
所述客户端执行器按照所述业务量执行所述第一定时任务。
12.根据权利要求8-10任一项所述的方法,其特征在于,所述方法还包括:
所述客户端执行器向所述调度中心模块发送心跳检测请求,所述心跳检测请求用于判断所述调度中心模块是否可用;
所述客户端执行器从所述调度中心模块接收心跳检测响应,所述心跳检测响应用于表示所述调度中心模块是否可用;
所述客户端执行器从所述调度中心模块接收第一消息,包括:
所述客户端执行器在从所述心跳检测响应表示所述调度中心模块可用时,从所述调度中心模块接收所述第一消息。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
所述客户端执行器在所述心跳检测响应表示所述调度中心模块不可用,或者,在预设时长内从所述调度中心模块未接收到心跳检测响应时,在所述第一定时任务的启动时刻,执行所述第一定时任务。
14.一种定时任务调度装置,其特征在于,所述装置应用于调度中心模块,所述装置分别与第一客户端执行器和第二客户端执行器通信连接,所述第一客户端执行器和所述第二客户端执行器不同;
所述装置包括:
确定模块,用于确定所述第一客户端执行器和所述第二客户端执行器均支持执行第一定时任务;
选择模块,用于在所述第一定时任务的启动时刻,按照所述第一定时任务的预设路由策略,从所述第一客户端执行器和所述第二客户端执行器中选择用于执行所述第一定时任务的目标客户端执行器;
发送模块,用于向所述目标客户端执行器发送第一消息,所述第一消息用于通知所述目标客户端执行器执行所述第一定时任务;
接收模块,用于从所述目标客户端执行器接收第二消息,所述第二消息携带有所述第一定时任务的执行结果。
15.一种定时任务调度装置,其特征在于,所述装置应用于客户端执行器,所述装置与调度中心模块通信连接,所述装置支持执行第一定时任务;
所述装置包括:
接收模块,用于从所述调度中心模块接收第一消息,所述第一消息为所述调度中心模块在所述第一定时任务的启动时刻发送的,所述第一消息用于通知所述客户端执行器执行所述第一定时任务;
执行模块,用于响应于所述第一消息,执行所述第一定时任务;
发送模块,用于向所述调度中心模块发送第二消息,所述第二消息携带有所述第一定时任务的执行结果。
16.一种定时任务调度系统,其特征在于,所述系统包括:第一服务器、第二服务器和第三服务器,所述第一服务器中设置有如权利要求14所述的调度中心模块,所述第二服务器中设置有如权利要求15所述的客户端执行器,所述第三服务器中设置有如权利要求15所述的客户端执行器,所述调度中心模块与每个所述客户端执行器通信连接;
或者,所述系统包括:第四服务器和第五服务器,所述第四服务器中设置有如权利要求14所述的调度中心模块和如权利要求15所述的客户端执行器,所述第五服务器中设置有如权利要求15所述的客户端执行器,所述调度中心模块与每个所述客户端执行器通信连接。
17.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器用于存储程序指令;
所述处理器用于调用所述存储器中的程序指令使得所述电子设备执行权利要求1-7任一项所述的定时任务调度方法;或者,所述处理器用于调用所述存储器中的程序指令使得所述电子设备执行权利要求8-13任一项所述的定时任务调度方法。
18.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-7任一项所述的定时任务调度方法;或者,使得所述电子设备执行如权利要求8-13任一项所述的定时任务调度方法。
19.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1-7任一项所述的定时任务调度方法;或者,使得所述计算机执行如权利要求8-13任一项所述的定时任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011158217.7A CN112181627A (zh) | 2020-10-26 | 2020-10-26 | 定时任务调度方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011158217.7A CN112181627A (zh) | 2020-10-26 | 2020-10-26 | 定时任务调度方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112181627A true CN112181627A (zh) | 2021-01-05 |
Family
ID=73923646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011158217.7A Pending CN112181627A (zh) | 2020-10-26 | 2020-10-26 | 定时任务调度方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181627A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282398A (zh) * | 2021-06-29 | 2021-08-20 | 杭州洋驼网络科技有限公司 | 轻量级任务触发系统及业务生态系统 |
CN113495782A (zh) * | 2021-07-07 | 2021-10-12 | 上海映驰科技有限公司 | 实现确定性执行目标的任务调度方法、装置及电子设备 |
CN113641474A (zh) * | 2021-08-13 | 2021-11-12 | 广州虎牙科技有限公司 | 一种任务调度方法、装置及计算机可读存储介质 |
-
2020
- 2020-10-26 CN CN202011158217.7A patent/CN112181627A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282398A (zh) * | 2021-06-29 | 2021-08-20 | 杭州洋驼网络科技有限公司 | 轻量级任务触发系统及业务生态系统 |
CN113495782A (zh) * | 2021-07-07 | 2021-10-12 | 上海映驰科技有限公司 | 实现确定性执行目标的任务调度方法、装置及电子设备 |
CN113495782B (zh) * | 2021-07-07 | 2024-02-02 | 上海映驰科技有限公司 | 实现确定性执行目标的任务调度方法、装置及电子设备 |
CN113641474A (zh) * | 2021-08-13 | 2021-11-12 | 广州虎牙科技有限公司 | 一种任务调度方法、装置及计算机可读存储介质 |
CN113641474B (zh) * | 2021-08-13 | 2024-03-15 | 广州虎牙科技有限公司 | 一种任务调度方法、装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108683516B (zh) | 一种应用实例的升级方法、装置和系统 | |
CN107947960B (zh) | 配置信息的推送方法及系统、配置信息的接收方法及系统 | |
CN112181627A (zh) | 定时任务调度方法、装置及系统 | |
CN110311831B (zh) | 基于容器云的系统资源监控方法及相关设备 | |
US9672480B2 (en) | Adaptive and dynamic data synchronization system for managing data and inventory | |
EP1402363B1 (en) | Method for ensuring operation during node failures and network partitions in a clustered message passing server | |
US20040015368A1 (en) | High availability for asynchronous requests | |
CN111857998A (zh) | 一种可配置的定时任务调度方法及系统 | |
CN110895487B (zh) | 分布式任务调度系统 | |
US7870248B2 (en) | Exploiting service heartbeats to monitor file share | |
US10630566B1 (en) | Tightly-coupled external cluster monitoring | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
US20200092157A1 (en) | Method And System For Clustered Real-Time Correlation Of Trace Data Fragments Describing Distributed Transaction Executions | |
CN112910937B (zh) | 容器集群中的对象调度方法、装置、服务器和容器集群 | |
US8326913B2 (en) | Method and system for service contract discovery | |
CN111858007A (zh) | 一种基于消息中间件的任务调度方法方法和装置 | |
CN111258726A (zh) | 任务调度方法和装置 | |
CN110895486A (zh) | 分布式任务调度系统 | |
CN106293911A (zh) | 分布式调度系统、方法 | |
CN114900449A (zh) | 一种资源信息管理方法、系统及装置 | |
CN110895485A (zh) | 任务调度系统 | |
CN111008064B (zh) | 虚机资源调度方法和装置、集群部署方法和装置 | |
US9813492B2 (en) | System and method for automatic migration of poller proxy services in a service bus environment | |
CN117032987A (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 |