CN116401317B - 一种缓存数据同步方法、装置、电子设备及介质 - Google Patents
一种缓存数据同步方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN116401317B CN116401317B CN202310424213.6A CN202310424213A CN116401317B CN 116401317 B CN116401317 B CN 116401317B CN 202310424213 A CN202310424213 A CN 202310424213A CN 116401317 B CN116401317 B CN 116401317B
- Authority
- CN
- China
- Prior art keywords
- cache
- information
- synchronized
- synchronization
- updating
- 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
- 238000000034 method Methods 0.000 title claims abstract description 295
- 230000008569 process Effects 0.000 claims abstract description 213
- 230000001360 synchronised effect Effects 0.000 claims abstract description 121
- 230000004048 modification Effects 0.000 claims description 19
- 238000012986 modification Methods 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 3
- 230000008859 change Effects 0.000 description 7
- 239000000178 monomer Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种缓存数据同步方法、装置、电子设备及介质,所述方法包括:启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具;确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存,从而实现多个进程间缓存同步,且无需加工进程级的缓存进行剥离,无需修改查询逻辑的代码。
Description
技术领域
本申请涉及计算机数据处理技术领域,具体而言,涉及一种缓存数据同步方法、装置、电子设备及介质。
背景技术
随着市场规模的扩大,原有的单体应用,已无法承载日益增长的用户访问量,因此需要对原有的单体应用进行高可用改造,通过技术方式实现项目的水平扩展,其中主要难点在于单体项目的进程级的缓存改如何处理。如果不将应用的多个进程的缓存同步的话,水平扩展后不同进程间的缓存不一致,会导致很严重的生产问题。因此,需要将各进程间的缓存同步,以达到水平扩展的各节点间的缓存一致性。目前市面上解决进程间缓存同步的方式普遍是将缓存从多个进程间独立出来,多个进程共用同一份缓存,但是该方式的改造成本较高、改造时间较长,需要改动很多代码来实现。
发明内容
有鉴于此,本申请的目的在于提供一种缓存数据同步方法、装置、电子设备及介质,能够低成本、低代码的改造单体应用,且实现改造后的应用的多个进程间缓存同步。
本申请实施例提供的一种缓存数据同步方法,所述方法包括:
启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具;
确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;
缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;
所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存。
在一些实施例中,所述的缓存数据同步方法中,所述确定缓存信息更新的缓存更新进程,包括:
通过每一进程中运行的缓存同步工具监听该进程的缓存,判断该进程的缓存信息是否更新;
若是,则确定该进程为缓存更新进程。
在一些实施例中,所述的缓存数据同步方法中,所述缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,包括:
所述缓存更新进程的缓存同步工具获取所述缓存更新进程的所述待同步信息;
将所述待同步信息转换为所述缓存同步指令。
在一些实施例中,所述的缓存数据同步方法中,所述确定出所述缓存更新进程所更新的待同步信息,包括:
确定出所述缓存更新进程所更新的缓存ID、缓存ID对应更新信息和更新类型;
基于所述缓存ID、缓存ID对应更新信息和更新类型确定待同步信息。
在一些实施例中,所述的缓存数据同步方法中,所述基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存,包括:
每个待同步进程的缓存同步工具基于接收到的缓存同步指令解析出待同步信息;
根据所述待同步信息中的缓存ID确定缓存中目标缓存条目;
根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息。
在一些实施例中,所述的缓存数据同步方法中,根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息,包括:
根据所述缓存ID对应的更新类型,确定目标缓存条目的目标更新方式;所述目标更新方式包括写入、删除和覆盖;
基于所述目标更新方式和缓存ID对应更新信息,更新所述目标缓存条目的信息。
在一些实施例中,所述的缓存数据同步方法中,在启动目标应用的多个进程之前,所述方法还包括:
响应针对目标应用的代码的修改指令,在目标应用的代码中***缓存同步工具,得到修改后的目标应用的代码;
基于修改后的目标应用的代码,启动目标应用的多个进程。
在一些实施例中,还提供一种进程间缓存同步的装置,所述装置包括:
启动模块,用于启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具;
确定模块,用于确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;
生成模块,用于通过缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;
同步模块,用于使所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存。
在一些实施例中,还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行所述的缓存数据同步方法的步骤。
在一些实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的缓存数据同步方法的步骤。
本申请提供一种缓存数据同步方法、装置、电子设备及介质,能够在启动目标应用的多个进程后,每一进程中运行一缓存同步工具;确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存;这样,通过进程中的缓存同步工具和消息队列,实现进程间缓存同步,既能实现进程间缓存同步,对目标应用也无需修改太多代码,改造成本较低、改造时间较短、且适应较多场景。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所述缓存数据同步方法的流程图;
图2示出了本申请实施例所述确定缓存信息更新的缓存更新进程的方法流程图;
图3示出了本申请实施例所述缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令的方法流程图;
图4示出了本申请实施例所述基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存的方法流程图;
图5示出了本申请实施例所述进程间缓存同步的装置的结构示意图;
图6示出了本申请实施例所述电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
随着市场规模的扩大,原有的单体应用,已无法承载日益增长的用户访问量,因此需要对原有的单体应用进行高可用改造,通过技术方式实现项目的水平扩展,其中主要难点在于单体项目的进程级的缓存改如何处理。如果不将应用的多个进程的缓存同步的话,水平扩展后不同进程间的缓存不一致,会导致很严重的生产问题。因此,需要将各进程间的缓存同步,以达到水平扩展的各节点间的缓存一致性。目前市面上解决进程间缓存同步的方式普遍是将缓存从多个进程间独立出来,多个进程共用同一份缓存,但是该方式的改造成本较高、改造时间较长,需要改动很多代码来实现。
基于此,本申请提供一种缓存数据同步方法、装置、电子设备及介质,能够在启动目标应用的多个进程后,每一进程中运行一缓存同步工具;确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存;这样,通过进程中的缓存同步工具和消息队列,实现进程间缓存同步,既能实现进程间缓存同步,对目标应用也无需修改太多代码,改造成本较低、改造时间较短、且适应较多场景。
请参照图1,图1示出了本申请实施例所述缓存数据同步方法的流程图;所述方法包括以下步骤S101-S104;
S101、启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具;
S102、确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;
S103、缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;
S104、所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存。
本申请所述的缓存数据同步方法,能够在启动目标应用的多个进程后,每一进程中运行一缓存同步工具;确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存;这样,通过进程中的缓存同步工具和消息队列,实现进程间缓存同步,既能实现进程间缓存同步,对目标应用也无需修改太多代码,改造成本较低、改造时间较短、且适应较多场景。
在本申请实施例中,所述缓存数据同步方法可以运行于终端设备或者是服务器;其中,终端设备可以为本地终端设备。
具体的,以应用于服务器为例,当缓存数据同步方法运行于服务器上时,缓存数据同步方法用于实现进程间缓存的同步。
在所述步骤S101中,启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具。
具体的,在启动目标应用的多个进程之前,所述方法还包括:
响应针对目标应用的代码的修改指令,在目标应用的代码中***缓存同步工具,得到修改后的目标应用的代码;
基于修改后的目标应用的代码,启动目标应用的多个进程。
本申请实施例中,缓存同步工具中包括监控代码、更新代码和交互代码,通过运行监控代码将缓存的变化进行监控;通过运行更新代码将变动的缓存进行更新;通过运行交互代码实现与消息队列的交互。
也就是说,无需大量修改目标应用的代码,而是在目标应用的代码中***缓存同步工具的代码,这样,每一进程中运行一缓存同步工具,通过所述缓存同步工具实现进程间缓存同步。
所谓启动多实例,就是将要改造的包含多个进程间缓存的单体应用,进行水平扩展,也就是目标应用同时启动多个进程,每个独立运行。例如在一个单体的用户管理***中,用户查询服务中存在进程级缓存,方便快速查询用户信息,但是当启动多个进程的时候,每个进程间缓存就会存在不一致的可能。这里,启动多个用户查询服务进程。
本申请实施例中,所描述的目标应用仅仅是示意性的,可以是一个服务节点、一个微服务,也可以是一个web单体的应用、普通单体应用,还可能是一个逻辑划分的模块等等。
在所述步骤S102中,确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息。
具体的,请参照图2,所述确定缓存信息更新的缓存更新进程,包括以下步骤S201-S202;
S201、通过每一进程中运行的缓存同步工具监听该进程的缓存,判断该进程的缓存信息是否更新;
S202、若是,则确定该进程为缓存更新进程。
也就是说,每个进程自己的进程间缓存的变化进行监控。在本申请实施例所述的用户管理***中,每个用户查询服务的进程,需要针对自己的进程级缓存进行监听,具体的,可使用观察者模式等设计模式来实现该监听。
所述确定出所述缓存更新进程所更新的待同步信息,包括:
确定出所述缓存更新进程所更新的缓存ID、缓存ID对应更新信息和更新类型;
基于所述缓存ID、缓存ID对应更新信息和更新类型确定待同步信息。
所述进程对应多条缓存条目,例如张三、李四、王五等等;所述缓存ID用于确定缓存条目。例如,确定对张三的缓存信息进行了修改,
所述缓存ID对应更新信息,即所述缓存ID对应的缓存条目的变化内容。例如,张三,年龄19;变更为:张三,年龄20。
所述更新类型,即更新方式,包括:增加、删除、修改;具体的说,为增加缓存信息、删除缓存信息、修改原有的信息。
在所述步骤S103中,缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程。
这里,在启动目标应用的多个进程,要建立多个进程和消息队列的订阅关系。所述消息队列可以部署在同一个服务器上,或者部署在另一个服务器上。
本申请实施例中,消息队列的种类不做限制,如ActiveMQ、RabbitMQ、Kafka、RocketMQ等消息队列都可以支持本申请实施例所述的方法,所述消息队列的作用就是本申请实施所述方法的核心同步器。在示例的用户管理***中,可以使用RabbitMQ作为核心同步器,因为RabbitMQ的响应时间较其他集中消息队列相对更快。
启动消息队列后,将之前启动的多个进程订阅到消息队列,示例性的,ActiveMQ可使用topic模式,RabbitMQ可以使用fanout模式,Kafka可以采用topic模式,RocketMQ可以使用topic模式。在示例的用户管理***中,可以将每个用户查询进程订阅到RabbitMQ的相同交换机的不同消息队列(,该交换机采用fanout模式来发送消息,这样每次发送到交换机的消息都会同时发送给该交换机下的所有消息队列。
在本申请实施例所述的方法中,所提及的几种常见的消息队列只是用来做示意,其他的消息队列也可以满足本方法的要求。
请参照图3,所述缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,包括以下步骤S301-S302;
S301、所述缓存更新进程的缓存同步工具获取所述缓存更新进程的所述待同步信息;
S302、将所述待同步信息转换为所述缓存同步指令。
这里,所述待同步信息包括缓存ID、缓存ID对应更新信息和更新类型;所述更新信息包括属性和属性值。
也就是说,所述缓存同步指令中携带缓存ID、缓存ID对应更新信息和更新类型等重要信息。
所述消息队列接收到缓存同步指令后,将所述缓存同步指令发送至各个订阅消息队列的进程,从而将所述缓存同步指令发送至每一待同步进程。
在所述步骤S104中,所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存。
具体的,请参照图4,所述基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存,包括以下步骤S401-S403;
S401、每个待同步进程的缓存同步工具基于接收到的缓存同步指令解析出待同步信息;
S402、根据所述待同步信息中的缓存ID确定缓存中目标缓存条目;
S403、根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息。
也就是说,待同步进行接收到消息队列发送来的缓存同步指令,解析该指令获取要更新的缓存ID、更新信息和更新类型等重要信息。在该示例用户管理***中,每个用户查询进程都订阅到了消息队列,收到消息队列发送来的缓存同步指令,从该指令中解析出要更新的用户信息对应的ID、更新信息等重要信息,例如解析出缓存ID为张三,更新类型为修改,更新信息为年龄18修改为年龄19。
所述进程根据缓存ID确定缓存中目标缓存条目后,根据缓存ID对应更新信息和更新类型,实现更新目标缓存条目的信息,各个进程达到缓存同步。在该示例的用户管理***中,每个用户查询服务根据从缓存同步指令中解析出的缓存变化内容,对自己的进程级缓存进行更新,以达到缓存同步的最终目标。
根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息,包括:
根据所述缓存ID对应的更新类型,确定目标缓存条目的目标更新方式;所述目标更新方式包括写入、删除和覆盖;
基于所述目标更新方式和缓存ID对应更新信息,更新所述目标缓存条目的信息。
区分增加、删除和修改的更新类型,进程级缓存数据同步时,针对不同的更新类型进行不同的更新处理:更新类型为增加时,所述更新方式为写入,具体的,将更新信息的KEY和VALUE写入到本进程的缓存中;更新类型为修改时,所述更新方式为覆盖,具体的,将更新信息的KEY和VALUE覆盖本进程缓存中已有的数据;更新类型为删除时,所述更新方式为删除,具体的,将本进程的缓存中已有的KEY删除。
现有技术中其他缓存同步的方式,大多需要将进程级的缓存进行剥离,涉及到查询逻辑的代码修改,存储逻辑的代码修改,缓存逻辑的代码修改,缓存中间件的调用逻辑代码添加等,代码改动较大。本方法只需要添加缓存同步工具的代码,具体的,缓存同步工具中包括监控代码,通过运行监控代码将缓存的变化进行监控;缓存同步工具中包括更新代码,通过运行更新代码将变动的缓存进行更新;缓存同步工具中包括交互代码,实现与消息队列的交互,代码改动较小。
现有技术中将进程级的缓存剥离出后,引入了新的缓存中间件,如Redis等,由原来的进程级缓存的查询,变为远程调用中间件进行查询,查询效率也会下降,本申请所述的方法保证每个进程调用自身缓存,保证了查询效率。
最后,本方法适应场景较多,如对软件license有要求的场景,缓存中间件只有屈指可数的几种,而消息队列较缓存中间件更为丰富。
基于同一发明构思,本申请实施例中还提供了与缓存数据同步方法对应的进程间缓存同步的装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述缓存数据同步方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
请参照图5,本申请实施例提供了一种进程间缓存同步的装置,所述装置包括:
启动模块501,用于启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具;
确定模块502,用于确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;
生成模块503,用于通过缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;
同步模块504,用于使所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存。
本申请提供一种进程间缓存同步的装置,能够在启动目标应用的多个进程后,每一进程中运行一缓存同步工具;确定缓存信息更新的缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存;这样,通过进程中的缓存同步工具和消息队列,实现进程间缓存同步,既能实现进程间缓存同步,对目标应用也无需修改太多代码,改造成本较低、改造时间较短、且适应较多场景。
在一些实施例中,所述的进程间缓存同步的装置,所述确定模块,在确定缓存信息更新的缓存更新进程时,具体用于:
通过每一进程中运行的缓存同步工具监听该进程的缓存,判断该进程的缓存信息是否更新;
若是,则确定该进程为缓存更新进程。
在一些实施例中,所述的进程间缓存同步的装置,所述生成模块,在通过所述缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令时,具体用于:
所述缓存更新进程的缓存同步工具获取所述缓存更新进程的所述待同步信息;
将所述待同步信息转换为所述缓存同步指令。
在一些实施例中,所述的进程间缓存同步的装置,所述确定模块,在确定出所述缓存更新进程所更新的待同步信息,具体用于:
确定出所述缓存更新进程所更新的缓存ID、缓存ID对应更新信息和更新类型;
基于所述缓存ID、缓存ID对应更新信息和更新类型确定待同步信息。
在一些实施例中,所述的进程间缓存同步的装置,所述同步模块,在基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存时,具体用于:
每个待同步进程的缓存同步工具基于接收到的缓存同步指令解析出待同步信息;
根据所述待同步信息中的缓存ID确定缓存中目标缓存条目;
根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息。
在一些实施例中,所述的进程间缓存同步的装置,所述同步模块,在根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息,具体用于:
根据所述缓存ID对应的更新类型,确定目标缓存条目的目标更新方式;所述目标更新方式包括写入、删除和覆盖;
基于所述目标更新方式和缓存ID对应更新信息,更新所述目标缓存条目的信息。
在一些实施例中,所述的进程间缓存同步的装置,还包括***模块,用于在启动目标应用的多个进程之前,响应针对目标应用的代码的修改指令,在目标应用的代码中***缓存同步工具,得到修改后的目标应用的代码;
基于修改后的目标应用的代码,启动目标应用的多个进程。
基于同一发明构思,本申请实施例中还提供了与缓存数据同步方法对应的电子设备,由于本申请实施例中的电子设备解决问题的原理与本申请实施例上述缓存数据同步方法相似,因此电子设备的实施可以参见方法的实施,重复之处不再赘述。
请参照图6,所述图6示出了本申请实施例所述电子设备的结构示意图;具体的,所述电子设备600,包括:处理器602、存储器601和总线,所述存储器601存储有所述处理器602可执行的机器可读指令,当电子设备600运行时,所述处理器602与所述存储器601之间通过总线通信,所述机器可读指令被所述处理器602执行时执行所述的缓存数据同步方法的步骤。
基于同一发明构思,本申请实施例中还提供了与缓存数据同步方法对应的电子设备,由于本申请实施例中的电子设备解决问题的原理与本申请实施例上述缓存数据同步方法相似,因此电子设备的实施可以参见方法的实施,重复之处不再赘述。
一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的缓存数据同步方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,平台服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种缓存数据同步方法,其特征在于,所述方法包括:
响应针对目标应用的代码的修改指令,在目标应用的代码中***缓存同步工具,得到修改后的目标应用的代码;
基于修改后的目标应用的代码,启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具;
通过每一进程中运行的缓存同步工具监听该进程的缓存,判断该进程的缓存信息是否更新;
若是,则确定该进程为缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;
缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;
所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存。
2.根据权利要求1所述的缓存数据同步方法,其特征在于,所述缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,包括:
所述缓存更新进程的缓存同步工具获取所述缓存更新进程的所述待同步信息;
将所述待同步信息转换为所述缓存同步指令。
3.根据权利要求1所述的缓存数据同步方法,其特征在于,所述确定出所述缓存更新进程所更新的待同步信息,包括:
确定出所述缓存更新进程所更新的缓存ID、缓存ID对应更新信息和更新类型;
基于所述缓存ID、缓存ID对应更新信息和更新类型确定待同步信息。
4.根据权利要求3所述的缓存数据同步方法,其特征在于,所述基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存,包括:
每个待同步进程的缓存同步工具基于接收到的缓存同步指令解析出待同步信息;
根据所述待同步信息中的缓存ID确定缓存中目标缓存条目;
根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息。
5.根据权利要求4所述的缓存数据同步方法,其特征在于,根据缓存ID对应更新信息和更新类型,更新目标缓存条目的信息,包括:
根据所述缓存ID对应的更新类型,确定目标缓存条目的目标更新方式;所述目标更新方式包括写入、删除和覆盖;
基于所述目标更新方式和缓存ID对应更新信息,更新所述目标缓存条目的信息。
6.一种进程间缓存同步的装置,其特征在于,所述装置包括:
启动模块,用于响应针对目标应用的代码的修改指令,在目标应用的代码中***缓存同步工具,得到修改后的目标应用的代码;基于修改后的目标应用的代码,启动目标应用的多个进程;其中,每一进程中运行一缓存同步工具;
确定模块,用于通过每一进程中运行的缓存同步工具监听该进程的缓存,判断该进程的缓存信息是否更新;若是,则确定该进程为缓存更新进程,并确定出所述缓存更新进程所更新的待同步信息;
生成模块,用于通过缓存更新进程的缓存同步工具生成一携带所述待同步信息的缓存同步指令,并将所述缓存同步指令发送至预先部署的消息队列,以使所述消息队列基于预先建立的订阅关系将所述缓存同步指令发送至每一待同步进程;
同步模块,用于使所述待同步进程接收所述缓存同步指令,并基于所述缓存同步指令中携带的待同步信息同步每一待同步进程的缓存。
7.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至5任意一项所述的缓存数据同步方法的步骤。
8.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至5任意一项所述的缓存数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310424213.6A CN116401317B (zh) | 2023-04-19 | 2023-04-19 | 一种缓存数据同步方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310424213.6A CN116401317B (zh) | 2023-04-19 | 2023-04-19 | 一种缓存数据同步方法、装置、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116401317A CN116401317A (zh) | 2023-07-07 |
CN116401317B true CN116401317B (zh) | 2023-11-17 |
Family
ID=87019709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310424213.6A Active CN116401317B (zh) | 2023-04-19 | 2023-04-19 | 一种缓存数据同步方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401317B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700962A (zh) * | 2014-11-26 | 2016-06-22 | 中兴通讯股份有限公司 | 数据更新处理方法及装置 |
CN106230978A (zh) * | 2016-08-31 | 2016-12-14 | 广州市乐商软件科技有限公司 | 分布式缓存同步方法、装置及*** |
CN108200219A (zh) * | 2018-03-13 | 2018-06-22 | 广东欧珀移动通信有限公司 | 数据同步方法、装置、服务器及存储介质 |
CN111400408A (zh) * | 2020-04-13 | 2020-07-10 | 上海东普信息科技有限公司 | 数据同步方法、装置、设备及存储介质 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、***及存储介质 |
CN111782419A (zh) * | 2020-06-23 | 2020-10-16 | 北京青云科技股份有限公司 | 一种缓存更新方法、装置、设备及存储介质 |
CN113031864A (zh) * | 2021-03-19 | 2021-06-25 | 上海众源网络有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113051091A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 一种进程级缓存数据同步方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6340977B1 (en) * | 1999-05-07 | 2002-01-22 | Philip Lui | System and method for dynamic assistance in software applications using behavior and host application models |
-
2023
- 2023-04-19 CN CN202310424213.6A patent/CN116401317B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700962A (zh) * | 2014-11-26 | 2016-06-22 | 中兴通讯股份有限公司 | 数据更新处理方法及装置 |
CN106230978A (zh) * | 2016-08-31 | 2016-12-14 | 广州市乐商软件科技有限公司 | 分布式缓存同步方法、装置及*** |
CN108200219A (zh) * | 2018-03-13 | 2018-06-22 | 广东欧珀移动通信有限公司 | 数据同步方法、装置、服务器及存储介质 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、***及存储介质 |
CN111400408A (zh) * | 2020-04-13 | 2020-07-10 | 上海东普信息科技有限公司 | 数据同步方法、装置、设备及存储介质 |
CN111782419A (zh) * | 2020-06-23 | 2020-10-16 | 北京青云科技股份有限公司 | 一种缓存更新方法、装置、设备及存储介质 |
CN113031864A (zh) * | 2021-03-19 | 2021-06-25 | 上海众源网络有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113051091A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 一种进程级缓存数据同步方法和装置 |
Non-Patent Citations (2)
Title |
---|
A fast and resource-conscious MPI message queue mechanism for large-scale jobs;Judicael A. Zounmevo et al.;《Future Generation Computer Systems》;265-290 * |
基于RapidIO总线的进程间通信***的研究与实现;潘灵;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》;C031-36 * |
Also Published As
Publication number | Publication date |
---|---|
CN116401317A (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2948875B1 (en) | Method and system for using a recursive event listener on a node in hierarchical data structure | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
CN113051110A (zh) | 集群切换方法、装置及设备 | |
CN107040576A (zh) | 信息推送方法及装置、通讯*** | |
CN113885780A (zh) | 数据同步方法、装置、电子设备、***和存储介质 | |
US10938633B2 (en) | Facilitating resilient and fault tolerant asynchronous messaging | |
CN114500416B (zh) | 用于最多一次消息投递的投递方法和投递*** | |
CN115934414A (zh) | 数据备份方法、数据恢复方法、装置、设备及存储介质 | |
CN114741335A (zh) | 缓存管理方法、装置、介质及设备 | |
CN116401317B (zh) | 一种缓存数据同步方法、装置、电子设备及介质 | |
CN112363815A (zh) | Redis集群处理方法、装置、电子设备及计算机可读存储介质 | |
CN113783913A (zh) | 一种消息推送管理方法和装置 | |
CN112000850A (zh) | 进行数据处理的方法、装置、***及设备 | |
CN109165259B (zh) | 基于网络附属存储的索引表更新方法、处理器及存储装置 | |
CN115189931A (zh) | 一种分布式密钥管理方法、装置、设备、存储介质 | |
CN113377777B (zh) | 数据加载方法、设备、计算机程序产品及存储介质 | |
US11386043B2 (en) | Method, device, and computer program product for managing snapshot in application environment | |
CN110661857B (zh) | 一种数据同步方法和装置 | |
CN114945026A (zh) | 数据处理方法、装置和*** | |
CN113742376A (zh) | 一种同步数据的方法、第一服务器以及同步数据的*** | |
CN112732728A (zh) | 一种数据同步方法和*** | |
CN108984431B (zh) | 用于清空过期缓存的方法和装置 | |
CN111459981A (zh) | 查询任务的处理方法、装置、服务器及*** | |
CN113364864B (zh) | 一种服务器数据同步方法、***及存储介质 | |
CN113297002B (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 |