CN112579269B - 一种定时任务处理方法及装置 - Google Patents
一种定时任务处理方法及装置 Download PDFInfo
- Publication number
- CN112579269B CN112579269B CN202011410625.7A CN202011410625A CN112579269B CN 112579269 B CN112579269 B CN 112579269B CN 202011410625 A CN202011410625 A CN 202011410625A CN 112579269 B CN112579269 B CN 112579269B
- Authority
- CN
- China
- Prior art keywords
- instance
- timing task
- task
- timing
- cache
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 11
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种定时任务处理方法及装置,该方法包括获取定时任务,并将定时任务存储在缓存中,根据缓存中定时任务的标识和各实例的标识,为各实例分配缓存中的定时任务,按照预设时间间隔将定时任务同步到各实例的本地缓存中,以使各实例以预设频率从各实例的本地缓存中获取符合时间条件的定时任务进行处理。实例在处理定时任务时,是在实例自己的本地缓存中获取相应的定时任务进行处理,不会实时的从服务器的缓存获取定时任务,因而不会增加服务器的吞吐量,也不会降低服务器的缓存性能。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种定时任务处理方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。在金融领域的客服作业***中,如何处理定时任务是一个重要的问题。
目前,在客服作业***场景中处理定时任务时,大部分是由后台服务器设定定时任务,通过不同的任务设置不同的定时器,但是在任务场景复杂且任务多的情况下,对不同的任务设置不同的定时器的这种方式,会占用过高的***资源,导致服务器性能大幅下降。
发明内容
本发明实施例提供一种定时任务处理方法及装置,用以提高服务器的性能,降低占用的***资源。
第一方面,本发明实施例提供一种定时任务处理方法,包括:
获取定时任务,并将所述定时任务存储在缓存中;
根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务;
按照预设时间间隔将所述定时任务同步到所述各实例的本地缓存中,以使所述各实例以预设频率从所述各实例的本地缓存中获取符合时间条件的定时任务进行处理。
上述技术方案中,实例在处理定时任务时,是在实例自己的本地缓存中获取相应的定时任务进行处理,不会实时的从服务器的缓存获取定时任务,因而不会增加服务器的吞吐量,也不会降低服务器的缓存性能。
可选的,所述根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务,包括:
针对所述缓存中任一定时任务和所述各实例中的任一实例,将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置;
若所述缓存中第一定时任务的位置小于第一实例的位置且距离所述第一实例的位置最近,则将所述第一定时任务分配给所述第一实例;
若所述缓存中所述第一定时任务的位置大于任一实例的位置,则将所述第一定时任务分配给距离所述预设整数范围区间的起始位置最近的实例。
上述技术方案中,通过判断各定时任务在预设整数范围区间中的位置来为实例分配任务,可以合理的为各实例分配任务,提高定时任务的处理效率,同时可以避免出现同一定时任务由多个实例处理的情况,降低了定时任务被分配给多个实例的风险。
可选的,所述为所述各实例分配所述缓存中的定时任务之后,还包括:
若所述各实例中任一实例发生故障,则将发生故障的实例从所述预设整数范围区间中清除,并将分配给所述发生故障的实例的定时任务重新分配。
上述技术方案中,通过将发生故障的实例进行清除,重新分配定时任务,可以保证定时任务的正常执行。
可选的,所述将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置,包括:
将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,得到所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值;
根据所述预设整数范围区间,对所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值进行取模运算,得到所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置。
上述技术方案中,通过将标识进行哈希计算后进行取模,可以将取模后的标识的限定在预设整数范围区间内,通过对比取模后的标识和预设整数范围区间,能够快速定位到标识在预设整数范围区间中的位置。
可选的,所述定时任务包括标识、时间和任务内容;
所述将所述定时任务存储在缓存中,包括:
根据所述定时任务的标识,分别将所述定时任务的时间存储在所述缓存的第一队列中,将所述定时任务的任务内容存储在所述缓存的第二队列中。
上述技术方案中,通过将定时任务的时间和任务内容分别存储在两个队列中,可以简化缓存中的存储结构。由于每个队列都是已经定时任务的标识进行存储的,能够依据定时任务的标识快速的查找到定时任务的时间以及任务内容,便于实例快速的读取。
可选的,所述符合时间条件的定时任务为所述定时任务的时间小于当前时间的时间戳的定时任务。
上述技术方案中,通过读取小于当前时间的时间戳的定时任务,来实现定时任务的执行,能够提高查找定时任务的效率。
可选的,所述各实例的本地缓存为分布式数据库。
通过使用分布式数据库来存在定时任务,能够增加定时任务的存储容量。
第二方面,本发明实施例提供一种定时任务处理装置,包括:
获取单元,用于获取定时任务,并将所述定时任务存储在缓存中;
处理单元,用于根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务;按照预设时间间隔将所述定时任务同步到所述各实例的本地缓存中,以使所述各实例以预设频率从所述各实例的本地缓存中获取符合时间条件的定时任务进行处理。
可选的,所述处理单元具体用于:
针对所述缓存中任一定时任务和所述各实例中的任一实例,将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置;
若所述缓存中第一定时任务的位置小于第一实例的位置且距离所述第一实例的位置最近,则将所述第一定时任务分配给所述第一实例;
若所述缓存中所述第一定时任务的位置大于任一实例的位置,则将所述第一定时任务分配给距离所述预设整数范围区间的起始位置最近的实例。
可选的,所述处理单元还用于:
所述为所述各实例分配所述缓存中的定时任务之后,若所述各实例中任一实例发生故障,则将发生故障的实例从所述预设整数范围区间中清除,并将分配给所述发生故障的实例的定时任务重新分配。
可选的,所述处理单元具体用于:
将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,得到所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值;
根据所述预设整数范围区间,对所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值进行取模运算,得到所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置。
可选的,所述定时任务包括标识、时间和任务内容;
所述获取单元具体用于:
根据所述定时任务的标识,分别将所述定时任务的时间存储在所述缓存的第一队列中,将所述定时任务的任务内容存储在所述缓存的第二队列中。
可选的,所述符合时间条件的定时任务为所述定时任务的时间小于当前时间的时间戳的定时任务。
可选的,所述各实例的本地缓存为分布式数据库。
第三方面,本发明实施例还提供一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述定时任务处理方法。
第四方面,本发明实施例还提供一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述定时任务处理方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种***架构的示意图;
图2为本发明实施例提供的一种定时任务处理方法的流程示意图;
图3为本发明实施例提供的一种定时任务分配的示意图;
图4为本发明实施例提供的一种定时任务分配的示意图;
图5为本发明实施例提供的一种定时任务分配的示意图;
图6为本发明实施例提供的一种定时任务同步的示意图;
图7为本发明实施例提供的一种队列的示意图;
图8为本发明实施例提供的一种获取时间的示意图;
图9为本发明实施例提供的一种获取任务内容的示意图;
图10为本发明实施例提供的一种定时任务处理装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种***架构。如图1所示,该***架构可以为服务器100,该服务器100可以包括处理器110、通信接口120和存储器130。
其中,通信接口120用于与终端设备进行通信,收发该终端设备传输的信息,实现通信。
处理器110是服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。
存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
目前在客服作业***场景中,还存在前端通过轮询的方式定时轮询调用某个业务方法,实现业务功能。但是这种方式存在轮询频率过高,容易服务器负载过高,造成***宕机的问题。
基于上述描述,为了解决上述问题。图2详细的示出了本发明实施例提供的一种定时任务处理方法的流程,该流程可以由定时任务处理方法的装置执行,该装置可以为上述服务器或位于上述服务器内。
如图2所示,该流程具体包括:
步骤201,获取定时任务,并将所述定时任务存储在缓存中。
在本发明实施例中,定时任务包括标识、时间和任务内容,该任务内容可以是任务回调方法。由于定时任务包括时间和任务内容,占据多位数据位,直接将定时任务存储在缓存中,可能会造成缓存数据过大,实例在读取定时任务时读取速率较慢。为了解决这一技术问题,本发明实施例通过下述方式来缓存定时任务。具体的,可以将定时任务存储在缓存中的两个队列中。即根据定时任务的标识,分别将定时任务的时间存储在缓存的第一队列中,将定时任务的任务内容存储在缓存的第二队列中。该缓存是服务器的缓存,相对于实例自己的本地缓存,服务器的缓存也可以成为远程缓存。该本地缓存可以为分布式数据库,通过使用分布式数据库来存在定时任务,能够增加定时任务的存储容量。
通过将定时任务的时间和任务内容分别存储在两个队列中,可以简化缓存中的存储结构。由于每个队列都是已经定时任务的标识进行存储的,能够依据定时任务的标识快速的查找到定时任务的时间以及任务内容,便于实例快速的读取。
举例来说,如图3所示,各实例在生成定时任务之后,服务器可以将定时任务需要执行的任务(CALLBACK)以及任务执行的时间(TIME)分别存储在缓存中的不同两个队列中,并且保证两个队列的KEY值一致。其中,KEY是定时任务的标识。
如图3所示,队列1中存储任务执行的时间点:KEY为唯一标识,VALUE为任务执行的时间的时间戳。
队列2中存储要执行的任务的任务内容:KEY为唯一标识,VALUE为任务回调方法。
任务执行时间和对应任务内容,在不同队列中的KEY值一致,用于匹配。
步骤202,根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务。
在分配定时任务时,各实例执行本地缓存中的定时任务,可能会出现同一定时任务执行多次的情况,为了避免出现这一问题,需要针对缓存中任一定时任务和各实例中的任一实例,将任一定时任务的标识和任一实例的标识进行哈希处理后,确定出任一定时任务的标识和任一实例的标识在预设整数范围区间中的位置。然后判断各定时任务和实例的位置。其中,若缓存中第一定时任务的位置小于第一实例的位置且距离第一实例的位置最近,则将第一定时任务分配给第一实例。若缓存中第一定时任务的位置大于任一实例的位置,则将第一定时任务分配给距离预设整数范围区间的起始位置最近的实例。该预设整数范围可以依据经验设置。其中,第一定时任务为缓存中任一未分配的定时任务。
通过判断各定时任务在预设整数范围区间中的位置来为实例分配任务,可以合理的为各实例分配任务,提高定时任务的处理效率,同时可以避免出现同一定时任务由多个实例处理的情况,降低了定时任务被分配给多个实例的风险。
其中,在针对所述缓存中任一定时任务和所述各实例中的任一实例,将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置时,可以先将任一定时任务的标识和任一实例的标识进行哈希处理后,得到任一定时任务的标识的哈希值和任一实例的标识的哈希值,然后根据所述预设整数范围区间,对任一定时任务的标识的哈希值和任一实例的标识的哈希值进行取模运算,得到任一定时任务的标识和任一实例的标识在预设整数范围区间中的位置。
通过将标识进行哈希计算后进行取模,可以将取模后的标识的限定在预设整数范围区间内,通过对比取模后的标识和预设整数范围区间,能够快速定位到标识在预设整数范围区间中的位置。
举例来说,首先定义一个预设整数范围区间,例如可以为0-2^32的区间。该区间内的整数范围是0-4294967296。
然后,计算定时任务和实例的位置。具体的,计算每个实例名的Hash值,并对该Hash值进行取模运算,取模运算如下述公式(1),得到一个整数。该整数在0-2^32范围内,该值则为该实例在这个预设整数范围区间中的位置。
Hash(实例名)%2^32 (1);
计算每个定时任务在队列中KEY值的hash值,并同样的将该hash值进行取模运算,得到一个整数。同样这个整数落在预设整数范围区间内。
Hash(定时任务在队列中的KEY值)%2^32 (2)。
当得到各定时任务和实例的位置后,就可以为实例分配定时任务,定时任务根据其Hash值对应整数的位置,找到比该位置值大并且最近的那一个实例。由该实例执行该定时任务。
若任务对应Hash值的在定义区间内的位置没有比其大的实例位置,则从定义区间的起始位置开始,从新找第一位置的实例执行该任务。如图4所示,任务C的位置大于实例4的位置,在0到2^32的范围区间内,已经没有大于任务C的实例,因此需要距离0最近的实例来执行任务C,也就是位于第一的实例,在图4中可以看出应该是实例1,因此将任务C分配给实例1。
此外,有时某个实例发生故障,会存在分配给这个实例的任务无法执行的问题,因此为了解决该问题。当各实例中任一实例发生故障时,可以将发生故障的实例从预设整数范围区间中清除,然后将分配给发生故障的实例的定时任务重新分配。即继续找大于分配给发生故障的实例的定时任务的位置且距离最近的实例。例如,若是某个实例发生故障,则在预设整数范围区间内去掉该实例的位置,任务同样找到比该实例位置大且最近的一个实例执行任务。如图4中实例3发生故障,需要继续找大于任务B且距离任务B最近的实例,如图5所示,可以找到实例4,因此任务B则由实例4来执行。
步骤203,按照预设时间间隔将为所述各实例分配的定时任务同步到所述各实例的本地缓存中。
若各实例中的本地缓存中的定时任务不一致,则会存在当某个实例故障时,其处理的定时任务无法正常执行。为了解决这一问题,服务器需要按照预设时间间隔将为各实例分配的定时任务同步到各实例的本地缓存中,以使各实例以预设频率从各实例的本地缓存中获取符合时间条件的定时任务进行处理。该预设时间间隔和预设频率可以依据经验设置,其中预设时间间隔大于预设频率中的间隔。其中,符合时间条件的定时任务为定时任务的时间小于当前时间的时间戳的定时任务。实例通过读取小于当前时间的时间戳的定时任务,来实现定时任务的执行,能够提高查找定时任务的效率。
通过服务器按照预设时间间隔将为各实例分配的定时任务同步到各实例的本地缓存中,能够确保各实例的本地缓存中的数据一致。
如图6所示,实例在调取任务时,每秒轮询本地缓存,获取待执行的任务。因为各个实例调用自己的本地缓存,不会读取服务器的缓存,因此不会导致TPS提升降低服务器的缓存性能。
远程缓存与本地缓存每分钟同步一次数据,确保各个实例本地缓存中的数据一致,当某个实例不可用时,定时任务可以正常执行。这里的远程缓存即为服务器的缓存。
其中,实例在本地缓存中获取任务时,可以按照当前时刻的时间戳来进行获取,每个实例的定时器程序,每秒钟从缓存中去取出对应要执行的任务回调方法。如图7所示,队列1的数据结构构造的是一个有序集合,通过数据结构中定义的SCORE属性,将集合从小到大的顺序进行排列,方便快速的找到队列中的位置。有序集合中的成员是唯一的,但是SCORE可以重复。其中,SCORE属性使用从1970年1月1日0时0分0秒开始到任务计划执行时刻的毫秒数表示。
每个实例上的定时器程序每秒从缓存队列中获取相应的KEY的方式可以如图8所示,首先定时器程序获取当前时间的时间戳(从1970年到现在的毫秒数)。拿获取到的时间戳,通过时间戳与队列1中SCORE进行比较,找到SCORE小于该时间戳的元素。
如图9所示,从队列1中取出这些SCORE小于该时间戳的元素。通过这些元素的KEY值,从队列2中与其KEY相等的元素。
通过上述方式,可以实现在分布式高并发的情况下,不会因为实例数量越多而造成服务器缓存性能的降低。从而保证了服务器的性能和高可用性。
实例在获取了任务内容之后,就可以对任务内容进行反序列化后执行。利用Java的工具类将对象的状态持久化存储,方便在以后某个时间点重新创建出完全相同的副本。同时可以将对象传输到一个分布式***的其他模块,如用于RPC(Remote Procedure Call,远程过程调用)。
将从集合中取出来的方法进行反序列化。并启动线程执行该任务方法。Java原生反序列化是通过ObjectInputStream实现的。通过Java中的ObjectInputStream类负责实现反序列化,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。返回后执行该对象方法。
通过上述实施例提供的定时任务处理方法,无论客服场景下有多少复杂的计时器场景,在时间效率、性能、高可用方面都能得到很好的保证。
在本发明实施例中,获取定时任务,并将定时任务存储在缓存中,根据缓存中定时任务的标识和各实例的标识,为各实例分配缓存中的定时任务,按照预设时间间隔将定时任务同步到各实例的本地缓存中,以使各实例以预设频率从各实例的本地缓存中获取符合时间条件的定时任务进行处理。实例在处理定时任务时,是在实例自己的本地缓存中获取相应的定时任务进行处理,不会实时的从服务器的缓存获取定时任务,因而不会增加服务器的吞吐量,也不会降低服务器的缓存性能。
基于相同的技术构思,图10示例性的示出了本发明实施例提供的一种定时任务处理装置的结构,该装置可以执行定时任务处理流程。
如图10所示,该装置具体包括:
获取单元1001,用于获取定时任务,并将所述定时任务存储在缓存中;
处理单元1002,用于根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务;按照预设时间间隔将所述定时任务同步到所述各实例的本地缓存中,以使所述各实例以预设频率从所述各实例的本地缓存中获取符合时间条件的定时任务进行处理。
可选的,所述处理单元1002具体用于:
针对所述缓存中任一定时任务和所述各实例中的任一实例,将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置;
若所述缓存中第一定时任务的位置小于第一实例的位置且距离所述第一实例的位置最近,则将所述第一定时任务分配给所述第一实例;
若所述缓存中所述第一定时任务的位置大于任一实例的位置,则将所述第一定时任务分配给距离所述预设整数范围区间的起始位置最近的实例。
可选的,所述处理单元1002还用于:
所述为所述各实例分配所述缓存中的定时任务之后,若所述各实例中任一实例发生故障,则将发生故障的实例从所述预设整数范围区间中清除,并将分配给所述发生故障的实例的定时任务重新分配。
可选的,所述处理单元1002具体用于:
将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,得到所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值;
根据所述预设整数范围区间,对所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值进行取模运算,得到所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置。
可选的,所述定时任务包括标识、时间和任务内容;
所述获取单元1001具体用于:
根据所述定时任务的标识,分别将所述定时任务的时间存储在所述缓存的第一队列中,将所述定时任务的任务内容存储在所述缓存的第二队列中。
可选的,所述符合时间条件的定时任务为所述定时任务的时间小于当前时间的时间戳的定时任务。
可选的,所述各实例的本地缓存为分布式数据库。
基于相同的技术构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用存储器中存储的程序指令,按照获得的程序执行上述定时任务处理方法。
基于相同的技术构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行计算机可读指令时,使得计算机执行上述定时任务处理方法。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种定时任务处理方法,其特征在于,包括:
获取定时任务,并将所述定时任务存储在缓存中;
根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务;所述根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务,包括:针对所述缓存中任一定时任务和所述各实例中的任一实例,将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置;若所述缓存中第一定时任务的位置小于第一实例的位置且距离所述第一实例的位置最近,则将所述第一定时任务分配给所述第一实例;若所述缓存中所述第一定时任务的位置大于任一实例的位置,则将所述第一定时任务分配给距离所述预设整数范围区间的起始位置最近的实例;
按照预设时间间隔将所述定时任务同步到所述各实例的本地缓存中,以使所述各实例以预设频率从所述各实例的本地缓存中获取符合时间条件的定时任务进行处理。
2.如权利要求1所述的方法,其特征在于,所述为所述各实例分配所述缓存中的定时任务之后,还包括:
若所述各实例中任一实例发生故障,则将发生故障的实例从所述预设整数范围区间中清除,并将分配给所述发生故障的实例的定时任务重新分配。
3.如权利要求1所述的方法,其特征在于,所述将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置,包括:
将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,得到所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值;
根据所述预设整数范围区间,对所述任一定时任务的标识的哈希值和所述任一实例的标识的哈希值进行取模运算,得到所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置。
4.如权利要求1所述的方法,其特征在于,所述定时任务包括标识、时间和任务内容;
所述将所述定时任务存储在缓存中,包括:
根据所述定时任务的标识,分别将所述定时任务的时间存储在所述缓存的第一队列中,将所述定时任务的任务内容存储在所述缓存的第二队列中。
5.如权利要求4所述的方法,其特征在于,所述符合时间条件的定时任务为所述定时任务的时间小于当前时刻的定时任务。
6.如权利要求1至5任一项所述的方法,其特征在于,所述各实例的本地缓存为分布式数据库。
7.一种定时任务处理装置,其特征在于,包括:
获取单元,用于获取定时任务,并将所述定时任务存储在缓存中;
处理单元,用于根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务;所述处理单元用于根据所述缓存中定时任务的标识和各实例的标识,为所述各实例分配所述缓存中的定时任务时:针对所述缓存中任一定时任务和所述各实例中的任一实例,将所述任一定时任务的标识和所述任一实例的标识进行哈希处理后,确定出所述任一定时任务的标识和所述任一实例的标识在预设整数范围区间中的位置;若所述缓存中第一定时任务的位置小于第一实例的位置且距离所述第一实例的位置最近,则将所述第一定时任务分配给所述第一实例;若所述缓存中所述第一定时任务的位置大于任一实例的位置,则将所述第一定时任务分配给距离所述预设整数范围区间的起始位置最近的实例;按照预设时间间隔将所述定时任务同步到所述各实例的本地缓存中,以使所述各实例以预设频率从所述各实例的本地缓存中获取符合时间条件的定时任务进行处理。
8.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至6任一项所述的方法。
9.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011410625.7A CN112579269B (zh) | 2020-12-04 | 2020-12-04 | 一种定时任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011410625.7A CN112579269B (zh) | 2020-12-04 | 2020-12-04 | 一种定时任务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579269A CN112579269A (zh) | 2021-03-30 |
CN112579269B true CN112579269B (zh) | 2024-07-02 |
Family
ID=75127276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011410625.7A Active CN112579269B (zh) | 2020-12-04 | 2020-12-04 | 一种定时任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579269B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018036167A1 (zh) * | 2016-08-22 | 2018-03-01 | 平安科技(深圳)有限公司 | 测试任务执行机分配方法、装置、服务器和存储介质 |
CN111782365A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 定时任务处理方法、装置、设备及存储介质 |
-
2020
- 2020-12-04 CN CN202011410625.7A patent/CN112579269B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018036167A1 (zh) * | 2016-08-22 | 2018-03-01 | 平安科技(深圳)有限公司 | 测试任务执行机分配方法、装置、服务器和存储介质 |
CN111782365A (zh) * | 2020-06-30 | 2020-10-16 | 北京百度网讯科技有限公司 | 定时任务处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112579269A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020211579A1 (zh) | 一种基于分布式批量处理***的处理方法、装置及*** | |
US10114682B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
CN108023908B (zh) | 数据更新方法、装置及*** | |
CN110247984B (zh) | 业务处理方法、装置及存储介质 | |
CN106817408B (zh) | 一种分布式服务器集群调度方法及装置 | |
JP2014123365A (ja) | MapReduceフレームワークにおけるデータ処理の最適化のためのデバイスおよび方法 | |
CN108021449B (zh) | 一种协程实现方法、终端设备及存储介质 | |
CN109889401B (zh) | 流量统计方法、装置、计算机设备和存储介质 | |
US10102098B2 (en) | Method and system for recommending application parameter setting and system specification setting in distributed computation | |
CN111722918A (zh) | 业务标识码生成方法、装置、存储介质及电子设备 | |
CN111858055A (zh) | 任务处理方法、服务器及存储介质 | |
CN111143331A (zh) | 数据迁移方法、装置及计算机存储介质 | |
CN112286664A (zh) | 任务调度方法、装置、计算机设备及可读存储介质 | |
CN105607968A (zh) | 一种增量备份方法及设备 | |
CN108595121B (zh) | 数据存储方法和装置 | |
CN112579269B (zh) | 一种定时任务处理方法及装置 | |
CN110955461B (zh) | 计算任务的处理方法、装置、***、服务器和存储介质 | |
CN116226045A (zh) | 文件数据聚合方法、文件数据聚合装置和查询*** | |
CN111431951A (zh) | 一种数据处理方法、节点设备、***及存储介质 | |
CN115269719A (zh) | 数据同步方法及装置 | |
CN115526586A (zh) | 一种基于智能运算的业务流程处理方法 | |
CN114675954A (zh) | 任务调度方法及装置 | |
CN112527760A (zh) | 数据存储方法、装置、服务器及介质 | |
CN112003930A (zh) | 任务分配方法、装置、设备及存储介质 | |
CN111400598A (zh) | 信息推送方法、服务器、多端口转发器和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |