CN115794321A - 定时任务处理方法、装置、介质及设备 - Google Patents
定时任务处理方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN115794321A CN115794321A CN202111059537.1A CN202111059537A CN115794321A CN 115794321 A CN115794321 A CN 115794321A CN 202111059537 A CN202111059537 A CN 202111059537A CN 115794321 A CN115794321 A CN 115794321A
- Authority
- CN
- China
- Prior art keywords
- task
- timing
- target
- fragment
- information
- 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
-
- 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
- Debugging And Monitoring (AREA)
Abstract
本申请公开了定时任务处理方法、装置、介质及设备,该方法包括:响应于基于任务接口触发的任务启动指令,获取任务配置信息;任务配置信息包括任务生产信息、任务消费信息和分片信息;根据任务生产信息和分片信息确定多个分片编号,以及每个分片编号对应的定时子任务;将每个分片编号对应的定时子任务写入与分片编号对应的任务队列;根据目标任务消费节点的目标序号和分片信息,确定目标任务消费节点对应的目标分片编号;从与目标分片编号对应的任务队列中取出目标定时子任务,以使目标任务消费节点根据任务消费信息执行目标定时子任务。本申请的应用场景至少包括各类终端,如:手机、电脑、车载终端等。本申请可以高效地执行定时任务。
Description
技术领域
本申请涉及任务调度领域,具体涉及一种定时任务处理方法、装置、介质及设备。
背景技术
任务调度,简单来说就是定时任务,是指基于给定时间点、给定时间间隔或者给定执行次数自动执行任务。在很多业务中需要定时执行一些任务,如消息的定时推送、数据的定时更新、订单状态的周期内检测。为了对海量定时任务批量处理,逐渐采用分布式任务调度框架。
常见的,分布式任务调度框架中对业务代码的侵入性较大,需要添加额外的配置文件或者搭建额外的调度服务,或者任务执行效率不高,容易出现任务堆积无法准时执行的情况。
发明内容
为了可控且高效地处理定时任务,本申请提供了定时任务处理方法、装置、介质及设备。所述技术方案如下:
第一方面,本申请提供了一种定时任务处理方法,所述方法包括:
响应于基于任务接口触发的任务启动指令,获取针对定时任务的任务配置信息;所述任务配置信息包括任务生产信息、任务消费信息和分片信息,所述任务生产信息指示多个定时子任务;
根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务;
将每个分片编号对应的定时子任务写入与所述分片编号对应的任务队列;
根据目标任务消费节点的目标序号和所述分片信息,确定所述目标任务消费节点对应的目标分片编号;所述多个分片编号包括所述目标分片编号;所述目标任务消费节点为用于处理定时任务的任务消费节点集群中的任一节点;
从与所述目标分片编号对应的任务队列中取出目标定时子任务,以使所述目标任务消费节点根据所述任务消费信息执行所述目标定时子任务。
第二方面,本申请提供了一种定时任务处理装置,所述装置包括:
任务配置信息获取模块,用于响应于基于任务接口触发的任务启动指令,获取针对定时任务的任务配置信息;所述任务配置信息包括任务生产信息、任务消费信息和分片信息,所述任务生产信息指示多个定时子任务;
任务生产模块,用于根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务;
任务入队模块,用于将每个分片编号对应的定时子任务写入与所述分片编号对应的任务队列;
节点编号确定模块,用于根据目标任务消费节点的目标序号和所述分片信息,确定所述目标任务消费节点对应的目标分片编号;所述多个分片编号包括所述目标分片编号;所述目标任务消费节点为用于处理定时任务的任务消费节点集群中的任一节点;
任务消费模块,用于从与所述目标分片编号对应的任务队列中取出目标定时子任务,以使所述目标任务消费节点根据所述任务消费信息执行所述目标定时子任务。
第三方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如第一方面所述的一种定时任务处理方法。
第四方面,本申请提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行以实现如第一方面所述的一种定时任务处理方法。
第五方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令被处理器执行时实现如第一方面所述的一种定时任务处理方法。
本申请提供的定时任务处理方法、装置、介质及设备,具有如下技术效果:
本申请提供的方案通过配置的任务接口实现对定时任务的可控管理,比如通过任务接口动态添加新的任务或移除未消费的任务,或者通过任务接口暂停或重启任务,任务接口中还封装有任务生产、任务消费和任务回调的方法,方便管理、追踪任务的处理状态,保障任务执行的高可靠性,同时也降低了对业务系统的代码侵入。
本申请提供的方案通过将多个任务分片执行,多个任务可以做到互不干扰,且充分利用了各个节点的处理资源,避免任务堆积导致任务无法被高效准时执行的问题,从而提高任务执行效率。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种定时任务处理方法的实施环境示意图;
图2是本申请实施例提供的一种定时任务处理方法的流程示意图;
图3是本申请实施例提供的一种微服务架构的示意图;
图4是本申请实施例提供的一种定时任务生产与消费的流程示意图;
图5是本申请实施例提供的一种为定时子任务添加分片编号的流程示意图;
图6是本申请实施例提供的另一种为定时子任务添加分片编号的流程示意图;
图7是本申请实施例提供的一种定时子任务入队的流程示意图;
图8是本申请实施例提供的一种确定目标任务消费节点的目标分片编号的流程示意图;
图9是本申请实施例提供的一种定时子任务消费的流程示意图;
图10是本申请实施例提供的一种定时子任务重试执行并反馈执行结果的流程示意图;
图11是本申请实施例提供的一种定时任务处理装置的示意图;
图12是本申请实施例提供的用于实现一种定时任务处理方法的设备的硬件结构示意图。
具体实施方式
为了可控且高效地处理定时任务,本申请实施例提供了定时任务处理方法、装置、介质及设备。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解本申请实施例所述的技术方案及其产生的技术效果,本申请实施例对于涉及到的相关专业名词进行解释:
微服务:一种软件开发技术-面向服务的体系结构架构样式的变体,将应用程序构造为一组松散耦合的服务。一系列独立运行的微服务共同构建起了整个业务系统;每个微服务为独立的业务开发,可视为单独的子系统,子系统之间通过远程程序调用进行通信,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等。
注册中心:是隐藏在微服务框架背后最基础的服务,记录各个微服务实例信息,决定业务微服务之间是否正常调用。微服务启动时,将微服务的实例信息(IP(InternetProtocol,一种通信协议)、端口、微服务的名称)注册到注册中心,注册中心通过服务注册表存储这些数据,服务注册表还可以提供查询接口和管理接口,用于查询可用的微服务实例、管理微服务实例的注册与注销、微服务的注册与注销。同时注册中心采用一定的机制对已注册的微服务及其实例进行健康检查,如发现某个实例长时间无法访问后,将该实例从服务注册表中移除。
任务分片:任务分片是通过分而治之的思想将单一任务按特定逻辑切分为多个独立子任务,将多个独立子任务路由到部署组不同的节点执行,提高任务执行效率,同时提升整体资源利用效率。
cron表达式:是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year
或Seconds Minutes Hours DayofMonth Month DayofWeek
结构上从左到右分别表示:秒分小时月份中的日期月份星期中的日期年份,每一个域都使用数字,但还可以出现其他特殊字符。示例性的,“0021*?*”表示在每月的1日的凌晨2点调整任务;“01510?*MON-FRI”表示周一到周五每天上午10:15执行任务。
请参阅图1,其为本申请实施例提供的一种定时任务处理方法的实施环境示意图,如图1所示,该实施环境可以至少包括客户端01和服务器02。
具体的,所述客户端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、车载终端、数字助理、智能可穿戴设备、监控设备及语音交互设备等类型的设备,也可以包括运行于设备中的软体,例如一些服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用。具体的,所述客户端01可以用于配置任务信息,任务信息包括任务的生产信息、任务的分片信息和任务的消费信息,以及用于添加任务接口对象以通过接口的方法配置任务执行逻辑,并实现对任务处理过程的管理;所述客户端01还用于向与之连接的所述服务02中的注册中心进行服务发布和注册,注册针对定时任务处理的微服务及其微服务实例。
具体的,所述服务器02可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。所述服务器02可以包括有网络通信单元、处理器和存储器等等。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。具体的,所述服务器02可以用于响应于所述客户端01发布和注册的服务,实例化微服务,并由所述服务器02(为节点集群)中的主节点进行任务生产和任务分片,并将分片后的多个定时子任务放入任务队列,由非主节点进行定时子任务的消费。
本申请实施例还可以结合云技术实现,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件及网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术,也可理解为基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术及应用技术等的总称。云技术需要以云计算作为支撑。云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。具体地,所述服务器02和数据库位于云端,所述服务器02可以是实体机器,也可以是虚拟化机器。
以下介绍本申请提供的一种定时任务处理方法。图2是本申请实施例提供的一种定时任务处理方法的流程图,本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。请参照图2,以节点集群为执行主体,本申请实施例提供的一种定时任务处理方法可以包括如下步骤:
S210:响应于基于任务接口触发的任务启动指令,获取针对定时任务的任务配置信息;所述任务配置信息包括任务生产信息、任务消费信息和分片信息,所述任务生产信息指示多个定时子任务。
可以理解的是,在微服务架构中,将一个业务按照应用功能划分为了多个独立的功能模块,功能模块之间通过接口的远程程序调用进行交互,每个功能模块对应一个微服务,一系列独立运行的微服务共同构建起了整个业务。为了能够针对性的增加某个微服务的处理能力,可以使用集群模式实现该微服务,集群中的节点对应于该微服务中的微服务实例。针对批量处理海量定时任务的业务场景,也逐渐从采用单体架构转向采用微服务架构以支撑业务。在本申请实施例中,定时任务为在一特定时间需要被执行的任务,特定时间可以是指定的一个绝对时刻也可以是一个相对的间隔时间。示例性的,对于比赛活动这一业务产品中消息定时推送这一应用功能,启用微服务来保证定时任务的独立执行,定时任务可以包括但不限于向用户推送报名通知、推送比赛周报、在比赛创建后一定天数后向参赛者推送比赛开始通知等。
图3示出了本申请实施例提供的一种微服务架构的框架示意图,如图3所示,在微服务架构中,注册中心集群提供微服务架构中最基础的服务,通过服务注册表存储微服务的实例信息(IP(Internet Protocol,一种通信协议)、端口、微服务的名称等),也即对应的节点信息,业务集群可以包括多个业务的多个微服务,在图3中示出了两个不同的微服务:微服务1和微服务n,其可以对应于相同的业务也可以是服务于不同的业务,以微服务1为例,其包括了三个微服务实例,对应于三个节点(图3中没有示出实例与节点的一一对应)。图3示出的是微服务架构中服务端的示意图,此外注册中心还可以与客户端通信连接,用于接收客户端的服务发布和服务注册。需要说明的是,本申请所提供的方案中所涉及的节点是同一业务的同一个微服务对应的节点集群中的节点,后续不再赘述。
在本申请实施例中,为了降低为业务代码的侵入性,开发人员通过客户端的任务接口实现对任务的的调度和执行。针对定时任务的处理,首先创建一个客户端对象,并提供注册中心以及任务队列的地址作为入参,用于连接注册中心和任务队列,示例性的,注册中心可以为Etcd(Etcd是一个分布式的、高可用的、一致的key-value(键值对)存储数据库,基于Go语言实现,主要用于共享配置和服务发现),任务队列可以为Redis(RemoteDictionary Server,即远程字典服务,是一个开源的使用ANSI标准C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的应用程序接口)。其次为客户端对象创建一个与业务对应的任务管理器,并按照规范编写并配置任务添加一个实现了任务接口的对象,任务接口中主要封装了生产任务、消费任务、任务消费成功回调、任务消费失败回调四个接口方法等,还通过任务接口的调用实现任务启动、执行、停止等多种管理。由此可见,本申请实施例对于业务代码的侵入性非常低,能够通过接口动态添加新的任务或移除未消费的任务,或者通过接口暂停和重启任务,且支持接口回调,方便跟踪任务执行状态。并且,降低了技术人员处理分布式环境(微服务架构也是一种分布式环境)下定时任务的开发和管理的工作量,可以快速接入项目。
具体地,所述任务配置信息可以包括但不限于任务生产信息、任务消费信息和分片信息,所述任务生产信息可以包括但不限于生产任务的cron表达式、任务的标识、任务的名称和内容、任务的优先级等,所述任务消费信息可以包括但不限于消费任务的cron表达式、任务的消费顺序(同步或异步)、任务消费失败后的重试机制、最大重试次数、协程池常驻协程数目、异步执行时内存队列最大长度,所述分片信息可以包括但不限于分片策略、分片数目。所述任务生产信息指示多个定时子任务,也即包括至少两个定时子任务的生产信息。
在本申请的一个实施例中,具体地,所述方法还包括:
响应于客户端的服务发布请求,将微服务的各微服务实例注册为节点,得到与所述当前微服务对应的节点集群。
所述节点集群中的各节点启动协程来向注册中心发送目标状态信息,所述目标状态信息表征所述节点处于正常运行中。
可性地,注册中心将各微服务实例信息存储在服务注册表中。节点每隔一段时间调用注册中心对外提供的续约保活接口向注册中心上报保活信息(也即目标状态信息)。当一定时间没有收到节点的保活信息,注册中心将该节点对应的实例从服务注册表中移除。
在本申请的一个实施例中,具体地,所述方法还包括:
响应于基于任务接口触发的任务启动指令,节点集群中的多个节点进行竞选,确定任务生产节点和任务消费节点。
所述任务消费节点对所述任务生产节点进行监听,确定所述任务生产节点的节点状态信息。
当所述节点状态信息表征所述任务生产节点出现故障时,从所述节点集群中重新确定目标任务生产节点和目标任务消费节点。
在本申请实施例中,也将任务生产节点称为主节点,主节点用于执行任务生产,将任务消费节点称为非主节点,非主节点用于执行任务消费。此外,节点集群中的各节点都可以对其他节点的状态进行监控。通过对节点状态监控,实时确定可用的节点(实例),保证服务的高可用性。
S230:根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务。
在本申请实施例中,根据任务生产信息实例化任务,得到多个定时子任务,每个定时子任务对应于一类定时任务,示例性的,比如比赛活动业务中的报名通知推送任务、比赛周报推送任务或在比赛创建后一定天数后向参赛者推送比赛开始通知的任务。如图4中所示,只有主节点(也即任务生产节点)才会执行生产任务的逻辑,并且将生产出来的任务根据分片信息中的分片策略添加到任务队列。
在本申请实施例中,基于任务分片的思想,根据分片信息对每个定时子任务添加分片编号这一信息,不同定时子任务的分片编号可以相同也可以不同,同一分片编号可以对应有一个或多个定时子任务。其中,定时子任务与任务配置信息中的任务单元在粒度可以相等也可以不等,可以视业务需求和节点的处理能力而定。
在本申请的一个实施例中,根据任务的标识序号确定分片编号,具体的,如图5所示,所述步骤S230可以包括以下步骤:
S231:响应于基于所述任务接口触发的任务生产指令,根据所述分片信息确定第一分片策略和分片数目。
可以理解的是,本申请实施例通过任务接口的调用实现对任务处理过程中任务生产的管理。
所述第一分片策略指示采用hash(哈希)分片策略,哈希分片方式有三种:哈希取模法、虚拟桶、一致性哈希。以哈希取模法为例进行下述说明。
S233:基于所述第一分片策略,根据所述任务生产信息确定所述多个定时子任务中各定时子任务的任务标识编号。
S235:根据所述各定时子任务的任务标识编号和所述分片数目进行模运算,确定多个分片编号,以及每个分片编号对应的定时子任务。
可以理解的是,确定每个定时子任务的分片编号,以便根据分片编号对定时子任务进行划分。具体地,任务标识编号为正数时模运算等同于取余运算,对任务标识编号和分片数目进行模运算,也即将任务标识编号为被除数,分片数目为除数,作商后得到的余数为定时子任务对应的分片编号。示例性的,对于任务ID为1-10的定时子任务,分片数目为3,以采用hash分片策略为例,任务生产、分片的结果为:
分片编号0的定时子任务有任务3、6、9;
分片编号1的定时子任务有任务1、4、7、10;
分片编号2的定时子任务有任务2、5、8。
在本申请的另一个实施例中,根据任务的优先级确定分片编号,具体的,如图6所示,所述步骤S230还可以包括以下步骤:
S232:响应于所述任务接口触发的任务生产指令,根据所述分片信息确定第二分片策略。
所述第二分片策略指示采用优先级分片策略。
S234:基于所述第二分片策略,根据所述任务生产信息确定所述多个定时子任务中各定时子任务的任务优先级。
S236:确定处于健康状态的任务消费节点的节点数目。
根据本申请实施例中步骤S210中的内容,当启动服务时,负责处理定时任务的节点集群中的所有节点进行竞选,确定任务生产节点和任务消费节点,节点的状态可能是正常运行状态也可能是故障状态,通过节点直接的监听或者注册中心对节点的健康检查,可以确定当前处于健康状态也即正常运行状态的任务消费节点的节点数目。
在一种可行的实施方式中,节点对应的实例信息被存储在注册中心的服务注册表中,可以通过注册中心的服务注册表对外提供的查询接口确定当前处于健康状态的微服务实例数目,该微服务实例数目与当前处于正常运行状态的任务消费节点的节点数目对应。
S238:根据所述各定时子任务的任务优先级和所述节点数目,确定多个分片编号,以及每个分片编号对应的定时子任务。
示例性的,对于任务优先级为1-5的定时子任务,1-5表征任务优先级由高到低节点数目为3,以采用优先级分片策略为例,取任务优先级和节点数目中的较小值作为定时子任务的分片编号,任务生产和分片的结果如下:
分片编号1的定时子任务有任务1;
分片编号2的定时子任务有任务2;
分片编号3的定时子任务有任务3、4和5。
可知,将任务优先级高的定时子任务单独作为一组,以保证优先级高的定时子任务可以被准时有效地执行。
S250:将每个分片编号对应的定时子任务写入与所述分片编号对应的任务队列。
在本申请实施例中,如图4所示,由任务生产节点根据分片结果将定时子任务写入对应的任务队列中。
示例性的,客户端同时还与任务队列相连接,任务队列根据任务配置信息初始化多个任务队列,任务队列的名称为可以为:${服务名}-${任务}-${分片编号},其中分片编号的范围是可以根据分片信息确定的,如hsah分片策略中分片数目为3,则分片编号的范围为0、1、2。
在一种可行的实施方式中,具体地,如图7所示,所述步骤S250可以包括以下步骤:
S251:针对第一分片编号对应的多个第一定时子任务,根据多个所述第一定时子任务对应的执行时间,对多个所述第一定时子任务进行排序,得到第一序列;所述第一分片编号为所述多个分片编号中的任意一个。
可以理解的是,所述第一分片编号为多个分片编号中的一个,可以对应有一个或多个定时子任务,此处以其中一个分片编号以及该分片编号对应有多个定时子任务为例进行说明。
示例性的,定时子任务对应的是延迟时间,延迟时间表示定时子任务的执行时间为距离当前时间一定时间范围的时刻。
S253:按照所述第一序列,将多个所述第一定时子任务依次写入与所述第一分片编号对应的任务队列。
具体地,根据前述可知任务队列的名称中包含分片编号,可以将同为第一分片编号的多个第一定时子任务放入同一个任务队列中。由于任务队列采用先进先出的机制,故按执行时间由早到晚或延迟时间由小到大将各第一定时子任务放入名称包含第一分片编号的任务队列中。可以理解的是,可以通过任务队列实现任务投递的可靠性,并借由任务队列实现对定时子任务的调度。
S270:根据目标任务消费节点的目标序号和所述分片信息,确定所述目标任务消费节点对应的目标分片编号;所述多个分片编号包括所述目标分片编号;所述目标任务消费节点为用于处理定时任务的任务消费节点集群中的任一节点。
在本申请实施例中,由任务消费节点执行任务消费的逻辑,也即执行定时子任务。所谓的定时子任务的调度也即确定任务消费节点与定时子任务之间的对应关系,以使得多个定时子任务并发时能够被多个任务消费节点有序执行,并且能够充分利用节点的处理资源。
在本申请实施例中,以一个任务消费节点(也即目标任务消费节点为例,该节点当前处理健康状态)为例,所述目标序号表征该目标任务消费节点对应的微服务实例在服务注册表中的序号,所述目标分片编号为任务生产分片过程中确定的多个分片编号中的一个,任务消费节点根据分片编号获取并执行对应的定时子任务。同时,一个目标分片编号可以对应于一个或多个任务消费节点,视对任务消费节点的编号结果而定。
在本申请的一个实施例中,具体的,如图8所示,所述步骤S270可以包括以下步骤:
S271:确定所述目标任务消费节点对应的微服务实例在服务注册表中的目标序号。
示例性的,如图4所示,所有任务消费节点(也即非主节点)通过监控其他节点数量变化来计算目标序号,或者通过调用注册中心的服务注册表对外提供的查询接口确定当前处于正常运行状态的微服务实例的个数和对应序号。
S273:根据所述分片信息确定分片数目。
S275:根据所述目标序号和所述分片数目进行模运算,确定所述目标任务消费节点对应的目标分片编号。
在上述实施例中,基于分片的思想,对节点添加用于提取对应定时子任务的分片编号,保障了每个定时子任务均被执行而不会发生任务堆积;同时当某个任务消费节点出现故障时,其他任务消费节点更新各自的用于提取定时子任务的分片编号,从而将故障节点负责的定时子任务转移至其他任务消费节点进行执行,保障线上服务的稳定运行。
S290:从与所述目标分片编号对应的任务队列中取出目标定时子任务,以使所述目标任务消费节点根据所述任务消费信息执行所述目标定时子任务。
可以理解的是,任务队列的名称中包含分片编号,一个任务队列对应于一个分片编号。
在一种可行的实施方式中,任务队列中的多个具有相同分片编号的定时子任务按照执行时间排序,基于队列先进先出的机制,定时子任务也是按照执行时间的先后顺序从任务队列中被取出。
在本申请的一个实施例中,具体的,如图9所示,所述步骤S290可以包括以下步骤:
S291:响应于基于所述任务接口触发的任务消费指令,从与所述目标分片编号对应的任务队列中取出目标定时子任务,所述目标定时子任务为从任务队列出队的首个定时子任务。
在本申请实施例中,通过调用任务接口中的任务消费方法触发任务消费指令。
S293:当所述目标定时子任务对应的执行时间不大于当前系统时间时,由所述目标任务消费节点根据所述任务消费信息,异步执行或同步执行所述目标定时子任务。
可以理解为,所述目标定时子任务对应的执行不大于当前系统时间,也即表示当前需要执行该目标定时子任务,所述目标定时子任务对应的执行大于当前系统时间也即表示还未到执行该目标定时子任务的时刻。一般的,出队时目标定时子任务对应的执行时间与当前系统时间的间隔很小。
在一种可行的实施方式中,如果一个目标分片编号对应有多个任务消费节点,则节点对该目标定时子任务进行抢占,由抢占成功的目标任务消费节点执行对该目标定时子任务。如图4所示,根据任务消费信息对目标定时子任务进行同步执行或异步执行。对于优先级高的任务可以利用优先级分片策略加异步执行方式实现高效精准的执行,防止因为高耗时的任务执行时间过长而造成堵塞。
在一种可行的实施方式中,如图10所示,所述步骤S293还可以包括以下步骤:
S2931:获取对应的执行结果。
S2932:判断所述执行结果是否表征任务消费成功。
S2933:在所述执行结果表征任务消费成功的情况下,响应于基于所述任务接口触发的结果回调指令,将所述执行结果进行上报。
S2934:在所述执行结果表征任务消费失败的情况下,判断重复执行所述目标定时子任务的次数是否达到预设次数。
所述预设次数为预设的可重复消费任务的最大次数,所述预设次数为正整数。
S2935:当未达到所述预设次数时,再次执行所述目标定时子任务。
当达到所述预设次数时,执行步骤S2933。
另一种可行的实施方式中,消息回调方法分为了消费成功的回调方法和消费是被的回调方法,如果任务消费成功,则触发消费成功的回调方法,否则判断任务是否触发最大重试次数,如果未触发则继续重试,否则调用消费失败的回调方法。
在上述实施例中,在任务执行过程支持接口回调,方便跟踪定时子任务的执行状态,保障任务执行的高可靠性。
本申请实施例还提供了一种定时任务处理装置1110,如图11所示,所述装置1100可以包括:
任务配置信息获取模块1111,用于响应于基于任务接口触发的任务启动指令,获取针对定时任务的任务配置信息;所述任务配置信息包括任务生产信息、任务消费信息和分片信息,所述任务生产信息指示多个定时子任务;
任务生产模块1120,用于根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务;
任务入队模块1130,用于将每个分片编号对应的定时子任务写入与所述分片编号对应的任务队列;
节点编号确定模块1140,用于根据目标任务消费节点的目标序号和所述分片信息,确定所述目标任务消费节点对应的目标分片编号;所述多个分片编号包括所述目标分片编号;所述目标任务消费节点为用于处理定时任务的任务消费节点集群中的任一节点;
任务消费模块1150,用于从与所述目标分片编号对应的任务队列中取出目标定时子任务,以使所述目标任务消费节点根据所述任务消费信息执行所述目标定时子任务。
在本申请的一个实施例中,所述任务生产模块1120可以包括:
分片策略及数目确定单元,用于响应于基于所述任务接口触发的任务生产指令,根据所述分片信息确定第一分片策略和分片数目;
任务标识编号单元,用于基于所述第一分片策略,根据所述任务生产信息确定所述多个定时子任务中各定时子任务的任务标识编号;
分片编号第一确定单元,用于根据所述各定时子任务的任务标识编号和所述分片数目进行模运算,确定多个分片编号,以及每个分片编号对应的定时子任务。
在本申请的一个实施例中,所述任务生产模块1120还可以包括:
分片策略确定单元,用于响应于所述任务接口触发的任务生产指令,根据所述分片信息确定第二分片策略;
任务优先级确定单元,用于基于所述第二分片策略,根据所述任务生产信息确定所述多个定时子任务中各定时子任务的任务优先级;
节点数目确定单元,用于确定处于健康状态的任务消费节点的节点数目;
分片编号第二确定单元,用于根据所述各定时子任务的任务优先级和所述节点数目,确定多个分片编号,以及每个分片编号对应的定时子任务。
在本申请的一个实施例中,所述任务入队模块1130可以包括:
排序单元,用于针对第一分片编号对应的多个第一定时子任务,根据多个所述第一定时子任务对应的执行时间,对多个所述第一定时子任务进行排序,得到第一序列;所述第一分片编号为所述多个分片编号中的任意一个;
入队单元,用于按照所述第一序列,将多个所述第一定时子任务依次写入与所述第一分片编号对应的任务队列。
在本申请的一个实施例中,所述节点编号确定模块1140可以包括:
目标序号确定单元,用于确定所述目标任务消费节点对应的微服务实例在服务注册表中的目标序号;
分片数目确定单元,用于根据所述分片信息确定分片数目;
节点编号确定单元,用于根据所述目标序号和所述分片数目进行模运算,确定所述目标任务消费节点对应的目标分片编号。
在本申请的一个实施例中,所述任务消费模块1150可以包括:
任务出队单元,用于响应于基于所述任务接口触发的任务消费指令,从与所述目标分片编号对应的任务队列中取出目标定时子任务,所述目标定时子任务为从任务队列出队的首个定时子任务;
任务执行单元,用于当所述目标定时子任务对应的执行时间不大于当前系统时间时,由所述目标任务消费节点根据所述任务消费信息,异步执行或同步执行所述目标定时子任务。
在本申请的一个实施例中,所述任务消费模块1150还可以包括:
执行结果获取单元,用于获取对应的执行结果;
执行结果上报单元,用于在所述执行结果表征任务消费成功的情况下,响应于基于所述任务接口触发的结果回调指令,将所述执行结果进行上报;
重试执行单元,用于在所述执行结果表征任务消费失败的情况下,在预设次数内重复执行所述目标定时子任务。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的一种定时任务处理方法。
图12示出了一种用于实现本申请实施例所提供的一种定时任务处理方法的设备的硬件结构示意图,所述设备可以参与构成或包含本申请实施例所提供的装置或系统。如图12所示,设备10可以包括一个或多个(图中采用1002a、1002b,……,1002n来示出)处理器1002(处理器1002可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1004、以及用于通信功能的传输装置1006。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备10还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。
应当注意到的是上述一个或多个处理器1002和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器1004可用于存储应用软件的软件程序以及模块,如本申请实施例中所述的方法对应的程序指令/数据存储装置,处理器1002通过运行存储在存储器1004内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种定时任务处理方法。存储器1004可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1004可进一步包括相对于处理器1002远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备10的通信供应商提供的无线网络。在一个实例中,传输装置1006包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置1006可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与设备10(或移动设备)的用户界面进行交互。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于服务器之中以保存用于实现方法实施例中一种定时任务处理方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的一种定时任务处理方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施方式中提供的一种定时任务处理方法。
由上述本申请提供的定时任务处理方法、装置、介质及设备的实施例可见,
本申请提供的方案通过配置的任务接口实现对定时任务的可控管理,比如通过任务接口动态添加新的任务或移除未消费的任务,或者通过任务接口暂停或重启任务,任务接口中还封装有任务生产、任务消费和任务回调的方法,方便管理、追踪任务的处理状态,保障任务执行的高可靠性,同时也降低了对业务系统的代码侵入。
本申请提供的方案通过将多个任务分片执行,多个任务可以做到互不干扰,且充分利用了各个节点的处理资源,避免任务堆积导致任务无法被高效准时执行的问题,从而提高任务执行效率。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种定时任务处理方法,其特征在于,所述方法包括:
响应于基于任务接口触发的任务启动指令,获取针对定时任务的任务配置信息;所述任务配置信息包括任务生产信息、任务消费信息和分片信息,所述任务生产信息指示多个定时子任务;
根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务;
将每个分片编号对应的定时子任务写入与所述分片编号对应的任务队列;
根据目标任务消费节点的目标序号和所述分片信息,确定所述目标任务消费节点对应的目标分片编号;所述多个分片编号包括所述目标分片编号;所述目标任务消费节点为用于处理定时任务的任务消费节点集群中的任一节点;
从与所述目标分片编号对应的任务队列中取出目标定时子任务,以使所述目标任务消费节点根据所述任务消费信息执行所述目标定时子任务。
2.根据权利要求1所述的方法,其特征在于,所述根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务,包括:
响应于基于所述任务接口触发的任务生产指令,根据所述分片信息确定第一分片策略和分片数目;
基于所述第一分片策略,根据所述任务生产信息确定所述多个定时子任务中各定时子任务的任务标识编号;
根据所述各定时子任务的任务标识编号和所述分片数目进行模运算,确定多个分片编号,以及每个分片编号对应的定时子任务。
3.根据权利要求1所述的方法,其特征在于,所述根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务,还包括:
响应于所述任务接口触发的任务生产指令,根据所述分片信息确定第二分片策略;
基于所述第二分片策略,根据所述任务生产信息确定所述多个定时子任务中各定时子任务的任务优先级;
确定处于健康状态的任务消费节点的节点数目;
根据所述各定时子任务的任务优先级和所述节点数目,确定多个分片编号,以及每个分片编号对应的定时子任务。
4.根据权利要求2或3所述的方法,其特征在于,所述将每个分片编号对应的定时子任务写入与所述分片编号对应的任务队列,包括:
针对第一分片编号对应的多个第一定时子任务,根据多个所述第一定时子任务对应的执行时间,对多个所述第一定时子任务进行排序,得到第一序列;所述第一分片编号为所述多个分片编号中的任意一个;
按照所述第一序列,将多个所述第一定时子任务依次写入与所述第一分片编号对应的任务队列。
5.根据权利要求1所述的方法,其特征在于,所述根据目标任务消费节点的目标序号和所述分片信息,确定所述目标任务消费节点对应的目标分片编号,包括:
确定所述目标任务消费节点对应的微服务实例在服务注册表中的目标序号;
根据所述分片信息确定分片数目;
根据所述目标序号和所述分片数目进行模运算,确定所述目标任务消费节点对应的目标分片编号。
6.根据权利要求1所述的方法,其特征在于,所述从与所述目标分片编号对应的任务队列中取出目标定时子任务,以使所述目标任务消费节点根据所述任务消费信息执行所述目标定时子任务,包括:
响应于基于所述任务接口触发的任务消费指令,从与所述目标分片编号对应的任务队列中取出目标定时子任务,所述目标定时子任务为从任务队列出队的首个定时子任务;
当所述目标定时子任务对应的执行时间不大于当前系统时间时,由所述目标任务消费节点根据所述任务消费信息,异步执行或同步执行所述目标定时子任务。
7.根据权利要求6所述的方法,其特征在于,所述当所述目标定时子任务对应的执行时间不大于当前系统时间时,由所述目标任务消费节点根据所述任务消费信息,异步执行或同步执行所述目标定时子任务,还包括:
获取对应的执行结果;
在所述执行结果表征任务消费成功的情况下,响应于基于所述任务接口触发的结果回调指令,将所述执行结果进行上报;
在所述执行结果表征任务消费失败的情况下,在预设次数内重复执行所述目标定时子任务。
8.一种定时任务处理装置,其特征在于,所述装置包括:
任务配置信息获取模块,用于响应于基于任务接口触发的任务启动指令,获取针对定时任务的任务配置信息;所述任务配置信息包括任务生产信息、任务消费信息和分片信息,所述任务生产信息指示多个定时子任务;
任务生产模块,用于根据所述任务生产信息和所述分片信息确定多个分片编号,以及每个分片编号对应的定时子任务;
任务入队模块,用于将每个分片编号对应的定时子任务写入与所述分片编号对应的任务队列;
节点编号确定模块,用于根据目标任务消费节点的目标序号和所述分片信息,确定所述目标任务消费节点对应的目标分片编号;所述多个分片编号包括所述目标分片编号;所述目标任务消费节点为用于处理定时任务的任务消费节点集群中的任一节点;
任务消费模块,用于从与所述目标分片编号对应的任务队列中取出目标定时子任务,以使所述目标任务消费节点根据所述任务消费信息执行所述目标定时子任务。
9.一种计算可读机存储介质,其特征在于,所述计算可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1至7中任一项所述的一种定时任务处理方法。
10.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由所述处理器加载并执行以实现如权利要求1至7中任一项所述的一种定时任务处理方法。
11.一种计算机程序产品,所述计算机程序产品包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1至7中任一项所述的一种定时任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111059537.1A CN115794321A (zh) | 2021-09-10 | 2021-09-10 | 定时任务处理方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111059537.1A CN115794321A (zh) | 2021-09-10 | 2021-09-10 | 定时任务处理方法、装置、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794321A true CN115794321A (zh) | 2023-03-14 |
Family
ID=85417035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111059537.1A Pending CN115794321A (zh) | 2021-09-10 | 2021-09-10 | 定时任务处理方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794321A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117118939A (zh) * | 2023-10-24 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 一种数据处理方法,装置、设备以及存储介质 |
-
2021
- 2021-09-10 CN CN202111059537.1A patent/CN115794321A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117118939A (zh) * | 2023-10-24 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 一种数据处理方法,装置、设备以及存储介质 |
CN117118939B (zh) * | 2023-10-24 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 一种数据处理方法,装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11321139B2 (en) | Streaming traffic pattern for public cloud auto scaling | |
CN111813570A (zh) | 一种电力物联网的事件驱动型消息交互方法 | |
Boloor et al. | Dynamic request allocation and scheduling for context aware applications subject to a percentile response time SLA in a distributed cloud | |
WO2021104178A1 (zh) | 一种动态消息推送方法、系统和汽车诊断服务器 | |
CN111611091A (zh) | 一种业务对象的服务调用方法、装置及介质 | |
CN109117252B (zh) | 基于容器的任务处理的方法、系统及容器集群管理系统 | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
US11372871B1 (en) | Programmable framework for distributed computation of statistical functions over time-based data | |
CN115185705A (zh) | 一种消息通知方法、装置、介质及设备 | |
Hirsch et al. | DewSim: A trace‐driven toolkit for simulating mobile device clusters in Dew computing environments | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
CN112328448A (zh) | 基于Zookeeper的监控方法、监控装置、设备及存储介质 | |
CN113703867A (zh) | 一种无服务计算中加速启动方法及系统 | |
CN117492944A (zh) | 任务调度方法、装置、电子设备及可读存储介质 | |
CN115794321A (zh) | 定时任务处理方法、装置、介质及设备 | |
CN114565502A (zh) | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 | |
CN114579250B (zh) | 一种构建虚拟集群的方法、装置及存储介质 | |
CN114385351A (zh) | 云管理平台负载均衡性能优化方法、装置、设备、介质 | |
CN111104212A (zh) | 一种调度任务执行方法、装置、电子设备及存储介质 | |
CN117149413A (zh) | 一种通用ai算法模型云服务集成部署系统及方法 | |
CN115550382A (zh) | 配置项同步方法、装置、系统以及设备 | |
CN111414200B (zh) | 安装操作系统的方法、装置、电子设备和计算机可读介质 | |
CN114564249A (zh) | 推荐调度引擎、推荐调度方法及计算机可读存储介质 | |
CN114662102A (zh) | 一种文件处理方法、装置及存储介质 | |
CN115525440A (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 |