CN110837427A - 一种基于队列分拣任务机制的防止缓存击穿的方法 - Google Patents
一种基于队列分拣任务机制的防止缓存击穿的方法 Download PDFInfo
- Publication number
- CN110837427A CN110837427A CN201911121634.1A CN201911121634A CN110837427A CN 110837427 A CN110837427 A CN 110837427A CN 201911121634 A CN201911121634 A CN 201911121634A CN 110837427 A CN110837427 A CN 110837427A
- Authority
- CN
- China
- Prior art keywords
- task
- cache
- sorting
- queue
- execution
- 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.)
- Granted
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/544—Buffers; Shared memory; Pipes
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及数据缓存技术,其公开了一种基于队列分拣任务机制的防止缓存击穿的方法,使缓存层的数据一直保持有效,进而防止缓存击穿。本发明通过根据业务需求预设多个更新频率,利用队列异步分拣任务以及更新缓存数据达到防止击穿的目的;当新增一条缓存数据,在缓存分拣任务链表中添加对应记录,缓存分拣任务队列将该记录分拣到具体的执行任务队列中,同时将该记录在分拣任务链表中的状态维护成已分拣;执行任务队列提取执行任务表记录,将其中的更新时间和当前时间作校验,若校验通过,则将新增的缓存数据更新到缓存层,并移除执行任务表中的对应记录;否则,直接过滤掉数据,将任务移除并重新加入,同时将分拣任务链表中对应的记录更新为未分拣,以便下一次再轮询分拣。
Description
技术领域
本发明涉及数据缓存技术,具体涉及一种基于队列分拣任务机制的防止缓存击穿的方法。
背景技术
目前缓存技术在各个计算机领域得到广泛应用。尤其是在业务量巨大的时候,应用缓存能够很好的支撑起高并发访问。但无论是哪种缓存,在应用场景中都会存在缓存击穿的问题,所谓缓存击穿,就是指缓存因过期或系统故障的原因突然失效,正在访问的请求就会穿过缓存层直接请求数据库。尤其是在高并发的访问下,大量的请求压力会使数据库直接崩溃。所以有效防止缓存击穿是对每个缓存系统都是至关重要的。
发明内容
本发明所要解决的技术问题是:提出一种基于队列分拣任务机制的防止缓存击穿的方法,使缓存层的数据一直保持有效,进而防止缓存击穿。
本发明解决上述技术问题采用的技术方案是:
一种基于队列分拣任务机制的防止缓存击穿的方法,包括:
设立缓存执行任务链表和缓存执行任务队列组模块;所述缓存执行任务链表用于存放被执行队列模块检索更新任务的信息;所述缓存执行任务队列组模块用于异步执行缓存信息更新任务的处理;
设立缓存分拣任务链表和缓存分拣任务队列模块;所述缓存分拣任务链表用于存放待分拣的缓存信息;所述缓存分拣任务队列模块用于根据策略分拣缓存任务到对应执行队列中;
设立执行任务队列回调接口,用于被执行队列调用,将对应的分拣记录状态更新为待分拣,将更新时间更新为当前时间;
设立接收待分拣数据接口,用于接收待分配的数据源参数,将接收到的信息在缓存分拣任务链表中存储、更新或删除;
缓存数据更新流程为:
当新增一条缓存数据,在缓存分拣任务链表中添加对应记录,缓存分拣任务队列将该记录分拣到具体的执行任务队列中,同时将该记录在分拣任务链表中的状态维护成已分拣;执行任务队列提取执行任务表记录,将其中的更新时间和当前时间作校验,若校验通过,则将新增的缓存数据更新到缓存层,并移除执行任务表中的对应记录;否则,直接过滤掉数据,将任务移除并重新加入,同时将分拣任务链表中对应的记录更新为未分拣,以便下一次再轮询分拣。
作为进一步优化,所述缓存执行任务链表包含任务名称、更新时间和任务具体参数。
作为进一步优化,所述缓存信息更新任务的处理包括:包括判断是否可更新、更新数据到缓存层以及回调队列分拣任务模块。
作为进一步优化,所述缓存分拣任务链表包含任务名称、更新时间、配对缓存执行任务编码和分拣状态。
作为进一步优化,在设立缓存执行任务链表和缓存执行任务队列组模块之前,根据业务需要,预设缓存需要更新的频率,根据不同的频率段分别设置对应的任务链表以及对应的缓存执行任务队列,由各个缓存执行任务队列组成缓存执行任务队列组。
作为进一步优化,所述缓存分拣任务队列模块根据策略分拣缓存任务到对应执行队列中,具体包括:将缓存分拣任务关系链表中的记录按照缓存更新时间戳顺序地取出,并根据配对的缓存更新执行队列编码分别将任务名和参数分拣到具体的缓存更新执行队列任务表中。
本发明的有益效果是:
通过根据业务需求预设多个更新频率,利用队列异步分拣任务以及更新缓存数据达到防止击穿的目的;本发明方案可以使缓存层数据不依赖过期时间,加入分拣任务的数据后可根据预设频率“永久”轮询更新,灵活可控,降低逻辑处理复杂度和耦合度,同时有效防止缓存击穿的情况。
附图说明
图1为本发明实施例中的基于队列分拣任务机制的防止缓存击穿的方法流程图。
具体实施方式
本发明旨在提出一种基于队列分拣任务机制的防止缓存击穿的方法,使缓存层的数据一直保持有效,进而防止缓存击穿。由于业务请求获取数据先到缓存层,缓存层相应数据若存在则直接返回;若不存在,由于要设容错机制需到其它数据层进行数据获取,并更新缓存层数据,同时返回相应数据。而本发明就是要尽量预防这种情况,通过缓存队列分拣任务、执行任务模块对缓存进行异步更新,使缓存数据一致存在,从而有效防止缓存击穿。
在具体实现上,本发明防止缓存击穿的实施手段如下:
1、设立缓存执行任务链表和队列组模块,具体为:
设立缓存执行任务链表:根据业务需要,预设需要更新的频率,例如1分钟、3分钟、5分钟。根据这些不同的频率段分别设置对应的任务链表。该表可用redis或其他高性能检索的数据存储器。预设字段信息包含队列任务名称,队列任务具体参数,更新时间。该表被用于更新执行队列模块检索具体更新任务信息。
设立缓存执行任务队列组:根据这些不同的频率段分别设置对应的更新执行队列,形成更新执行队列组。该队列组的作用是根据预设频率将数据更新到具体缓存层中对应的数据块。
2、设立缓存分拣任务关系链表和队列模块,具体为:
设立缓存分拣任务关系链表:可用MongoDB或其他支持有序查找集合的高性能数据存储器。预设字段信息包含缓存更新时间、对应的更新执行队列编码、分拣状态。该表被用于分拣任务队列检索待分拣的任务信息。
设立缓存分拣任务队列模块:该任务模块被用作将缓存分拣任务关系链表中的记录按照缓存更新时间戳顺序地取出并根据配对的缓存更新执行队列编码分别将任务名和参数分拣到具体的缓存更新执行队列任务表中。被分拣后的记录需要更新分拣状态。
3、设立用于执行任务队列回调接口,该接口用于执行队列在执行完任务后回调更新分拣任务状态和时间。
4、设立接收待分拣数据接口,该接口用于接收待分配的数据源参数,将接收到的信息在分拣任务表中存储、更新或删除。
5、缓存数据更新流程:
当新增一条缓存数据,在分拣任务表中添加对应记录,分拣队列将该记录分拣到具体的执行队列中,同时该记录在分拣表中的状态维护成已分拣;执行任务队列提取执行任务表记录,将其中的更新时间和当前时间作校验,校验通过的将数据更新到缓存层,并移除执行任务表中的对应记录。否则直接过滤,将任务移除并重新加入。同时将分拣表中对应的记录更新为未分拣,以便下一次再轮询分拣。
实施例:
本实施例以更新商品实例对本发明的方案作详细描述,如图1所示,实现如下:
(1)设立缓存执行任务链表和队列组模块:
设立缓存执行任务链表:预设字段信息包含队列任务名称title,队列任务具体参数data,更新时间update_time。
设立缓存执行任务队列组:根据这些不同的频率段分别设置对应的更新执行队列,形成更新执行队列组。如:设立执行任务队列doList1,该队列用于存放1分钟刷新缓存;设立执行任务队列doList2,该队列用于存放3分钟刷新缓存…以此类推,这些队列将在启动后扫描任务列表,提取任务信息,根据提取信息中的更新时间update_time和当前时间作校验,判断是否可执行,若可执行,则执行相应更新程序,执行完成后移除任务信息,并调用回调接口doCallback将分拣任务表中与该条信息配对的记录的信息更新,分拣状态is_out由1更新为0,更新信息update_time更新为当前时间;若不可执行,则移除任务信息,再将该信息重新加入队列任务,以便下次再扫描。
设立相应执行程序,用于具体的业务逻辑处理方法,比如刷新商品描述信息flushGoodsInfo等其他。
缓存执行任务队列组的作用是根据预设频率将数据更新到具体缓存层中对应的数据块。
(2)设立缓存分拣任务关系链表和队列模块SortingQue:
设立缓存分拣任务关系链表:
预设字段信息包含id(记录标识,自增)、title(任务名称)、update_time(更新时间)、do_id(配对执行任务队列编码)、is_out(是否被分拣)。
设立缓存分拣任务队列模块SortingGet:
该模块将由守护进程执行,作用是按更新时间update_time顺序从分拣任务表中获取数据记录,将这些数据记录根据其里面的do_id对应值分配到对应的执行任务表中,比如do_id为1的记录将分配到do_list1表,do_id为2的记录将分配到do_list2表。分配完成后,该记录在分拣任务表中的状态is_out更新为1,表示已经被分拣。
(3)设立执行任务队列回调接口doCallback:
调用方:执行任务队列;
输入参数:分拣任务ID;
此接口的作用是将对应的分拣记录状态is_out更新为0(未分拣),更新时间update_time更新为当前时间。
(4)设立接收待分拣数据接口freshSortData:
具体使用场景是:当新增/更新/删除一条商品信息时,调用该接口。
输入参数是:任务名称、更新时间、执行任务队列编码、是否分拣。
此接口的作用是用于接收待分配的数据源参数,将接收到的信息在分拣任务表中存储、更新或删除。
(5)启动队列组:
SortingGet将分拣任务至DoListN(组)。
DoListN(组)将会根据自身设定的频率将任务执行,再回调SortingGet相应状态和时间。
Claims (6)
1.一种基于队列分拣任务机制的防止缓存击穿的方法,其特征在于,包括:
设立缓存执行任务链表和缓存执行任务队列组模块;所述缓存执行任务链表用于存放被执行队列模块检索更新任务的信息;所述缓存执行任务队列组模块用于异步执行缓存信息更新任务的处理;
设立缓存分拣任务链表和缓存分拣任务队列模块;所述缓存分拣任务链表用于存放待分拣的缓存信息;所述缓存分拣任务队列模块用于根据策略分拣缓存任务到对应执行队列中;
设立执行任务队列回调接口,用于被执行队列调用,将对应的分拣记录状态更新为待分拣,将更新时间更新为当前时间;
设立接收待分拣数据接口,用于接收待分配的数据源参数,将接收到的信息在缓存分拣任务链表中存储、更新或删除;
缓存数据更新流程为:
当新增一条缓存数据,在缓存分拣任务链表中添加对应记录,缓存分拣任务队列将该记录分拣到具体的执行任务队列中,同时将该记录在分拣任务链表中的状态维护成已分拣;执行任务队列提取执行任务表记录,将其中的更新时间和当前时间作校验,若校验通过,则将新增的缓存数据更新到缓存层,并移除执行任务表中的对应记录;否则,直接过滤掉数据,将任务移除并重新加入,同时将分拣任务链表中对应的记录更新为未分拣,以便下一次再轮询分拣。
2.如权利要求1所述的一种基于队列分拣任务机制的防止缓存击穿的方法,其特征在于,
所述缓存执行任务链表包含任务名称、更新时间和任务具体参数。
3.如权利要求1所述的一种基于队列分拣任务机制的防止缓存击穿的方法,其特征在于,
其特征在于,所述缓存信息更新任务的处理包括:包括判断是否可更新、更新数据到缓存层以及回调队列分拣任务模块。
4.如权利要求1所述的一种基于队列分拣任务机制的防止缓存击穿的方法,其特征在于,
所述缓存分拣任务链表包含任务名称、更新时间、配对缓存执行任务编码和分拣状态。
5.如权利要求1所述的一种基于队列分拣任务机制的防止缓存击穿的方法,其特征在于,
在设立缓存执行任务链表和缓存执行任务队列组模块之前,根据业务需要,预设缓存需要更新的频率,根据不同的频率段分别设置对应的任务链表以及对应的缓存执行任务队列,由各个缓存执行任务队列组成缓存执行任务队列组。
6.如权利要求1所述的一种基于队列分拣任务机制的防止缓存击穿的方法,其特征在于,
所述缓存分拣任务队列模块根据策略分拣缓存任务到对应执行队列中,具体包括:将缓存分拣任务关系链表中的记录按照缓存更新时间戳顺序地取出,并根据配对的缓存更新执行队列编码分别将任务名和参数分拣到具体的缓存执行队列任务表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911121634.1A CN110837427B (zh) | 2019-11-15 | 2019-11-15 | 一种基于队列分拣任务机制的防止缓存击穿的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911121634.1A CN110837427B (zh) | 2019-11-15 | 2019-11-15 | 一种基于队列分拣任务机制的防止缓存击穿的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110837427A true CN110837427A (zh) | 2020-02-25 |
CN110837427B CN110837427B (zh) | 2022-02-01 |
Family
ID=69576594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911121634.1A Active CN110837427B (zh) | 2019-11-15 | 2019-11-15 | 一种基于队列分拣任务机制的防止缓存击穿的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110837427B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112267A (zh) * | 2023-10-20 | 2023-11-24 | 成都华栖云科技有限公司 | 一种应用接口的缓存维护方法 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050251622A1 (en) * | 2004-04-15 | 2005-11-10 | International Business Machines Corp. | Method to stall store operations to increase chances of gathering full entries for updating cachelines |
CN101188566A (zh) * | 2007-12-13 | 2008-05-28 | 沈阳东软软件股份有限公司 | 一种集群环境下数据缓存同步的方法及系统 |
CN101390080A (zh) * | 2006-02-28 | 2009-03-18 | 微软公司 | 基于查询部分来供应高速缓存的查询结果 |
US20090319727A1 (en) * | 2008-06-23 | 2009-12-24 | Dhodapkar Ashutosh S | Efficient Load Queue Snooping |
US20110072437A1 (en) * | 2009-09-23 | 2011-03-24 | International Business Machines Corporation | Computer job scheduler with efficient node selection |
CN102779132A (zh) * | 2011-05-12 | 2012-11-14 | 阿里巴巴集团控股有限公司 | 数据更新方法、系统及数据库服务器 |
CN103631727A (zh) * | 2012-08-27 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 用于缓存服务器的缓存管理方法及缓存管理系统 |
CN105472056A (zh) * | 2015-11-23 | 2016-04-06 | 中国互联网络信息中心 | Dns递归服务器分层缓存方法和系统 |
CN107103068A (zh) * | 2017-04-18 | 2017-08-29 | 聚好看科技股份有限公司 | 业务缓存的更新方法及装置 |
CN107958018A (zh) * | 2017-10-17 | 2018-04-24 | 北京百度网讯科技有限公司 | 缓存中的数据更新方法、装置及计算机可读介质 |
US20190102297A1 (en) * | 2017-09-29 | 2019-04-04 | Open Text Sa Ulc | System and method for broadcast cache invalidation |
US20190129771A1 (en) * | 2017-10-26 | 2019-05-02 | Nokia Solutions And Networks Oy | Balanced message distribution in distributed message handling systems |
CN110113385A (zh) * | 2019-04-15 | 2019-08-09 | 中国平安人寿保险股份有限公司 | 缓存动态配置方法、装置、计算机设备及存储介质 |
CN110110306A (zh) * | 2019-04-12 | 2019-08-09 | 平安医疗健康管理股份有限公司 | 数据展示方法、装置、终端及计算机可读存储介质 |
-
2019
- 2019-11-15 CN CN201911121634.1A patent/CN110837427B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050251622A1 (en) * | 2004-04-15 | 2005-11-10 | International Business Machines Corp. | Method to stall store operations to increase chances of gathering full entries for updating cachelines |
CN101390080A (zh) * | 2006-02-28 | 2009-03-18 | 微软公司 | 基于查询部分来供应高速缓存的查询结果 |
CN101188566A (zh) * | 2007-12-13 | 2008-05-28 | 沈阳东软软件股份有限公司 | 一种集群环境下数据缓存同步的方法及系统 |
US20090319727A1 (en) * | 2008-06-23 | 2009-12-24 | Dhodapkar Ashutosh S | Efficient Load Queue Snooping |
US20110072437A1 (en) * | 2009-09-23 | 2011-03-24 | International Business Machines Corporation | Computer job scheduler with efficient node selection |
CN102779132A (zh) * | 2011-05-12 | 2012-11-14 | 阿里巴巴集团控股有限公司 | 数据更新方法、系统及数据库服务器 |
CN103631727A (zh) * | 2012-08-27 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 用于缓存服务器的缓存管理方法及缓存管理系统 |
CN105472056A (zh) * | 2015-11-23 | 2016-04-06 | 中国互联网络信息中心 | Dns递归服务器分层缓存方法和系统 |
CN107103068A (zh) * | 2017-04-18 | 2017-08-29 | 聚好看科技股份有限公司 | 业务缓存的更新方法及装置 |
US20190102297A1 (en) * | 2017-09-29 | 2019-04-04 | Open Text Sa Ulc | System and method for broadcast cache invalidation |
CN107958018A (zh) * | 2017-10-17 | 2018-04-24 | 北京百度网讯科技有限公司 | 缓存中的数据更新方法、装置及计算机可读介质 |
US20190129771A1 (en) * | 2017-10-26 | 2019-05-02 | Nokia Solutions And Networks Oy | Balanced message distribution in distributed message handling systems |
CN110110306A (zh) * | 2019-04-12 | 2019-08-09 | 平安医疗健康管理股份有限公司 | 数据展示方法、装置、终端及计算机可读存储介质 |
CN110113385A (zh) * | 2019-04-15 | 2019-08-09 | 中国平安人寿保险股份有限公司 | 缓存动态配置方法、装置、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
ZHENYU SUN等: "Multi retention level STT-RAM cache designs with a dynamic refresh scheme", 《2011 44TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE (MICRO)》 * |
谢杰涛等: "Web系统高性能本地数据缓存实现机制", 《计算机应用研究》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112267A (zh) * | 2023-10-20 | 2023-11-24 | 成都华栖云科技有限公司 | 一种应用接口的缓存维护方法 |
CN117112267B (zh) * | 2023-10-20 | 2024-01-23 | 成都华栖云科技有限公司 | 一种应用接口的缓存维护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110837427B (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8280917B1 (en) | Batching content management operations to facilitate efficient database interactions | |
CN110225078B (zh) | 一种应用服务更新方法、系统及终端设备 | |
CN111367925A (zh) | 数据动态实时更新方法、装置及存储介质 | |
CN106155775B (zh) | 消息处理方法、设备及系统 | |
US7818749B2 (en) | Data processing method, data processing apparatus, and data processing program | |
CN113342839A (zh) | 数据处理方法、装置、终端设备和存储介质 | |
CN111400407A (zh) | 数据的同步方法及装置、存储介质及电子装置 | |
EP2021948A2 (en) | Work item event procession | |
CN106250476B (zh) | 一种更新和同步白名单的方法、装置和系统 | |
CN110659259A (zh) | 数据库迁移方法、服务器以及计算机存储介质 | |
CN110837427B (zh) | 一种基于队列分拣任务机制的防止缓存击穿的方法 | |
CN114896641A (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN111753141B (zh) | 一种数据管理方法及相关设备 | |
CN107678856B (zh) | 一种处理业务实体中增量信息的方法及装置 | |
CN110209534B (zh) | 自动备份mysql数据库的系统及方法 | |
CN110263060B (zh) | 一种erp电子附件管理方法及计算机设备 | |
CN110413679B (zh) | 数据库信息处理方法、装置、设备及可读存储介质 | |
CN109614442B (zh) | 数据同步的数据表维护方法、装置、存储介质和电子设备 | |
JP2006277158A (ja) | データ更新システム、サーバ及びプログラム | |
CN107657458A (zh) | 名单获取方法及装置 | |
CN109299035B (zh) | 一种chr文件管理方法、系统及计算机可读存储介质 | |
CN111143326B (zh) | 减少数据库操作的方法、装置、计算机设备及存储介质 | |
CN111427633A (zh) | 一种汽车音响状态机及其管理方法 | |
CN113645578A (zh) | 一种防止信息重复发送方法、装置及存储介质 | |
CN112631741A (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 | ||
GR01 | Patent grant |