CN112187896A - 支持改动实时通知和数据实时同步的缓存系统及方法 - Google Patents
支持改动实时通知和数据实时同步的缓存系统及方法 Download PDFInfo
- Publication number
- CN112187896A CN112187896A CN202010986301.1A CN202010986301A CN112187896A CN 112187896 A CN112187896 A CN 112187896A CN 202010986301 A CN202010986301 A CN 202010986301A CN 112187896 A CN112187896 A CN 112187896A
- Authority
- CN
- China
- Prior art keywords
- data
- real
- memory cache
- subscription
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 230000008859 change Effects 0.000 claims abstract description 58
- 230000004048 modification Effects 0.000 claims abstract description 39
- 238000012986 modification Methods 0.000 claims abstract description 39
- 230000002085 persistent effect Effects 0.000 claims abstract description 7
- 238000012544 monitoring process Methods 0.000 claims description 27
- 230000037430 deletion Effects 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 5
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Abstract
本发明公开了一种支持改动实时通知和数据实时同步的缓存系统及方法,属于增强性内存缓存领域。本发明系统包括:数据同步器、内存缓存、缓存变动监控器和订阅注册器;本发明方法包括:启动数据同步器,内存缓存启动时,将远端数据库内的数据全量缓存至本地内存;数据同步器在在有数据变动时根据变动事件更新内存缓存内容;增加监控层,用于监控对内存缓存的修改操作,对外提供增删改查接口被调用时,会产生事件推送至订阅注册器,注册器将该次修改和/或内存缓存的更新分发至对应的订阅者;启动订阅注册器,用于接受来自调用者的订阅请求,并与订阅者建立一个持久性通道,当有对应的数据修改和/或内存缓存的更新则向订阅通道推送事件。
Description
技术领域
本发明涉及增强性内存缓存领域,特别涉及一种支持改动实时通知和数据实时同步的缓存系统及方法。
背景技术
一直以来缓存技术均用于减少直接与数据库交互次数以提高单机性能。传统内存缓存技术为键值对形式存储,在使用时先从内存查找,若不存在则向数据库查询,再使用数据库查询结果填充至内存缓存中。在要求数据改动实时通知(即发布订阅功能)的场景中,无法使用该类缓存方式,已有支持通知的数据库类似etcd数据库,尚未有符合其场景的缓存方式。
发明内容
本发明的目的是提供一种能够极大降低网络开销的支持改动实时通知和数据实时同步的缓存系统及方法。
本发明解决其技术问题,采用的技术方案是:
首先,提出一种支持改动实时通知和数据实时同步的缓存系统,包括数据同步器、内存缓存、缓存变动监控器和订阅注册器;
所述数据同步器,用于在内存缓存启动时,执行数据同步操作,通过该数据同步操作将远端数据库内的数据全量缓存至内存缓存中;
所述缓存变动监控器,用于在执行完同步操作后,启动监控进程,通过该监控进程与远端数据库建立一条订阅通道,以实时获取数据库中的数据变动,当远端数据库中有数据变动时,根据变动事件更新内存缓存中的数据;同时,
还用于在内存缓存上增加监控层,通过该监控层监控对内存缓存的修改操作,当对外提供的与修改操作对应的接口被调用时,产生相应的事件并推送至订阅注册器,订阅注册器将该次修改和/或内存缓存的更新分发至对应的订阅者;
所述订阅注册器,用于接收来自调用者的订阅请求,并与订阅者建立一个持久性通道,当有对应的数据修改和/或内存缓存的更新则向订阅通道推送事件。
进一步的是,在执行数据同步操作时,数据同步操作通过执行一次列举查询操作将远端数据库内的数据全量缓存至内存缓存中。
进一步的是,所述远端数据库为键值数据库,所述内存缓存中数据的结构为键值对形式的线程安全结构。
进一步的是,所述与修改操作对应的接口包括增加数据接口、删除数据接口、改动数据接口和查询数据接口。
进一步的是,若有非来自所述内存缓存对数据的修改操作发生,则数据同步器会接受到数据变动事件,根据变动事件对内存缓存进行改动,并通过订阅注册器向所述订阅通道推送事件。
另外,还提出一种支持改动实时通知和数据实时同步的缓存方法,应用于所述的支持改动实时通知和数据实时同步的缓存系统,包括如下步骤:
步骤1、启动数据同步器,内存缓存启动时,将执行数据同步操作,数据同步操作将执行一次列举查询操作将远端数据库内的数据全量缓存至本地内存;
步骤2、数据同步器在后台启动监控进程与远端数据库建立一条订阅通道以实时获取数据库中的数据变动,在有数据变动时根据变动事件更新内存缓存内容;
步骤3、在内存缓存之上增加监控层,用于监控对内存缓存的修改操作,对外提供增删改查接口被调用时,会产生事件推送至订阅注册器,注册器将该次修改和/或内存缓存的更新分发至对应的订阅者;
步骤4、启动订阅注册器,用于接受来自调用者的订阅请求,并与订阅者建立一个持久性通道,当有对应的数据修改和/或内存缓存的更新则向订阅通道推送事件。
进一步的是,步骤1和2中,所述远端数据库为键值数据库。
进一步的是,步骤1中,所述内存缓存中数据的结构为键值对形式的线程安全结构。
进一步的是,还包括步骤5:若有非来自所述内存缓存对数据的修改操作发生,则数据同步器会接受到数据变动事件,根据变动事件对内存缓存进行改动,并通过订阅注册器向所述订阅通道推送事件。
本发明的有益效果是,通过上述支持改动实时通知和数据实时同步的缓存系统及方法,将传统缓存技术上增加支持改动实时通知功能,并要求缓存和数据库数据实时同步,相对于直接使用数据库通知功能,将原有的多条tcp连接降低至了缓存对数据的一条订阅连接,能够极大的降低网络开销。
附图说明
图1为本发明支持改动实时通知和数据实时同步的缓存方法的流程图;
图2为本发明实施例中内存缓存的整体结构示意图。
具体实施方式
下面结合附图及实施例,详细描述本发明的技术方案。
本发明首先提出一种支持改动实时通知和数据实时同步的缓存系统,包括数据同步器、内存缓存、缓存变动监控器和订阅注册器;其中,数据同步器,用于在内存缓存启动时,执行数据同步操作,通过该数据同步操作将远端数据库内的数据全量缓存至内存缓存中;缓存变动监控器,用于在执行完同步操作后,启动监控进程,通过该监控进程与远端数据库建立一条订阅通道,以实时获取数据库中的数据变动,当远端数据库中有数据变动时,根据变动事件更新内存缓存中的数据;同时,还用于在内存缓存上增加监控层,通过该监控层监控对内存缓存的修改操作,当对外提供的与修改操作对应的接口被调用时,产生相应的事件并推送至订阅注册器,订阅注册器将该次修改和/或内存缓存的更新分发至对应的订阅者;订阅注册器,用于接收来自调用者的订阅请求,并与订阅者建立一个持久性通道,当有对应的数据修改和/或内存缓存的更新则向订阅通道推送事件。
上述系统中,在执行数据同步操作时,数据同步操作通过执行一次列举查询操作将远端数据库内的数据全量缓存至内存缓存中。作为优选,为了满足一般的数据存储需要,远端数据库可以为键值数据库,并且,内存缓存中数据的结构为键值对形式的线程安全结构。
实际应用中,一般所指的增删改查通常用修改表示,增指增加数据,删指删除数据,改指改动数据,查指查询数据,因此,本申请中,与修改操作对应的接口可以包括增加数据接口、删除数据接口、改动数据接口和查询数据接口。上述系统中,无论是远端数据库的数据变动导致的内存缓存的更新,还是直接利用接口对内存缓存中的数据进行直接修改,均属于来自内存缓存对数据的修改操作,实际应用中,还可以存在非来自内存缓存对数据的修改操作,若有非来自内存缓存对数据的修改操作发生,则数据同步器会接受到数据变动事件,根据变动事件对内存缓存进行改动,并通过订阅注册器向订阅通道推送事件。
另外,本发明还提供一种支持改动实时通知和数据实时同步的缓存方法,其流程图见图1,该方法应用于支持改动实时通知和数据实时同步的缓存系统,包括如下步骤:
步骤1、启动数据同步器,内存缓存启动时,将执行数据同步操作,数据同步操作将执行一次列举查询操作将远端数据库内的数据全量缓存至本地内存,其中,远端数据库同样也可以为键值数据库,内存缓存中数据的结构则为键值对形式的线程安全结构。
步骤2、数据同步器在后台启动监控进程与远端数据库建立一条订阅通道以实时获取数据库中的数据变动,在有数据变动时根据变动事件更新内存缓存内容。
步骤3、在内存缓存之上增加监控层,用于监控对内存缓存的修改操作,对外提供增删改查接口被调用时,会产生事件推送至订阅注册器,注册器将该次修改和/或内存缓存的更新分发至对应的订阅者。
步骤4、启动订阅注册器,用于接受来自调用者的订阅请求,并与订阅者建立一个持久性通道,当有对应的数据修改和/或内存缓存的更新则向订阅通道推送事件。
实际应用中,还可以存在非来自内存缓存对数据的修改操作,若有非来自内存缓存对数据的修改操作发生,则数据同步器会接受到数据变动事件,根据变动事件对内存缓存进行改动,并通过订阅注册器向订阅通道推送事件。
实施例
本实施例中使用的远端数据库为etcd键值数据库,本实施例的实现承载体为一个应用程序,本实施例中内存缓存的整体结构示意图见图2,因此,本实施例具体包括如下步骤:
步骤S1:在数据同步器启动时,对etcd中需要被缓存的目录(例如`/newben/`)进行list查询,将list结果依次按照对应的键值存入内存map中。
步骤S2:再使用list数据中的reversion启动向etcd的watch操作,以建立grpc长连接进行数据变动监控。list+watch可以再内存中建立一个全量的缓存。当监视到数据变动时,会将该变动对内存缓存进行更新。为了防止watch中断和数据丢失,数据同步器会在每10分钟执行一次步骤S1、步骤S2操作重新同步完整的数据库缓存。
步骤S3:在内存缓存上增加变动监控层,在有针对内存缓存的成功修改时,会将该操作生成事件。事件内容包含改动方式(新增/修改/删除)和改动后的记录值。该组件产生的事件会传至订阅注册器进行分发。
步骤S4:订阅注册器。订阅注册器负责维护订阅信息,并在数据变动时对该数据相关的订阅者推送信息。使用者使用订阅功能时会选择需要订阅的数据目录,缓存注册器将生成一个订阅实例,并返回调用者一个管道(channel),调到者会从该管道实时收取到其关系的数据。
步骤S5:当有来自监控层的事件传入订阅注册器中时,注册器会便利当前以及注册的订阅,并匹配订阅条件,若有符合订阅条件的数据变动则向该订阅的管道发生本次变动。
Claims (9)
1.支持改动实时通知和数据实时同步的缓存系统,其特征在于,包括数据同步器、内存缓存、缓存变动监控器和订阅注册器;
所述数据同步器,用于在内存缓存启动时,执行数据同步操作,通过该数据同步操作将远端数据库内的数据全量缓存至内存缓存中;
所述缓存变动监控器,用于在执行完同步操作后,启动监控进程,通过该监控进程与远端数据库建立一条订阅通道,以实时获取数据库中的数据变动,当远端数据库中有数据变动时,根据变动事件更新内存缓存中的数据;同时,
还用于在内存缓存上增加监控层,通过该监控层监控对内存缓存的修改操作,当对外提供的与修改操作对应的接口被调用时,产生相应的事件并推送至订阅注册器,订阅注册器将该次修改和/或内存缓存的更新分发至对应的订阅者;
所述订阅注册器,用于接收来自调用者的订阅请求,并与订阅者建立一个持久性通道,当有对应的数据修改和/或内存缓存的更新则向订阅通道推送事件。
2.根据权利要求1所述的支持改动实时通知和数据实时同步的缓存系统,其特征在于,在执行数据同步操作时,数据同步操作通过执行一次列举查询操作将远端数据库内的数据全量缓存至内存缓存中。
3.根据权利要求1所述的支持改动实时通知和数据实时同步的缓存系统,其特征在于,所述远端数据库为键值数据库,所述内存缓存中数据的结构为键值对形式的线程安全结构。
4.根据权利要求1所述的支持改动实时通知和数据实时同步的缓存系统,其特征在于,所述与修改操作对应的接口包括增加数据接口、删除数据接口、改动数据接口和查询数据接口。
5.根据权利要求1-4任意一项所述的支持改动实时通知和数据实时同步的缓存系统,其特征在于,若有非来自所述内存缓存对数据的修改操作发生,则数据同步器会接受到数据变动事件,根据变动事件对内存缓存进行改动,并通过订阅注册器向所述订阅通道推送事件。
6.支持改动实时通知和数据实时同步的缓存方法,应用于权利要求1-5任意一项所述的支持改动实时通知和数据实时同步的缓存系统,其特征在于,包括如下步骤:
步骤1、启动数据同步器,内存缓存启动时,将执行数据同步操作,数据同步操作将执行一次列举查询操作将远端数据库内的数据全量缓存至本地内存;
步骤2、数据同步器在后台启动监控进程与远端数据库建立一条订阅通道以实时获取数据库中的数据变动,在有数据变动时根据变动事件更新内存缓存内容;
步骤3、在内存缓存之上增加监控层,用于监控对内存缓存的修改操作,对外提供增删改查接口被调用时,会产生事件推送至订阅注册器,注册器将该次修改和/或内存缓存的更新分发至对应的订阅者;
步骤4、启动订阅注册器,用于接受来自调用者的订阅请求,并与订阅者建立一个持久性通道,当有对应的数据修改和/或内存缓存的更新则向订阅通道推送事件。
7.根据权利要求6所述的支持改动实时通知和数据实时同步的缓存方法,其特征在于,步骤1和2中,所述远端数据库为键值数据库。
8.根据权利要求6或7所述的支持改动实时通知和数据实时同步的缓存方法,其特征在于,步骤1中,所述内存缓存中数据的结构为键值对形式的线程安全结构。
9.根据权利要求6所述的支持改动实时通知和数据实时同步的缓存方法,其特征在于,还包括步骤5:若有非来自所述内存缓存对数据的修改操作发生,则数据同步器会接受到数据变动事件,根据变动事件对内存缓存进行改动,并通过订阅注册器向所述订阅通道推送事件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010986301.1A CN112187896A (zh) | 2020-09-18 | 2020-09-18 | 支持改动实时通知和数据实时同步的缓存系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010986301.1A CN112187896A (zh) | 2020-09-18 | 2020-09-18 | 支持改动实时通知和数据实时同步的缓存系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112187896A true CN112187896A (zh) | 2021-01-05 |
Family
ID=73921658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010986301.1A Pending CN112187896A (zh) | 2020-09-18 | 2020-09-18 | 支持改动实时通知和数据实时同步的缓存系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112187896A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112600942A (zh) * | 2021-02-18 | 2021-04-02 | 杭州网银互联科技股份有限公司 | 一种应用于提升sd-wan中的路由计算效率的方法及系统 |
CN115190125A (zh) * | 2022-06-27 | 2022-10-14 | 京东科技控股股份有限公司 | 一种缓存集群的监控方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030225840A1 (en) * | 2002-05-28 | 2003-12-04 | Glassco David H.J. | Change notification and update service for object sharing via publication and subscription |
US20120311064A1 (en) * | 2011-05-06 | 2012-12-06 | Ajay Padmakar Deo | Methods, systems, and computer readable media for caching call session control function (cscf) data at a diameter signaling router (dsr) |
CN104657467A (zh) * | 2015-02-11 | 2015-05-27 | 南京国电南自美卓控制系统有限公司 | 一种实时内存数据库的带订阅/发布的数据推送框架 |
CN106612301A (zh) * | 2015-10-22 | 2017-05-03 | 招商局国际信息技术有限公司 | 更新数据的推送方法和装置 |
CN106790629A (zh) * | 2017-01-03 | 2017-05-31 | 努比亚技术有限公司 | 数据同步装置及其实现数据同步的方法、客户端访问系统 |
CN107301196A (zh) * | 2017-05-03 | 2017-10-27 | 北京小度信息科技有限公司 | 数据同步方法、装置、设备及监控服务器 |
CN109800239A (zh) * | 2019-01-15 | 2019-05-24 | 科大国创软件股份有限公司 | 基于Redis的分布式架构数据共享方法 |
CN111163159A (zh) * | 2019-12-27 | 2020-05-15 | 中国平安人寿保险股份有限公司 | 消息订阅方法、装置、服务器及计算机可读存储介质 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、系统及存储介质 |
-
2020
- 2020-09-18 CN CN202010986301.1A patent/CN112187896A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030225840A1 (en) * | 2002-05-28 | 2003-12-04 | Glassco David H.J. | Change notification and update service for object sharing via publication and subscription |
US20120311064A1 (en) * | 2011-05-06 | 2012-12-06 | Ajay Padmakar Deo | Methods, systems, and computer readable media for caching call session control function (cscf) data at a diameter signaling router (dsr) |
CN104657467A (zh) * | 2015-02-11 | 2015-05-27 | 南京国电南自美卓控制系统有限公司 | 一种实时内存数据库的带订阅/发布的数据推送框架 |
CN106612301A (zh) * | 2015-10-22 | 2017-05-03 | 招商局国际信息技术有限公司 | 更新数据的推送方法和装置 |
CN106790629A (zh) * | 2017-01-03 | 2017-05-31 | 努比亚技术有限公司 | 数据同步装置及其实现数据同步的方法、客户端访问系统 |
CN107301196A (zh) * | 2017-05-03 | 2017-10-27 | 北京小度信息科技有限公司 | 数据同步方法、装置、设备及监控服务器 |
CN109800239A (zh) * | 2019-01-15 | 2019-05-24 | 科大国创软件股份有限公司 | 基于Redis的分布式架构数据共享方法 |
CN111163159A (zh) * | 2019-12-27 | 2020-05-15 | 中国平安人寿保险股份有限公司 | 消息订阅方法、装置、服务器及计算机可读存储介质 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、系统及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112600942A (zh) * | 2021-02-18 | 2021-04-02 | 杭州网银互联科技股份有限公司 | 一种应用于提升sd-wan中的路由计算效率的方法及系统 |
CN115190125A (zh) * | 2022-06-27 | 2022-10-14 | 京东科技控股股份有限公司 | 一种缓存集群的监控方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7366738B2 (en) | Method and system for object cache synchronization | |
JP4732661B2 (ja) | クライアントのデータベースとサーバーのデータベースとを同期させる方法 | |
CN103853727B (zh) | 提高大数据量查询性能的方法及系统 | |
US7509350B2 (en) | Method and apparatus for synchronizing of databases | |
CN101815087B (zh) | 一种移动通信终端的信息缓存方法 | |
US20150120662A1 (en) | Synchronizing event history for multiple clients | |
CN112187896A (zh) | 支持改动实时通知和数据实时同步的缓存系统及方法 | |
CN109639773B (zh) | 一种动态构建的分布式数据集群控制系统及其方法 | |
CN102904887A (zh) | 一种Web客户端与服务器的数据同步方法和系统 | |
KR20040010677A (ko) | 서로 다른 클라이언트 사이의 데이터 동기화 시스템,클라이언트들간의 업데이트 동기화 방법, 업데이트의 복제방법, 및 컴퓨터 프로그램 제품 | |
WO2020108544A1 (zh) | 同步缓存数据的方法、装置和系统 | |
CN105246054A (zh) | 一种适用于android智能手机的消息推送方法 | |
CN110413418A (zh) | 缓存同步装置及方法,缓存同步系统、电子设备 | |
CN107018170B (zh) | 一种数据同步方法和设备 | |
CN105959420A (zh) | 多客户端元数据同步更新方法及系统 | |
CN106603610B (zh) | 一种数据获取以及同步方法、装置 | |
CN106534336B (zh) | 一种视频订阅动态的实现系统及方法 | |
CN112269802A (zh) | 一种基于Clickhouse频繁删改查优化的方法及系统 | |
CN115658171A (zh) | 一种轻量级解决java分布式应用配置动态刷新的方法及系统 | |
CN109634759A (zh) | 一种分布式存储系统的配额管理方法、系统及相关组件 | |
CN110581779A (zh) | 基于本地缓存的配置下发平台系统及配置下发方法 | |
CN112269820A (zh) | 一种基于cmsp实现数据批次同步的方法及平台 | |
CA2590025C (en) | Method and apparatus for synchronizing of databases | |
CN105868045A (zh) | 一种数据缓存方法及装置 | |
CN115270021A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210105 |