CN112015572A - 一种延时任务的执行方法、中心和*** - Google Patents
一种延时任务的执行方法、中心和*** Download PDFInfo
- Publication number
- CN112015572A CN112015572A CN202010861023.7A CN202010861023A CN112015572A CN 112015572 A CN112015572 A CN 112015572A CN 202010861023 A CN202010861023 A CN 202010861023A CN 112015572 A CN112015572 A CN 112015572A
- Authority
- CN
- China
- Prior art keywords
- task
- time
- database
- message body
- delay
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种延时任务的执行方法,其特征在于,包括以下步骤:步骤1:接收并存储任务,所述任务包含任务的延时时间、ID和消息体;步骤2:周期性的扫描任务,判断任务的延时时间是否小于预设时间,若是,则进行步骤3,若否,则重复步骤2;步骤3:将任务的ID按照延时时间存入循环周期为预设时间的时间轮中,将任务的消息体以及任务的ID存入数据库内;步骤4:读取时间轮中到期的格子中的任务的ID,并根据任务的ID去数据库调取消息体并发送给外界的业务***。该发明还公开了一种延时任务处理中心和***。本发明将任务予以拆分,分别由时间轮、Redis数据库处理消息的延时和消息体的提取,其在数据大并发时能够避免明显延时的情况出现。
Description
技术领域
本申请涉及通信技术,特别是一种延时任务的执行方法、中心和***。
背景技术
Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
利用Redis数据库进行延时任务的处理主要利用redis的key过期通知的延时方案,实现方式是,新建延时任务时,将key和延时时间作为key的过期失效时间,当key失效时,***监听获取key,再利用key去数据库查询具体延时任务内容,此方案存在以下问题:
当redis宕机的时候,延时任务丢失;
redis的key被消费之后不能再恢复;
获取的key不是延时任务内容,任务内容需要从数据库查询,当数据处理量大的时候,查询时间会导致延时时间不准确。
而另外一种解决方案是采用时间轮的方式去进行,但是采用时间轮的方式一般是将任务放到格子里面,如果任务数量多,时间轮的数据负荷非常大,导致时间轮崩溃或明显延时。
本方案着重解决数据查询量大时,会有延时的问题。
发明内容
有鉴于此,本申请的目的在于:提供一种延时任务的执行方法,相较传统方法的延时监控、任务查询均在Redis数据库中进行而导致数据量大时出现延时的问题,本方法将任务予以拆分,分别由时间轮、Redis数据库处理消息的延时和消息体的提取,其在数据大并发时能够避免明显延时的情况出现。
此外,本发明还提供了一种延时任务处理中心和***。
具体来说:
一种延时任务的执行方法,包括以下步骤:
步骤1:接收并存储任务,所述任务包含任务的延时时间、ID和消息体;
步骤2:周期性的扫描任务,判断任务的延时时间是否小于预设时间,若是,则进行步骤3,若否,则重复步骤2;
步骤3:将任务的ID按照延时时间存入循环周期为预设时间的时间轮中,将任务的消息体以及任务的ID存入关系型数据库如redis数据库内;
步骤4:读取时间轮中到期的格子中的任务的ID,并根据任务的ID去redis数据库调取消息体并发送给外界的业务***。
在上述的延时任务的执行方法中,步骤1中,任务存储在mysql数据库中。当步骤4执行后,mysql数据库中的任务会标记为已经执行或已经完成。
在上述的延时任务的执行方法中,所述预设时间为2h,所述时间轮中按照1秒/格子的速度转动。
同时,本发明还提供了一种延时任务处理中心,包括如下模块:
任务数据库:接收并存储来自于业务***的任务,所述任务包含任务的延时时间和消息体;
扫描模块:用于周期性的扫描任务数据库中的任务,判断任务的延时时间是否小于预设时间,并根据判断结果将延时时间、ID、消息体发送到时间轮、redis数据库中;
时间轮:用于按照任务的延时时间存储任务的ID,并将到期的任务的ID提取出来发送至数据处理模块;
Redis数据库:用于将任务的ID和消息体成对的存储;
数据处理模块:用于根据时间轮发送的任务的ID,从redis数据库中提取与该任务的ID对应的消息体,并发送至外设的业务***。
在上述的延时任务处理中心中,所述任务数据库为mysql数据库。
在上述的延时任务处理中心中,所述预设时间为2h,所述时间轮中按照1秒/格子的速度转动。
在上述的延时任务处理中心中,所述延时时间、ID、消息体同广播的形式发送到时间轮、redis数据库中。
延时任务处理中心支持分布式,也就是一个***多个实例,每个实例都有定时任务,定时任务会把延时任务内容加载到时间轮里面,由于多个时间轮就会给业务***发送多次,从而导致数据问题,所以使用分布式锁,只有其中获取到锁的实例,才能将定时任务的延时任务内容加载到时间轮,由于无法知道哪个实例有分布式锁,所以采用广播的方式发送。
最后,本发明还提供了一种延时任务处理***,包括业务***和延时任务处理中心,其特征在于,所述延时任务处理中心如上任一所述;
所述业务***用于将任务发送到任务数据库,并接收来自于数据处理模块的消息体。
本发明的有益效果在于:
相较传统方法的延时监控、任务查询均在Redis数据库中进行而导致数据量大时出现延时的问题,本方法将任务予以拆分,分别由时间轮、Redis数据库处理消息的延时和消息体的提取,其在数据大并发时能够避免明显延时的情况出现。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例1提供的方法的流程图;
图2是根据本申请实施例1提供的方法的流程图;
图3是根据本申请实施例2提供的***的结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,以下将参照本申请实施例中的附图,通过实施方式清楚、完整地描述本申请的技术方案,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参照图1和2,本实施例公开了一种延时任务的执行方法,包括以下步骤:
步骤1:接收并存储任务,所述任务包含任务的延时时间、ID和消息体;
任务存储在mysql数据库中;该任务由外设的业务***发送过来。
本实施例的应用场景作为例举可以为:订单是否支付的任务,定期发送消息的任务等等。
步骤2:周期性的扫描mysql数据库中存储的任务,比如5min为单次扫描间隔,判断任务的延时时间是否小于2h,若是,则进行步骤3,若否,则重复步骤2;
步骤3:通过广播的形式发送包含任务ID和延时时间的消息和包含ID和消息体的消息,对应的实例接收到对应的消息后会将任务的ID按照延时时间存入循环周期为预设时间的时间轮中和将任务的消息体以及任务的ID存入redis数据库内;
时间轮的循环周期为2h,每个时间轮中有若干格子,1s中行走一格。当然根据实际需要不仅仅限于2h,可以为1h,30min等,格子可以2s走一格也是可以的。
步骤4:读取时间轮中到期的格子中的任务的ID,并根据任务的ID去redis数据库调取消息体,redis数据库中的ID(即Key)被消费后,就不能再恢复了。
通过本发明的方法,将任务拆分为ID和消息体,ID通过时间轮进行定时读取,消息体通过redis数据库保存和读取,即使在大并发的情况下,其也不会出现明显的时延。
在本发明的方法中,任务存储在mysql数据库中,其可以在重启后重新自动扫描存储的任务。通过该改进,可以解决现有技术中重启后延时任务丢失的问题。
实施例2
参考图3,一种延时任务处理***,包括业务***和延时任务处理中心;
所述延时任务处理中心包括:
任务数据库:接收并存储来自于业务***的任务,所述任务包含任务的延时时间和消息体;任务数据库为mysql数据库;
扫描模块:用于周期性的扫描任务数据库中的任务,判断任务的延时时间是否小于预设时间,并根据判断结果将延时时间、ID、消息体发送到时间轮、redis数据库中;
时间轮:用于按照任务的延时时间存储任务的ID,并将到期的任务的ID提取出来发送至数据处理模块;
Redis数据库:用于将任务的ID和消息体成对的存储;
数据处理模块:用于根据时间轮发送的任务的ID,从redis数据库中提取与该任务的ID对应的消息体,并发送至外设的业务***
所述业务***用于将任务发送到任务数据库,并接收来自于数据处理模块的消息体;
其数据处理过程为:
业务***将任务发送至延时任务处理中心,比如,任务为查询一段时间后订单是否支付,这个任务包含了任务的ID,任务的内容:查询某订单是否支付,任务的延时时间:某一段时间后。
任务数据库存储该任务。
扫描模块扫描mysql数据库,看哪个任务的延时时间小于设定时间,如果发现了满足该条件的任务,就将该任务的ID加到时间轮里面,同时将ID和任务体发送到Redis数据库。
ID在时间轮内,当该ID所处格子到期后,时间轮会将该ID发送到数据处理模块,数据处理模块从Redis数据库去调取该ID对应的任务体,并将该任务体发送到业务***,在消费了该ID后,该ID从Redis数据库中消失;
本实施例将ID和任务体分存,可以使时间轮的数据负荷变小,避免时间轮崩溃或明显延时。同时也避免了采用Redis数据库查询数据量大时明显延时,也避免了宕机时出现任务丢失的问题。
需要理解的是,上述方法实施例可以存储在计算机可读介质之中。本申请的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是:但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备实现上述的方法实施例。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (8)
1.一种延时任务的执行方法,其特征在于,包括以下步骤:
步骤1:接收并存储任务,所述任务包含任务的延时时间、ID和消息体;
步骤2:周期性的扫描任务,判断任务的延时时间是否小于预设时间,若是,则进行步骤3,若否,则重复步骤2;
步骤3:将任务的ID按照延时时间存入循环周期为预设时间的时间轮中,将任务的消息体以及任务的ID存入数据库内;
步骤4:读取时间轮中到期的格子中的任务的ID,并根据任务的ID去数据库调取消息体并发送给外界的业务***。
2.根据权利要求1所述的延时任务的执行方法,其特征在于,步骤1中,任务存储在关系型数据库中。
3.根据权利要求1所述的延时任务的执行方法,其特征在于,所述预设时间为2h,所述时间轮中按照1秒/格子的速度转动。
4.一种延时任务处理中心,其特征在于,包括如下模块:
任务数据库:接收并存储来自于业务***的任务,所述任务包含任务的延时时间和消息体;
扫描模块:用于周期性的扫描任务数据库中的任务,判断任务的延时时间是否小于预设时间,并根据判断结果将延时时间、ID、消息体发送到时间轮、redis数据库中;
时间轮:用于按照任务的延时时间存储任务的ID,并将到期的任务的ID提取出来发送至数据处理模块;
数据库:用于将任务的ID和消息体成对的存储;
数据处理模块:用于根据时间轮发送的任务的ID,从数据库中提取与该任务的ID对应的消息体,并发送至外设的业务***。
5.根据权利要求4所述的延时任务处理中心,其特征在于,所述任务数据库为mysql数据库。
6.根据权利要求4所述的延时任务处理中心,其特征在于,所述预设时间为2h,所述时间轮中按照1秒/格子的速度转动。
7.根据权利要求4所述的延时任务处理中心,其特征在于,所述延时时间、ID、消息体通过广播的形式发送到时间轮、redis数据库中。
8.一种延时任务处理***,包括业务***和延时任务处理中心,其特征在于,所述延时任务处理中心如权利要求4-7任一所述;
所述业务***用于将任务发送到任务数据库,并接收来自于数据处理模块的消息体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010861023.7A CN112015572A (zh) | 2020-08-25 | 2020-08-25 | 一种延时任务的执行方法、中心和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010861023.7A CN112015572A (zh) | 2020-08-25 | 2020-08-25 | 一种延时任务的执行方法、中心和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112015572A true CN112015572A (zh) | 2020-12-01 |
Family
ID=73505802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010861023.7A Pending CN112015572A (zh) | 2020-08-25 | 2020-08-25 | 一种延时任务的执行方法、中心和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015572A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114879942A (zh) * | 2022-05-20 | 2022-08-09 | 北京宇信科技集团股份有限公司 | 分布式时间轮分组注册的校验方法、装置、介质和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733462A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 延迟任务的方法和装置 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
CN111225041A (zh) * | 2019-12-26 | 2020-06-02 | 的卢技术有限公司 | 一种实现延时消息队列的方法及*** |
CN111510469A (zh) * | 2019-01-31 | 2020-08-07 | 上海哔哩哔哩科技有限公司 | 一种消息处理方法和装置 |
-
2020
- 2020-08-25 CN CN202010861023.7A patent/CN112015572A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733462A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 延迟任务的方法和装置 |
CN111510469A (zh) * | 2019-01-31 | 2020-08-07 | 上海哔哩哔哩科技有限公司 | 一种消息处理方法和装置 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
CN111225041A (zh) * | 2019-12-26 | 2020-06-02 | 的卢技术有限公司 | 一种实现延时消息队列的方法及*** |
Non-Patent Citations (1)
Title |
---|
孤独烟: "延时任务方案汇总", 《孤独烟》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114879942A (zh) * | 2022-05-20 | 2022-08-09 | 北京宇信科技集团股份有限公司 | 分布式时间轮分组注册的校验方法、装置、介质和设备 |
CN114879942B (zh) * | 2022-05-20 | 2023-02-03 | 北京宇信科技集团股份有限公司 | 分布式时间轮分组注册的校验方法、装置、介质和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
CN109901918B (zh) | 一种处理超时任务的方法和装置 | |
WO2019168599A1 (en) | Data retention handling for data object stores | |
CN110083660A (zh) | 一种同步数据的方法、装置、介质和电子设备 | |
CN109214741B (zh) | 一种监控指标的预警方法和预警*** | |
CN110471746B (zh) | 一种分布式事务回调方法、装置及*** | |
CN111277639A (zh) | 一种保持数据一致性的方法和装置 | |
WO2023082681A1 (zh) | 基于批流一体的数据处理方法、装置、计算机设备和介质 | |
CN108763482B (zh) | 用于数据分析流程调度的方法、装置和服务器集群 | |
CN112783618A (zh) | 一种任务调度监控***、计算机设备及存储介质 | |
CN112015572A (zh) | 一种延时任务的执行方法、中心和*** | |
CN113127225A (zh) | 一种数据处理任务的调度方法、装置和*** | |
CN116450622B (zh) | 数据入库的方法、装置、设备和计算机可读介质 | |
CN116701020A (zh) | 消息延时处理方法、装置、设备、介质和程序产品 | |
CN115576782A (zh) | 基于监听机制的交易处理方法及装置 | |
CN113743842B (zh) | 一种多源数据差异告警方法和装置 | |
CN115982133A (zh) | 数据处理方法及装置 | |
CN108920144B (zh) | 一种消息处理方法和装置 | |
CN114996057A (zh) | 数据备份方法及装置、电子设备和计算机可读存储介质 | |
CN115168415A (zh) | 基于订阅发布的时序数据查询方法、***及计算机介质 | |
CN114780361A (zh) | 日志生成方法、装置、计算机***及可读存储介质 | |
CN113535768A (zh) | 生产监控方法和装置 | |
CN113722284A (zh) | 一种集群日志存储方法、装置、设备及介质 | |
CN111078769A (zh) | 一种元数据的抓取方法和*** | |
CN115348321B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 511356 Room 501, building 2, No. 63, Yong'an Avenue, Huangpu District, Guangzhou, Guangdong Applicant after: Guangzhou lubangtong Internet of things Technology Co.,Ltd. Address before: 510653 room F315, 95 daguanzhong Road, Tianhe District, Guangzhou City, Guangdong Province Applicant before: GUANGZHOU ROBUSTEL TECHNOLOGIES Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201201 |