一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种定时任务的执行方法、装置、设备及存储介质与流程

2022-03-26 15:31:17 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体而言,涉及一种定时任务的执行方法、装置、设备及存储介质。


背景技术:

2.随着互联网技术的快速发展,服务器中需要处理的定时任务越来越多,通常在定时任务的执行过程中,需要在数据库进行读写操作。
3.现有技术下,在执行定时任务时,通常需要与数据库中进行大量的读写交互。
4.但是,在与数据库交互过程中,较大的占用数据库的资源,数据库压力变大,交互时间过于频繁,导致定时任务执行效率较低。
5.由此,在执行定时任务时,如何提高定时任务的执行效率,是一个需要解决的技术问题。


技术实现要素:

6.本技术实施例的目的在于提供一种定时任务的执行方法、装置、设备及存储介质,用以在执行定时任务时,提高定时任务的执行效率。
7.一方面,提供一种定时任务的执行方法,包括:
8.接收任务调度中心针对至少一个定时任务分发的定时任务执行指令,其中,定时任务执行指令是任务调度中心确定至少一个定时任务达到相应的执行时间时分发的;
9.基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;
10.采用协程的方式,基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果;
11.将至少一个定时任务的执行结果,存储至数据库。
12.在上述实现过程中,服务器通过从数据库中获取定时任务对应的任务数据,采用多协程的方式,并发执行定时任务,大大提高了定时任务的执行效率。
13.一种实施方式中,采用协程的方式,基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果,包括:
14.分别针对至少一个定时任务中的每一定时任务,执行以下步骤:
15.将一个定时任务进行拆分,获得一个定时任务的多个子任务;
16.分别针对每一子任务创建至少一个协程;
17.基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务。
18.在上述实现过程中,服务器将定时任务拆分为多个子任务,并为每一子任务创建一个协程,多协程并发执行,提高了定时任务的执行效率。
19.一种实施方式中,在基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务之前,还包括:
20.分别针对至少一个定时任务中每一定时任务对应的任务数据,创建任务数据数
组;
21.获取至少一个定时任务对应的任务数据数组的数组地址;
22.基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务,包括:
23.采用各协程,根据一个定时任务对应的数组地址,调用一个定时任务对应的任务数据,分别执行每一子任务,其中,不同子任务之间通过管道进行数据传输。
24.在上述实现过程中,服务器在执行定时任务时,针对定时任务对应的任务数据,创建任务数据数组,并根据数据地址获得任务数据,并发执行每一子任务。
25.一方面,提供一种定时任务的执行方法,包括:
26.分别获取每一定时任务的执行时间;
27.确定至少一个定时任务达到相应的执行时间时,针对至少一个定时任务生成定时任务执行指令;
28.向至少一个服务器发送定时任务执行指令,使得一个服务器执行以下步骤:基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果;将至少一个定时任务的执行结果,存储至数据库。
29.在上述实现过程中,任务调度中心向服务器发送定时任务执行指令,基于定时任务执行指令,调度服务器执行定时任务。
30.一方面,提供一种定时任务的执行装置,包括:
31.接收单元,用于接收任务调度中心针对至少一个定时任务分发的定时任务执行指令,其中,定时任务执行指令是任务调度中心确定至少一个定时任务达到相应的执行时间时分发的;
32.获取单元,用于基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;
33.执行单元,用于采用协程的方式,基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果;
34.存储单元,用于将至少一个定时任务的执行结果,存储至数据库。
35.一种实施方式中,执行单元具体用于:
36.分别针对至少一个定时任务中的每一定时任务,执行以下步骤:
37.将一个定时任务进行拆分,获得一个定时任务的多个子任务;
38.分别针对每一子任务创建一个协程;
39.基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务。
40.一种实施方式中,执行单元还用于:
41.分别针对至少一个定时任务中每一定时任务对应的任务数据,创建任务数据数组;
42.获取至少一个定时任务对应的任务数据数组的数组地址;
43.基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务,包括:
44.采用各协程,根据一个定时任务对应的数组地址,调用一个定时任务对应的任务数据,分别执行每一子任务,其中,不同子任务之间通过管道进行数据传输。
45.一方面,提供一种定时任务的执行装置,包括:
46.获取单元,用于分别获取每一定时任务的执行时间;
47.生成单元,用于确定至少一个定时任务达到相应的执行时间时,针对至少一个定时任务生成定时任务执行指令;
48.发送单元,用于向至少一个服务器中的一个服务器发送定时任务执行指令,使得一个服务器执行以下步骤:基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果;将至少一个定时任务的执行结果,存储至数据库。
49.一方面,提供了一种电子设备,包括处理器以及存储器,存储器存储有计算机可读取指令,当计算机可读取指令由处理器执行时,运行如上述任一种定时任务的执行各种可选实现方式中提供的方法的步骤。
50.一方面,提供了一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时运行如上述任一种定时任务的执行各种可选实现方式中提供的方法的步骤。
51.一方面,提供了一种计算机程序产品,计算机程序产品在计算机上运行时,使得计算机执行如上述任一种定时任务的执行各种可选实现方式中提供的方法的步骤。
52.本技术实施例提供的一种定时任务的执行方法、装置、设备及存储介质中,接收任务调度中心针对至少一个定时任务分发的定时任务执行指令,其中,定时任务执行指令是任务调度中心确定至少一个定时任务达到相应的执行时间时分发的;基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;采用协程的方式,基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果;将至少一个定时任务的执行结果,存储至所述数据库。这样,就可以从数据库中获取任务数据,采用多协程的方式,并发执行定时任务,提高了定时任务的执行效率。
53.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
54.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
55.图1为本技术实施例提供的一种定时任务的执行方法的应用场景示意图;
56.图2为本技术实施例提供的一种定时任务的执行方法的实施流程图;
57.图3为本技术实施例提供的一种go语言实现定时任务批量执行的方法的实施流程图;
58.图4为本技术实施例提供的一种任务调度中心调度远程主机的方法的示例图;
59.图5为本技术实施例提供的一种定时任务的执行方法的详细实施流程图;
60.图6为本技术实施例提供的一种定时任务的执行装置的结构示意图一;
61.图7为本技术实施例提供的一种定时任务的执行装置的结构示意图二;
62.图8为本技术实施方式中一种电子设备的结构示意图。
具体实施方式
63.下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
64.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
65.首先对本技术实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
66.终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统设备、个人导航设备、个人数字助理、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,终端设备能够支持任意类型的针对用户的接口(例如可穿戴设备)等。
67.服务器:可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。
68.通信顺序进程(communicating sequential process,csp):为一种描述并发系统中通过消息交换进行交互通信实体行为的抽象语言。
69.管道(channel):为进程、线程或协程之间通信的一种结构。
70.并发:指一个时间段中有几个程序都处于已启动运行到运行结束之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
71.为了执行定时任务时,可以提高定时任务的执行效率,本技术实施例提供了一种定时任务的执行方法、装置、设备及存储介质。
72.参阅图1所示,为本技术实施例提供的一种定时任务的执行方法的应用场景示意图。图1中,包括任务调度中心、服务器以及数据库。图1中仅以服务器为两个设备为例进行说明,即服务器1和服务器2。实际应用中,服务器的数量可以为一个或多个,在此不作限制。
73.任务调度中心:用于分别获取每一定时任务的执行时间,并确定至少一个定时任务达到相应的执行时间时,针对至少一个定时任务生成定时任务执行指令,以及向至少一个服务器发送定时任务执行指令,使得服务器开始执行定时任务。
74.服务器:用于接收任务调度中心发送的定时任务执行指令,并根据定时任务执行指令,与数据库建立连接,并从数据库中,获取至少一个定时任务对应的任务数据,以及采用协程的方式,执行至少一个定时任务,获得至少一个定时任务的执行结果,以及把执行结果,存储至数据库。
75.数据库:用于与服务器建立连接,并接收服务器的执行结果。
76.一种实施方式中,任务调度中心分别获取每一定时任务的执行时间,并确定至少一个定时任务达到相应的执行时间时,针对至少一个定时任务生成定时任务执行指令,以及向至少一个服务器发送定时任务执行指令。服务器接收任务调度中心发送的定时任务执行指令,并根据定时任务执行指令,与数据库建立连接,并从数据库中,获取至少一个定时任务对应的任务数据,以及分别针对至少一个定时任务中每一定时任务对应的任务数据,创建任务数据数组,获取至少一个定时任务对应的任务数据数组的数组地址。服务器分别将至少一个定时任务进行拆分,获得一个定时任务的多个子任务,并分别针对每一子任务创建至少一个协程,以及采用各协程,根据一个定时任务对应的数组地址,调用一个定时任务对应的任务数据,分别执行每一子任务,已经将每一定时任务的执行结果,回写至数据库,以及将定时任务的执行情况返回给调度任务中心。
77.这样,在执行定时任务时,就可以从数据库中获取定时任务对应的任务数据,并将一个定时任务拆分成多个子任务,采用协程的方式,为每一定时任务的每一子任务,创建一个协程,并发执行定时任务,大大提高了定时任务的执行效率,减少了定时任务与数据库的交互,减少了数据库的压力。
78.本技术实施例中,仅以执行主体为服务器为例进行说明,实际应用中,执行主体也可以为终端设备等其他电子设备,在此不作限制。
79.参阅图2所示,为本技术实施例提供的一种定时任务的执行方法的实施流程图,结合上述应用场景,该方法的具体实施流程如下:
80.步骤200:接收任务调度中心针对至少一个定时任务分发的定时任务执行指令。
81.具体的,任务调度中心确定至少一个定时任务达到相应执行时间时,向服务器下发至少一个定时任务执行指令,服务器接收任务调度中心针对至少一个定时任务,发出的定时任务执行指令。
82.其中,定时任务可以为go语言编写的,也可以为java语言编写的,实际应用中,定时任务可以为其它语言编写的,可根据实际应用情况进行确定,在此不作限制。
83.其中,任务调度中心可以跨定时任务的编写语言,跨定时任务的所在平台,进行定时任务的调度。
84.其中,定时任务执行指令是任务调度中心确定至少一个定时任务达到相应的执行时间时分发的。
85.可选的,任务调度中心可以为基于计划任务(cron)的任务调度中心。
86.实际应用中,任务调度中心也可以为基于其它技术的任务调度中心,在此不作限制。
87.其中,cron为一个规范的解析器和作业运行器。
88.可选的,cron可以提供以下接口:cron.new创建一个定时器管理器、cron.newwithlocation返回一个新的cron作业运行程序、cron.schedule计划将作业任务添加到cron以按给定计划运行、c.addfunc添加一个定时任务,第一个参数是cron时间表达式,第二个参数是要触发执行的函数、c.addjob将作业添加到cron以按给定计划运行、c.start()新启一个协程,运行定时任务、c.run()执行定时任务,以及c.stop是等待停止信号结束任务等。
89.这样,服务器就可以接收到任务调度中心的定时任务执行指令,并基于接收到的
任务调度中心的定时任务执行指令,执行定时任务。
90.其中,在执行步骤200之前,任务调度中心可以执行以下步骤:
91.步骤一:分别获取每一定时任务的执行时间。
92.具体的,任务调度中心分别获取每一个定时任务的执行时间。
93.可选的,任务调度中心可以通过任务输入的方式,获取每一定时任务的具体执行时间。
94.实际应用中,任务调度中心,也可以通过其它的方式获得定时任务的执行时间,在此不作限制。
95.步骤二:确定至少一个定时任务达到相应的执行时间时,针对至少一个定时任务生成定时任务执行指令。
96.具体的,任务调度中心确定至少一个定时任务达到相应的执行时间时,针对每一达到相应的执行时间的定时任务,生成一个定时任务执行指令。
97.其中,定时任务执行指令可以为驱使服务器执行定时任务的一种指令。
98.一种实施方式中,任务调度中心通过生成定时器的方式,在后续的步骤中,向服务器发出定时任务执行指令。
99.步骤三:向至少一个服务器发送定时任务执行指令。
100.一种实施方式中,任务调度中心获取每一定时任务的执行时间,确定至少一个定时任务达到执行时间时,针对至少一个定时任务,生成定时任务执行指令,并向服务器发送定时任务执行指令。
101.这样,任务调度中心通过获取分别获取每一定时任务的执行时间,再确定至少一个定时任务达到相应的执行时间时,向服务器发送定时任务执行指令,使得服务器开始执行定时任务。
102.步骤201:基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据。
103.具体的,服务器接收到调度中心下发的定时任务执行指令后,服务器与数据库建立连接,并根据定时任务的数据选取条件,从数据库中获取至少一个定时任务对应的任务数据。
104.一种实施方式中,服务器中基于定时任务执行指令,与数据库建立连接,并根据定时任务的保单数据选取条件,获取到符合保单数据选取条件的保单。
105.可选的,保单数据选取条件可以为保单的状态、客户的姓名、保单的日期等。
106.其中,保单的状态可以为有效和失效。
107.进一步的,服务器接收任务调度中心的调度,在完成定时任务执行指令后,存在定时任务不满足执行条件,由此,在满足上述定时任务执行条件后,该定时任务需要单独执行。
108.其中,不满足执行条件可以为当前时间服务器有更重要的任务执行。
109.实际应用中,也可能由于其它因素,导致无法按时完成定时任务,在此不作限制。
110.进一步的,存在定时任务在相应的执行时间执行后,还需要在其他时间点进行执行,该定时任务需要单独执行。
111.这样,通过将定时任务的任务数据抽离到服务器,服务器采用多协程,并发执行定
时任务,并将定时任务执行结果存储到数据库中,缩短了定时任务的执行时间,提高了定时任务的执行效率。通过集中获取批量定时任务的任务数据,批量任务执行完成后,并将批量任务的执行结果,回写到数据库中,减少了定时任务与数据库的交互,降低了数据库中其它任务处理的风险,减少了数据库的资源使用压力,保障了数据库的可用性。
112.实际应用中,可根据实际应用情况确定数据选取条件,在此不作限制。
113.可选的,服务器可以通过开启数据连接的方式,与数据库建立连接。
114.实际应用中,服务器可以根据实际应用情况,采用其它方式,与数据库建立连接,在此不作限制。
115.这样,服务器就可以从数据库中获取至少一个定时任务对应的任务数据,就可以在后续的步骤中,基于定时任务对应的任务数据,执行至少一个定时任务。
116.步骤202:采用协程的方式,基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果。
117.具体的,在执行步骤202时,可以分别针对至少一个定时任务中的每一定时任务,执行以下步骤:
118.s2021:将一个定时任务进行拆分,获得一个定时任务的多个子任务。
119.具体的,服务器将一个定时任务进行拆分,获得至少一个定时任务的多个子步骤,并将这些子步骤看做多个子任务。
120.s2022:分别针对每一子任务创建至少一个协程。
121.具体的,服务器分别针对一个定时任务拆分的每一子任务,都创建至少一个协程。
122.s2023:基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务。
123.具体的,可以执行步骤:采用各协程,根据一个定时任务对应的数组地址,调用一个定时任务对应的任务数据,分别执行每一子任务。
124.具体的,服务器采用各协程的方式,根据一个定时任务对应的数组地址,调用一个定时任务对应的任务数据,并根据调用的一个定时任务对应的任务数据,采用csp并发模型的方式,并发执行一个定时任务中的每一子任务,不同的子任务之间通过管道来进行通讯的方式,实现不同的子步骤之间的数据共享。
125.其中,不同子任务之间通过管道进行数据传输。
126.可选的,不同的子步骤之间还可以采用其它的方式进行数据传输,在此不作限制。
127.这样,服务器就可以将定时任务进行拆分,采用协程的方式,并发执行定时任务。
128.具体的,在执行步骤s2023之前,可以采用以下步骤:
129.步骤一:分别针对至少一个定时任务中每一定时任务对应的任务数据,创建任务数据数组。
130.具体的,服务器分别针对至少一个定时任务中,根据每一个定时任务对应的任务数据,创建任务数据数组。
131.步骤二:获取至少一个定时任务对应的任务数据数组的数组地址。
132.具体的,服务器获取至少一个定时任务对应的任务数据数组的数组地址。
133.这样,服务器就可以在后续定时任务时,通过数组地址,获取定时任务对应的任务数据。
134.步骤203:将至少一个定时任务的执行结果,存储至数据库。
135.具体的,服务器通过开启数据连接的方式,与数据库建立连接,并将获得的至少一个定时任务的执行结果,回写至数据库。
136.进一步,大部分定时任务需要定时循环执行,所以每一定时任务执行完成后,需要服务器将定时任务的执行情况,返回给任务调度中心,若接收不到服务器返回的定时任务的执行情况,则任务调度中心等待,且不再向上述服务器发送该定时任务的定时任务执行指令,直到任务调度中心接收到服务器返回的定时任务的执行情况。
137.其中,定时任务执行指令可以基于设置定时器的方式,定时向服务器发送定时任务执行指令。
138.实际应用中,也可以根据实际应用情况,采用其他方式向服务器发送定时任务执行指令,在此不作限制。
139.一种实施方式中,任务调度中心为基于cron包的任务调度中心,任务调度中心启动cron调度程序,并开始执行定时任务:
140.(1)time.newtimer,任务调度中心创建一个新的定时器,确定至少一个定时任务达到执行时间时,通过定时器向定时任务所在的服务器发送定时任务执行指令。
141.(2)for.select,在定时任务执行完成后,任务调度中心接收不到服务器返回的定时任务的执行情况,则等待,且不再向上述服务器发送该定时任务的定时任务执行指令。
142.(3)timer.reset,会重置定时器,让它重新开始计时。
143.(4)timer.stop,任务调度中心停止定时器。
144.其中,若上述定时任务执行完成且不再执行,则任务调度中心停止定时器。
145.其中,cron包的时间表达式包含秒、分、小时、一个月中的某一天、月份,以及星期几,cron包的时间表达式中每一时间表达式中上述六个时间点都包含在内。例如,七点十分十一秒,cron包的时间表达式为11 107***。
146.这样,服务器就可以在执行完成定时任务后,将执行结果,存储至数据库中。
147.参阅图3所示,为本技术实施例提供的一种go语言实现定时任务批量执行的方法的流程图,该方法的具体实施流程如下:
148.步骤300:服务器开启多协程方式,通过多协程方式,获取定时任务数据。
149.步骤301:服务器采用多协程方式,通过定时任务数据,执行定时任务。
150.具体的,服务器采用for循环的方式,直到所有协程执行完毕。
151.步骤302:服务器开启多协程方式,将定时任务的执行结果,存储至数据库。
152.需要说明的是,服务器可以基于go func函数,执行定时任务。
153.其中,go func函数为执行定时任务的一种go语言函数,实际应用中,与可以采用其它函数执行定时任务,在此不作限制。
154.其中,服务器可以通过协程的方式,将定时任务的执行结果,存储至数据库。
155.这样,服务器就可以采用协程的方式,并发执行定时任务,提升了定时任务的执行效率。
156.参阅图4所示,为本技术实施例提供的一种任务调度中心调度远程主机的方法的示例图,图4中,包含用于调度远程主机,执行定时任务的任务调度中心和用于执行定时任务的远程主机。图4中,仅以远程主机为三个设备为例进行说明,即远程主机1、远程主机2以及远程主机3,实际应用中,远程主机的数量可以为一个或多个,在此不作限制。
157.任务调度中心确定三个远程主机中至少一个定时任务达到相应的执行时间时,针对至少一个定时任务,生成定时任务执行指令,并将定时任务执行指令,发送给至少一个定时任务所在的远程主机,远程主机接收定时任务的定时任务执行指令,并采用协程的方法,执行至少一个定时任务,执行完成后,并将至少一个的定时任务的执行情况返回给任务调度中心。
158.其中,定时任务的执行情况为定时任务执行成功或定时任务执行失败。
159.其中,不同远程主机的定时任务,可以为不同语言编写的。例如,go语言,java语言。
160.这样,就可以通过任务调度中心,调度不同远程主机、不同语言编写的定时任务,实现了跨主机跨语言的集中调度和管理定时任务。
161.参阅图5所示,为本技术实施例提供的一种定时任务的执行方法的详细实施流程图,该方法的具体实施流程如下:
162.步骤500:任务调度中心分别获取每一定时任务的执行时间。
163.步骤501:任务调度中心确定至少一个定时任务达到相应的执行时间时,针对至少一个定时任务生成定时任务执行指令。
164.步骤502:任务调度中心向至少一个服务器发送定时任务执行指令。
165.步骤503:服务器接收任务调度中心针对至少一个定时任务分发的定时任务执行指令。
166.步骤504:服务器基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据。
167.步骤505:服务器将至少一个定时任务进行拆分,获得至少一个定时任务的多个子任务。
168.步骤506:服务器分别针对每一子任务创建至少一个协程。
169.步骤507:服务器分别针对至少一个定时任务中每一定时任务对应的任务数据,创建任务数据数组。
170.步骤508:服务器获取至少一个定时任务对应的任务数据数组的数组地址。
171.步骤509:服务器采用各协程,根据一个定时任务对应的数组地址,调用一个定时任务对应的任务数据,分别执行每一子任务。
172.步骤510:服务器将定时任务的执行结果,存储至数据库。
173.步骤511:服务器将定时任务的执行情况,返回给任务调度中心。
174.其中,若上述定时任务执行情况为定时任务执行成功,则在该定时任务再次达到执行时间时,执行步骤500。
175.具体的,执行步骤500-步骤511时,具体步骤参见上述步骤200-步骤203,在此不做赘述。
176.传统的定时任务通常在数据库中执行,定时任务执行的时间长,随着业务量的增加,定时任务的数量增大,定时任务占用的数据库资源也越来越多数据库压力变大,导致其它任务不能得到及时的处理。且不同语言编写的定时任务的调度,必须在相对应的调度管理平台才能实现定时任务的调度,不能实现跨平台的集中调度和管理。
177.本技术实施例,在执行定时任务时,基于go语言,从数据库中获取任务数据,并将
一个定时任务拆分成多个子任务,采用协程的方式,为每一定时任务的每一子任务,创建一个协程,并发执行定时任务,缩短了定时任务的执行时间,提高了定时任务的执行效率。通过集中获取批量定时任务的任务数据,批量任务执行完成后,并将批量任务的执行结果,采用回写的模式,存储至数据库,减少了定时任务与数据库的交互,降低了数据库中其它任务处理的风险,减少了数据库的资源使用压力,保障了数据库的可用性和定时任务的执行时间的可控性。进一步的,在定时任务数量增加和定时任务的逻辑运算复杂增加时,可以通过扩展服务器的数量,保障定时任务的执行时间长度的可控性和数据库的可用性。且基于go语言的任务调度中心,不仅可以调度go语言编写的定时任务,还可以调度其它语言编写的定时任务,实现了跨平台的定时任务的集中调度和管理。
178.如图6所示,其为本技术实施例提供的一种定时任务的执行装置的结构示意图一,包括:
179.接收单元601,用于接收任务调度中心针对至少一个定时任务分发的定时任务执行指令,其中,定时任务执行指令是任务调度中心确定至少一个定时任务达到相应的执行时间时分发的;
180.获取单元602,用于基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;
181.执行单元603,用于采用协程的方式,基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果;
182.存储单元604,用于将至少一个定时任务的执行结果,存储至数据库。
183.一种实施方式中,执行单元603具体用于:
184.分别针对至少一个定时任务中的每一定时任务,执行以下步骤:
185.将一个定时任务进行拆分,获得一个定时任务的多个子任务;
186.分别针对每一子任务创建一个协程;
187.基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务。
188.一种实施方式中,执行单元603还用于:
189.分别针对至少一个定时任务中每一定时任务对应的任务数据,创建任务数据数组;
190.获取至少一个定时任务对应的任务数据数组的数组地址;
191.基于一个定时任务对应的任务数据,采用各协程,分别执行每一子任务,包括:
192.采用各协程,根据一个定时任务对应的数组地址,调用一个定时任务对应的任务数据,分别执行每一子任务,其中,不同子任务之间通过管道进行数据传输。
193.如图7所示,其为本技术实施例提供的一种定时任务的执行装置的结构示意图二,包括:
194.获取单元701,用于分别获取每一定时任务的执行时间;
195.生成单元702,用于确定至少一个定时任务达到相应的执行时间时,针对至少一个定时任务生成定时任务执行指令;
196.发送单元703,用于向至少一个服务器中的一个服务器发送定时任务执行指令,使得一个服务器执行以下步骤:基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结
果;将至少一个定时任务的执行结果,存储至数据库。
197.基于同一发明构思,本技术实施例中还提供了一种定时任务的执行装置,由于上述装置及设备解决问题的原理与一种定时任务的执行方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。
198.本技术实施例提供的一种定时任务的执行方法、装置、设备及存储介质中,接收任务调度中心针对至少一个定时任务分发的定时任务执行指令,其中,定时任务执行指令是任务调度中心确定至少一个定时任务达到相应的执行时间时分发的;基于定时任务执行指令,从数据库中,获取至少一个定时任务对应的任务数据;采用协程的方式,基于任务数据,执行至少一个定时任务,获得至少一个定时任务的执行结果;将至少一个定时任务的执行结果,存储至所述数据库。这样,在执行定时任务时,就可以从数据库中获取任务数据,采用多协程的方式,并发执行定时任务,大大提高了定时任务的执行效率。
199.图8示出了一种电子设备8000的结构示意图。参阅图8所示,电子设备8000包括:处理器8010以及存储器8020,可选的,还可以包括电源8030、显示单元8040、输入单元8050。
200.处理器8010是电子设备8000的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器8020内的软件程序和/或数据,执行电子设备8000的各种功能,从而对电子设备8000进行整体监控。
201.本技术实施例中,处理器8010调用存储器8020中存储的计算机程序时执行如图2中所示的实施例提供的一种定时任务的执行的方法。
202.可选的,处理器8010可包括一个或多个处理单元;优选的,处理器8010可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器8010中。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
203.存储器8020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、各种应用等;存储数据区可存储根据电子设备8000的使用所创建的数据等。此外,存储器8020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。
204.电子设备8000还包括给各个部件供电的电源8030(比如电池),电源可以通过电源管理系统与处理器8010逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
205.显示单元8040可用于显示由用户输入的信息或提供给用户的信息以及电子设备8000的各种菜单等,本发明实施例中主要用于显示电子设备8000中各应用的显示界面以及显示界面中显示的文本、图片等对象。显示单元8040可以包括显示面板8041。显示面板8041可以采用液晶显示屏(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置。
206.输入单元8050可用于接收用户输入的数字或字符等信息。输入单元8050可包括触控面板8051以及其他输入设备8052。其中,触控面板8051,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触摸笔等任何适合的物体或附件在触控面板8051上或在触控面板8051附近的操作)。
207.具体的,触控面板8051可以检测用户的触摸操作,并检测触摸操作带来的信号,将这些信号转换成触点坐标,发送给处理器8010,并接收处理器8010发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板8051。其他输入设备8052可以包括但不限于物理键盘、功能键(比如音量控制按键、开关机按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
208.当然,触控面板8051可覆盖显示面板8041,当触控面板8051检测到在其上或附近的触摸操作后,传送给处理器8010以确定触摸事件的类型,随后处理器8010根据触摸事件的类型在显示面板8041上提供相应的视觉输出。虽然在图8中,触控面板8051与显示面板8041是作为两个独立的部件来实现电子设备8000的输入和输出功能,但是在某些实施例中,可以将触控面板8051与显示面板8041集成而实现电子设备8000的输入和输出功能。
209.电子设备8000还可包括一个或多个传感器,例如压力传感器、重力加速度传感器、接近光传感器等。当然,根据具体应用中的需要,上述电子设备8000还可以包括摄像头等其它部件,由于这些部件不是本技术实施例中重点使用的部件,因此,在图8中没有示出,且不再详述。
210.本领域技术人员可以理解,图8仅仅是电子设备的举例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
211.本技术实施例中,一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得通信设备可以执行上述实施例中的各个步骤。
212.为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本技术时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
213.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
214.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
215.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
216.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
217.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
218.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献