CN111797119A - 一种缓存装置、系统及缓存方法 - Google Patents
一种缓存装置、系统及缓存方法 Download PDFInfo
- Publication number
- CN111797119A CN111797119A CN202010423476.1A CN202010423476A CN111797119A CN 111797119 A CN111797119 A CN 111797119A CN 202010423476 A CN202010423476 A CN 202010423476A CN 111797119 A CN111797119 A CN 111797119A
- Authority
- CN
- China
- Prior art keywords
- caching
- container
- message queue
- storage area
- change record
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000008859 change Effects 0.000 claims abstract description 36
- 238000013507 mapping Methods 0.000 claims abstract description 28
- 230000001360 synchronised effect Effects 0.000 claims abstract description 14
- 238000012986 modification Methods 0.000 claims abstract description 13
- 230000004048 modification Effects 0.000 claims abstract description 13
- 230000008569 process Effects 0.000 claims description 10
- 230000002688 persistence Effects 0.000 claims description 3
- 230000002085 persistent effect Effects 0.000 claims 1
- 241000283973 Oryctolagus cuniculus Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种缓存装置、系统及缓存方法,属于软件工程领域。针对现有技术中存在的需要单独建立数据副本进行缓存,在数据变化时候需要实时更新的问题,本发明提供了一种缓存装置、系统及缓存方法,当从高速存储区未找到目标对象时,对象容器自动转向对象映射接口,从基础数据源查询并自动将查询到的对象写入所述高速存储区,同时跟踪对象修改的步骤;对象容器向消息队列推送对象变更记录的步骤;同时,同步伺服器,从消息队列取出所述对象变更记录,并据此更新高速存储区中对象副本,完成对应的数据更新。它可以实现快速对产品的更新,不需要增加数据访问逻辑,代码量不会增加,快速准确。
Description
技术领域
本发明涉及软件工程领域,更具体地说,涉及一种缓存装置、系统及缓存方法。
背景技术
缓存是软件工程中的常用技术,其主要原理是在内存中建立数据副本,利用内存读取速度快的特点应对高频访问需求,从而减轻基础数据源的压力。
开发人员在应用缓存技术时的主要痛点有两个。一是数据访问逻辑的复杂度高,首先要查询缓存,如果未找到则查询基础数据源,然后在缓存中建立数据副本。二是具有数据一致性问题,程序员必须编写额外的代码保证基础数据源中的数据发生变化时,缓存复本能够随之修改。这两点都会给开发人员带来一定的困扰,一方面增加了需要编写的代码量,另一方面分散了开发人员的注意力,使他们不能专注于业务逻辑。如何解决上述问题,是我们迫切需要研究的。
发明内容
1.要解决的技术问题
针对现有技术中存在的需要单独建立数据副本进行缓存,在数据变化时候需要实时更新的问题,本发明提供了一种缓存装置、系统及缓存方法,它可以实现快速对产品的更新,不需要增加数据访问逻辑,代码量不会增加,快速准确。
2.技术方案
本发明的目的通过以下技术方案实现。
本方案提供了一种缓存装置,包括,
对象容器,接受业务系统发送的load指令和save指令,从高速存储区查询对象副本、将对象副本写入高速存储区、跟踪对象修改、向所述消息队列装置推送对象变更记录;并通过所述对象映射接口从基础数据源查询对象、通过所述对象映射接口向基础数据源写入对象;
用于存储对象副本的高速存储区,高速存储区接受对象容器存取对象副本,同步伺服器更新对象副本;
消息队列,用于接收对象容器发送的修改记录并对消息排列,接受同步伺服器提取修改记录;
同步伺服器,用于从消息队列中取出对象变更记录,并据此更新所述高速存储区中的对象副本;
对象映射接口,该接口定义了实施对象映射的规范,包含query和save两个操作。
一种缓存系统,上述的缓存装置,还包括业务系统,业务系统包含实现对象映射接口的对象映射模块,业务系统将按照自身的业务过程对放入对象容器中的对象进行操作。
更进一步的,业务系统的操作包括但不限于添加新对象、修改对象属性、将对象标记为删除。
一种缓存方法,步骤如下,
业务系统向对象容器发送load指令,对象容器首先从所述高速缓存区中查询对象,根据是否查询到对象,执行后续步骤,查询到对象后将对象放入其内部寄存器,如果查询不到对象副本,则通过对象映射接口从基础数据源查询对象并将查询到的对象放入所述缓存装置。
更进一步的,对象放入所述缓存装置后,对象容器同时跟踪对象修改;对象容器向消息队列推送对象变更记录;同时,同步伺服器,从消息队列取出所述对象变更记录,并据此更新高速存储区中对象副本,完成对应的数据更新。
更进一步的,对象容器在结束执行load指令前会将加载的对象放入其内部的寄存器,并建立快照。
更进一步的,业务过程完成后,对象容器接受业务系统发送的存储指令。以便将对象所作的更改持久化到基础数据源。
更进一步的,具体的更改持久化过程包括,收到存储指令后,对象容器从其内部寄存器找到新增的对象和被标记为删除的对象,通过将对象属性的当前值与所述快照值比对发现已修改的对象,将对象通过对象映射接口的存储操作持久化到基础数据源,同时向消息队列推送对象变更记录。
更进一步的,建立快照的方法是取出对象各属性的值放入数据字典,数据字典是一个键/值对数据结构,所述数据字典的键为属性名称,值为属性值。
3.有益效果
相比于现有技术,本发明的优点在于:本方法是一个对程序员透明的方法,就是指程序员感知不到这个缓存装置的存在,即图中虚线框代表该装置。具体而言有三点好处:一是采用该装置不会增加代码量;二是避免程序员在编码过程中发生关注点转移,影响编码体验;三是在成熟系统中加入或移除该装置,不会对上层业务代码造成影响。整体上没有增加系统大小,且体验不会发生变化,修改也更加方便。
附图说明
图1缓存装置及其应用示意图;
图2执行load指令流程;
图3用事件模型实现更改跟踪;
图4更新对象副本流程。
具体实施方式
下面结合说明书附图和具体的实施例,对本发明作详细描述。
实施例1
针对于上述的问题,本方案提供了一种缓存装置,如图1所示,缓存装置包括,
对象容器,对象容器是一个程序模块,它可以接受业务系统发送的load指令和save指令,从高速存储区查询对象副本、将对象副本写入高速存储区、跟踪对象修改、向所述消息队列装置推送对象变更记录;并通过所述对象映射接口从基础数据源查询对象、通过所述对象映射接口向基础数据源写入对象;
一个用于存储对象副本的高速存储区,高速存储区接受对象容器存取对象副本,同步伺服器更新对象副本,此高速存储区是用缓存服务实现的,缓存服务可以采用Redis、MemoryCache、MongoDB等方案,其中没有选的,采用Redis服务,Redis是常用的内存数据存储服务,在计算机内存中存储数据,并支持采用哈希算法查找数据,因此满足快速存入和读取对象的要求,可以保证缓存的速度不会因为本方案的设计受到限制。本方案的对象在Redis中是采用序列化形式存储的。
一个消息队列,本实施例是用消息队列服务实现的,消息队列服务可以采用ActiveMQ、kafka、Microsoft Message Queue等方案,优选的本实施例可以采用RabitMQ服务,RabitMQ是常用的消息队列服务,支持消息持久化,可以基于Http协议推送或读取消息。消息队列用于接收对象容器和同步伺服器发送的修改记录。
同步伺服器,用于从消息队列中取出对象变更记录,并据此更新所述高速存储区中的对象副本。
对象映射接口,该接口定义了实施对象映射的规范,包含query和save两个操作。其中query操作需要筛选条件参数,简记为query(criteria);save以要保存的对象作为参数,简记为save(obj)。
基于对应的缓存装置,本方案构成了对应的缓存系统,还包括业务系统,业务系统通过向对象容器发送指令来使用所述缓存装置。包含一个实现了对象映射接口的程序模块,图中称为对象映射模块,该模块实际执行从基础数据源查询对象的功能。
业务系统需要使用对象时向对象容器发送load指令,该指令以筛选条件作为参数。收到load指令后,对象容器首先从所述高速缓存区中查询对象,如果找不到,则通过对象映射接口的query操作从基础数据源查询对象并将查询到的对象放入所述缓存区。
基于上述缓存系统,对应的缓存方法如下,如图1-4所示,业务系统将按照自身的业务过程对放入对象容器中的对象进行操作,如添加新对象、修改对象属性、将对象标记为删除等等。
现有技术中包括从高速存储区查询对象副本的步骤,以及将对象副本写入高速存储区的步骤,本方案还包括,当从高速存储区未找到目标对象时,对象容器自动转向对象映射接口,从基础数据源查询并自动将查询到的对象写入所述高速存储区,同时跟踪对象修改的步骤;对象容器向消息队列推送对象变更记录的步骤;同时,同步伺服器,从消息队列取出所述对象变更记录,并据此更新高速存储区中对象副本,完成对应的数据更新。不论是否查询到副本,都要执行“建立快照”的操作。交底书的表述是“在结束执行load指令前”,既有可能是:查到副本>>建立快照>>结束执行,也有可能是:查不到副本>>转查基础数据源>>建立快照>>结束执行。
对象容器在结束执行load指令前会将加载的对象放入其内部的寄存器,并建立快照。
建立快照的方法是取出对象各属性的值放入数据字典。数据字典是一个键/值对数据结构,所述数据字典的键为属性名称,值为属性值。特别地,如果属性值为另一对象,则将这一对象的引用或标识放入字典。
所述同步伺服器还可以通过对象映射接口从基础数据源查询对象的最新状态。
本方案还包括,更新基础数据源的方法。业务过程完成后,业务系统将向对象容器发送save指令以便将对象所作的更改持久化到基础数据源。具体的,收到存储指令后,对象容器从其内部寄存器找到新增的对象和被标记为删除的对象,通过将对象属性的当前值与所述快照值比对发现已修改的对象,将对象通过对象映射接口的存储操作持久化到基础数据源,同时向消息队列推送对象变更记录。上述的对象变更记录包含三个数据项:(1)变更类型,在新增、删除、修改三者中选其一;(2)对象标识,用于确定哪个对象发生了变更;(3)对象属性的值,对于“修改”类型的记录,是指属性修改后的值,对于“删除”类型的记录,不需要该数据项。其中,第三项对象属性值是可选的,例如,对于“修改”型记录,当对象比较大时为提升传输效率可以省略此项。
本实施例通过比对快照的方法跟踪对象更改,如果属性的当前值与快照中的值不一样则说明对象发生了修改。还可以采用事件模型实现更改跟踪。如图3所示,对象在它每一个属性的set访问器中发布“属性更改”事件,当对象被放入对象容器时对象容器订阅该事件(①),当业务系统调用所述set访问器时(②),所述事件被引发(③),对象容器便可接收到该事件,从而感知到对象被修改。
同步伺服器执行消息循环,从队列中取出消息(对象变更记录),解析所述变更记录,根据对象标识在所述高速存储区中找到目标对象,然后根据变更类型和对象属性值更新对象副本。特别地,如果对象变更记录未携带对象属性值,同步伺服器可以通过对象映射接口从基础数据源中查询。上述过程如图4所示。
以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (10)
1.一种缓存装置,其特征在于,包括,
对象容器,接受业务系统发送的load指令和save指令,从高速存储区查询对象副本、将对象副本写入高速存储区、跟踪对象修改、向所述消息队列装置推送对象变更记录;并通过所述对象映射接口从基础数据源查询对象、通过所述对象映射接口向基础数据源写入对象;
用于存储对象副本的高速存储区,高速存储区接受对象容器存取对象副本,同步伺服器更新对象副本;
消息队列,用于接收对象容器发送的修改记录并对消息排队,接受同步伺服器提取修改记录;
同步伺服器,用于从消息队列中取出对象变更记录,并据此更新所述高速存储区中的对象副本;
对象映射接口,定义实施对象映射的规范,包含query和save两个操作。
2.根据权利要求1所述的缓存装置,其特征在于,所述的消息队列通过消息队列服务实现。
3.一种缓存系统,其特征在于,包括权利要求1或2所述的缓存装置,还包括业务系统,业务系统包含实现对象映射接口的对象映射模块,业务系统将按照自身的业务过程对放入对象容器中的对象进行操作。
4.根据权利要求3所述的缓存系统,其特征在于,业务系统的操作包括但不限于添加新对象、修改对象属性、将对象标记为删除。
5.一种缓存方法,步骤如下,业务系统向对象容器发送指令,对象容器首先从所述高速缓存区中查询对象,根据是否查询到对象,执行后续步骤,查询到对象后将对象放入其内部寄存器,如果查询不到对象副本,则通过对象映射接口操作从基础数据源查询对象并将查询到的对象放入所述缓存装置。
6.根据权利要求5所述的一种缓存方法,其特征在于,对象放入所述缓存装置后,对象容器同时跟踪对象修改;对象容器向消息队列推送对象变更记录;同时,同步伺服器,从消息队列取出所述对象变更记录,并据此更新高速存储区中对象副本,完成对应的数据更新。
7.根据权利要求5所述的一种缓存方法,其特征在于,对象容器在结束执行load指令前会将加载的对象放入其内部的寄存器,并建立快照。
8.根据权利要求5或6或7所述的一种缓存方法,其特征在于,业务过程完成后,对象容器接受业务系统发送的存储指令。
9.根据权利要求8所述的一种缓存方法,其特征在于,具体的更改持久化过程包括,接收到存储指令后,对象容器从其内部寄存器找到新增的对象和被标记为删除的对象,通过将对象属性的当前值与所述快照值比对发现已修改的对象,将对象通过对象映射接口的存储操作持久化到基础数据源,同时向消息队列推送对象变更记录。
10.根据权利要求7所述的一种缓存方法,其特征在于,建立快照的方法是取出对象各属性的值放入数据字典,数据字典是一个键/值对数据结构,所述数据字典的键为属性名称,值为属性值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010423476.1A CN111797119B (zh) | 2020-05-19 | 2020-05-19 | 一种缓存装置、系统及缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010423476.1A CN111797119B (zh) | 2020-05-19 | 2020-05-19 | 一种缓存装置、系统及缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111797119A true CN111797119A (zh) | 2020-10-20 |
CN111797119B CN111797119B (zh) | 2024-01-30 |
Family
ID=72805906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010423476.1A Active CN111797119B (zh) | 2020-05-19 | 2020-05-19 | 一种缓存装置、系统及缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111797119B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116366582A (zh) * | 2023-06-01 | 2023-06-30 | 天翼云科技有限公司 | 一种基于ovs-dpdk的数据包处理方法、系统 |
CN116820353A (zh) * | 2023-08-28 | 2023-09-29 | 苏州浪潮智能科技有限公司 | 分布式存储系统的数据处理方法、系统、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040123048A1 (en) * | 2002-07-22 | 2004-06-24 | Ward Mullins | Dynamic object-driven database manipulation and mapping system having a simple global interface and an optional multiple user need only caching system with disable and notify features |
CN102004741A (zh) * | 2009-09-01 | 2011-04-06 | 上海杉达学院 | 数据库访问系统 |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
CN107291806A (zh) * | 2017-05-16 | 2017-10-24 | 浙江工业大学 | 一种Web可视化环境中的数据视图副本迭代方法 |
CN107357848A (zh) * | 2017-06-27 | 2017-11-17 | 中国电子科技集团公司第二十八研究所 | 基于驱动封装的数据库同步方法 |
CN109241072A (zh) * | 2018-08-31 | 2019-01-18 | 携程计算机技术(上海)有限公司 | 基于Canal的缓存更新方法及系统 |
CN109857812A (zh) * | 2019-02-27 | 2019-06-07 | 珠海天燕科技有限公司 | 一种处理缓存中数据的方法和装置 |
CN110413418A (zh) * | 2019-06-25 | 2019-11-05 | 北京三快在线科技有限公司 | 缓存同步装置及方法,缓存同步系统、电子设备 |
CN110764796A (zh) * | 2018-07-27 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 更新缓存的方法和装置 |
-
2020
- 2020-05-19 CN CN202010423476.1A patent/CN111797119B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040123048A1 (en) * | 2002-07-22 | 2004-06-24 | Ward Mullins | Dynamic object-driven database manipulation and mapping system having a simple global interface and an optional multiple user need only caching system with disable and notify features |
CN102004741A (zh) * | 2009-09-01 | 2011-04-06 | 上海杉达学院 | 数据库访问系统 |
CN102023973A (zh) * | 2009-09-14 | 2011-04-20 | 中国移动通信集团公司 | 一种应用缓存服务器与数据库同步的方法、装置和系统 |
CN107291806A (zh) * | 2017-05-16 | 2017-10-24 | 浙江工业大学 | 一种Web可视化环境中的数据视图副本迭代方法 |
CN107357848A (zh) * | 2017-06-27 | 2017-11-17 | 中国电子科技集团公司第二十八研究所 | 基于驱动封装的数据库同步方法 |
CN110764796A (zh) * | 2018-07-27 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 更新缓存的方法和装置 |
CN109241072A (zh) * | 2018-08-31 | 2019-01-18 | 携程计算机技术(上海)有限公司 | 基于Canal的缓存更新方法及系统 |
CN109857812A (zh) * | 2019-02-27 | 2019-06-07 | 珠海天燕科技有限公司 | 一种处理缓存中数据的方法和装置 |
CN110413418A (zh) * | 2019-06-25 | 2019-11-05 | 北京三快在线科技有限公司 | 缓存同步装置及方法,缓存同步系统、电子设备 |
Non-Patent Citations (1)
Title |
---|
小程故事多: ""实现缓存最终一致性的两种方案"", 《HTTPS://WWW.JIANSHU.COM/P/FBE6A7928229》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116366582A (zh) * | 2023-06-01 | 2023-06-30 | 天翼云科技有限公司 | 一种基于ovs-dpdk的数据包处理方法、系统 |
CN116366582B (zh) * | 2023-06-01 | 2023-08-04 | 天翼云科技有限公司 | 一种基于ovs-dpdk的数据包处理方法、系统 |
CN116820353A (zh) * | 2023-08-28 | 2023-09-29 | 苏州浪潮智能科技有限公司 | 分布式存储系统的数据处理方法、系统、设备及存储介质 |
CN116820353B (zh) * | 2023-08-28 | 2024-01-26 | 苏州浪潮智能科技有限公司 | 分布式存储系统的数据处理方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111797119B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4372671B2 (ja) | 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置 | |
CN103678556B (zh) | 列式数据库处理的方法和处理设备 | |
CN107291869B (zh) | 一种分布式服务系统及其数据查询的方法 | |
JP6998928B2 (ja) | データを記憶およびクエリするための方法、装置、設備、および媒体 | |
TWI262406B (en) | System, method and program storage device for dynamic caching of data based on queries performed by a local application | |
US7991796B2 (en) | System and program for implementing scrollable cursors in a distributed database system | |
JP3848085B2 (ja) | トランザクションデータの高速記憶常駐処理方法および処理システム | |
JP4195397B2 (ja) | 集中キャッシュメモリのアトミックな更新方法 | |
US7565365B2 (en) | Object storage and synchronization hooks for occasionally-connected devices | |
CN109144994A (zh) | 索引更新方法、系统及相关装置 | |
US20070156687A1 (en) | Efficient implementation of multiple work areas in a file system like repository that supports file versioning | |
CN102609488B (zh) | 客户端及其数据查询方法、服务端和数据查询系统 | |
CN101184106A (zh) | 一种移动数据库的关联事务处理方法 | |
EP1393208A2 (en) | Integrating tablespaces with different block sizes | |
CN103902623A (zh) | 用于在存储系统上存取文件的方法和系统 | |
EP1808780B1 (en) | Determination of database statistics using application logic | |
EP2336901B1 (en) | Online access to database snapshots | |
CN111309266B (zh) | 一种基于ceph的分布式存储元数据系统日志优化系统与方法 | |
US6453324B1 (en) | Method for maintaining a version history of objects in a repository | |
CN111797119B (zh) | 一种缓存装置、系统及缓存方法 | |
CN105074696A (zh) | 用于资源约束和其它设备的统一可搜索存储 | |
CN109815240A (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
US8140493B2 (en) | Changing metadata without invalidating cursors | |
US7890456B2 (en) | Sharing of database objects | |
CN102004800A (zh) | Pdm系统中数据的查询方法及装置 |
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 |