CN112882658B - 数据缓存的扩容方法、装置、计算机设备和存储介质 - Google Patents
数据缓存的扩容方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112882658B CN112882658B CN202110184571.5A CN202110184571A CN112882658B CN 112882658 B CN112882658 B CN 112882658B CN 202110184571 A CN202110184571 A CN 202110184571A CN 112882658 B CN112882658 B CN 112882658B
- Authority
- CN
- China
- Prior art keywords
- data
- service
- caching device
- control information
- data caching
- 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
Images
Classifications
-
- 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/0656—Data buffering arrangements
-
- 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/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/23—Updating
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据缓存的扩容方法、装置、计算机设备和存储介质。所述方法包括:获取第一数据缓存设备中缓存的第一业务数据的索引值,第一数据缓存设备用于缓存目标业务的第一业务数据;根据索引值从第一数据缓存设备读取第一业务数据;将第一业务数据写入第二数据缓存设备,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量;当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。上述方法能够避免数据缓存扩容时业务数据的丢失。
Description
技术领域
本申请涉及数据缓存技术领域,特别是涉及一种数据缓存的扩容方法、装置、计算机设备和存储介质。
背景技术
目前,大多数系统框架都采用数据缓存设备进行业务数据缓存,以实现高速的数据读写能力。但随着系统的业务数据访问量增多,业务量增大,系统框架的业务数据缓存量也会增多,因此数据缓存的扩容势在必行。如,目前redis(Remote Dictionary Server,即远程字典服务)的应用场景极为广泛,大多数系统架构都采用redis集群来缓存数据以达到较高的数据读写能力。但随着系统访问量增加,业务量剧增,缓存业务数据存储量逐渐加大,redis服务器的内存、CPU、命令数都有可能达到瓶颈,在原有服务器基础上增加redis服务器数量进行扩容便势在必行。
对于数据缓存设备的扩容,一般采用在原有的数据缓存设备上增加设备节点,通过增加设备的方式提高原有数据缓存设备的数据缓存容量。这种方式,需要对原有数据缓存设备的业务数据存储的节点映射关系进行重新计算,重新计算将会导致部分缓存业务数据丢失,或者导致部分已缓存的业务数据无法读取,从而造成业务影响。如,redis集群的扩容,当集群节点数量增减时,会导致rediskey(键值对中的键,用作数据检索)的节点映射关系需要重新计算,或导致部分缓存业务数据丢失、部分已存储的rediskey无法命中,造成业务影响,急需对全量缓存数据进行迁移或初始化。
发明内容
基于此,有必要针对上述技术问题,提供一种能够避免数据缓存扩容时业务数据丢失的数据缓存的扩容方法、装置、计算机设备和存储介质。
一种数据缓存的扩容方法,该方法包括:获取第一数据缓存设备中缓存的第一业务数据的索引值,第一数据缓存设备用于缓存目标业务的第一业务数据;根据索引值从第一数据缓存设备读取第一业务数据;将第一业务数据写入第二数据缓存设备,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量;当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。
在其中一个实施例中,一种数据缓存的扩容方法还包括:若根据索引值从第一数据缓存设备未读取到第一业务数据,则根据索引值从持久化存储设备中读取第一业务数据。
优选地,将第一业务数据写入第二数据缓存设备之后,还包括:获取目标业务的业务数据调用信息,基于业务数据调用信息调用第二数据缓存设备中的第一业务数据;若调用到第一业务数据,则标注第二数据缓存设备的数据验证成功,若未调用到第一业务数据,则标注第二数据缓存设备的数据验证失败;若第二数据缓存设备的数据验证成功,则执行根据索引值从第二数据缓存设备中调用第一业务数据的步骤;若第二数据缓存设备的数据验证失败,则当接收到目标业务的数据指令时,根据索引值从第一数据缓存设备中调用第一业务数据。
在其中一个实施例中,第一业务数据为第一数据缓存设备中的全量数据,一种数据缓存的扩容方法还包括:接收目标业务的第二业务数据,第二业务数据为第一数据缓存设备的增量数据;将第二业务数据分别写入第一数据缓存设备和第二数据缓存设备。
在其中一个实施例中,一种数据缓存的扩容方法还包括:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据读写,第二客户端用于控制第二数据缓存设备的数据读写;生成第一数据操作方法,第一数据操作方法用于指示获取第一数据缓存设备中缓存的第一业务数据的索引值,并根据索引值通过第一客户端从第一数据缓存设备读取第一业务数据,并通过第二客户端将第一业务数据写入第二数据缓存设备;将第一数据操作方法和第一客户端、第二客户端进行封装,封装后得到第一类,设置第一类的第一接口;当接收到目标业务的数据缓存扩容指令时,调用第一接口,通过第一接口调用第一类中的第一数据操作方法,以执行获取第一数据缓存设备中缓存的第一业务数据的索引值,根据索引值从第一数据缓存设备读取第一业务数据,将第一业务数据写入第二数据缓存设备的步骤。
在其中一个实施例中,一种数据缓存的扩容方法还包括:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据操作,第二客户端用于控制第二数据缓存设备的数据操作;生成第二数据操作方法,第二数据操作方法用于指示对第一数据缓存设备执行数据操作和/或指示对第二数据缓存设备执行数据操作;将第二数据操作方法和第一客户端、第二客户端进行封装,封装后得到第二类,设置第二类的第二接口;当接收到目标业务的数据操作指令时,调用第二接口,通过第二接口调用第二类中的第二数据操作方法,根据数据操作指令实现第二数据操作方法,以对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作。
在其中一个实施例中,一种数据缓存的扩容方法还包括:创建数据操作的控制开关,控制开关用于控制对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作,数据操作包括读取操作和修改操作;生成控制开关的控制信息,控制信息包括读取控制信息和修改控制信息,读取控制信息用于指示控制开关对第一数据缓存设备的数据的读取操作进行控制或对第二数据缓存设备的数据的读取操作进行控制,修改控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制和/或对第二数据缓存设备的数据的修改操作进行控制;当接收到读取控制信息的调用指示时,若根据读取控制信息识别到第一数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的读取操作进行控制,若根据读取控制信息识别到第二数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的读取操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制。
在其中一个实施例中,修改控制信息包括第一子控制信息和第二子控制信息,第一子控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制,第二子控制信息用于指示控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制,包括:当接收到第一子控制信息时,根据第一子控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制;当接收到第二子控制信息时,根据第二子控制信息启动控制开关,通过控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制。
一种数据缓存的扩容装置,该装置包括:获取模块,用于获取第一数据缓存设备中缓存的第一业务数据的索引值,第一数据缓存设备用于缓存目标业务的第一业务数据;读取模块,用于根据索引值从第一数据缓存设备读取第一业务数据;写入模块,用于将第一业务数据写入第二数据缓存设备,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量;操作模块,用于当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
上述数据缓存的扩容方法、装置、计算机设备和存储介质,业务系统根据第一数据缓存设备中缓存的第一业务数据的索引值从第一数据缓存设备中读取第一业务数据,并将第一业务数据写入第二数据缓存设备。其中,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量。当业务系统接收到目标业务的数据指令时,根据索引值从第二数据缓存设备中调用第一业务数据。或,将目标业务的增量业务数据缓存到第二数据缓存设备。因此,实现了将目标业务的第一业务数据从第一数据缓存设备转移到数据缓存容量更大的第二数据缓存设备中,并通过第二数据缓存设备实现目标业务的第一业务数据的读取以及通过第二数据缓存设备实现目标业务的增量业务数据的缓存,从而完成了目标业务的业务数据的数据缓存的扩容。此外,通过索引值从第一数据缓存设备读取第一业务数据并将第一业务数据写入第二数据缓存设备,后续同时根据索引值从第二数据缓存设备中读取第一业务数据,从而避免了在扩容过程中无法使用索引值读取第一业务数据的情况而造成的第一业务数据的丢失。
附图说明
图1为一个实施例中一种数据缓存的扩容方法的应用环境图;
图2为一个实施例中一种数据缓存的扩容方法的流程示意图;
图3为一个实施例中一种数据缓存的扩容方法的第一类和第二类的方法实现示意图;
图4为一个具体实施例中一种数据缓存的扩容方法的操作流程示意图;
图5为一个实施例中一种数据缓存的扩容装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种数据缓存的扩容方法,可以应用于如图1所示的应用环境中。如图1所示,业务系统102用于执行本申请的一种数据缓存的扩容方法。第一数据缓存设备104用于缓存目标业务的第一业务数据。第二数据缓存设备106用作本申请中目标业务的数据缓存的扩容设备。其中,第二数据缓存设备106的数据缓存容量大于第一数据缓存设备104的数据缓存容量。具体地,业务系统102获取第一数据缓存设备104中缓存的第一业务数据的索引值,根据索引值从第一数据缓存设备104读取第一业务数据。同时,将第一业务数据写入第二数据缓存设备106。当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备106中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备106。其中,如图1所示,目标业务的增量业务数据可以来源于业务数据平台202。目标业务的数据指令也可以来自业务数据平台202。第一数据缓存设备104和第二数据缓存设备106均可以是由一个或多个数据缓存服务器组成。业务系统102可以是由一个或多个服务器构成。
在一个实施例中,如图2所示,提供了一种数据缓存的扩容方法,以该方法应用于图1中的业务系统102为例进行说明,包括以下步骤:
S102,获取第一数据缓存设备中缓存的第一业务数据的索引值,第一数据缓存设备用于缓存目标业务的第一业务数据。
在本实施例中,第一数据缓存设备用于缓存目标业务的第一业务数据。第一数据缓存设备可以是内存数据库集群,如redis数据库集群。第一业务数据可以是目标业务的全量数据。第一数据缓存设备缓存第一业务数据时,设置有对应的索引值,通过索引值可以从第一数据缓存设备中读取第一业务数据。其中,索引值可以记录在索引表中,索引表存储在持久化存储设备中。持久化存储设备可以是非缓存的数据库。业务系统从持久化存储设备中读取目标业务的索引表,从索引表中确定出目标业务的第一业务数据的索引值。
S104,根据索引值从第一数据缓存设备读取第一业务数据。
在本实施例中,业务系统获取到索引值之后,根据索引值从第一数据缓存设备读取第一业务数据。需要说明的是,业务系统接收到目标业务的第一业务数据时,将第一业务数据缓存在第一数据缓存设备中,以提高第一业务数据的读取的效率。同时也将第一业务数据持久化存储到持久化存储设备中,以使得第一业务数据能够持久化存储,避免第一业务数据的丢失。
传统第一业务数据的获取方式为:根据索引值从持久化存储设备中读取第一业务数据。由于持久化存储设备中的数据查询耗时长,传统第一业务数据的获取方式将导致第一业务数据的读取效率低。而本申请中,业务系统根据索引值从第一数据缓存设备读取第一业务数据,可以减少第一业务数据的数据查询时间,提高第一业务数据的读取效率。
S106,将第一业务数据写入第二数据缓存设备,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量。
在本实施例中,第二数据缓存设备用于作为目标业务的数据缓存的扩容设备。第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量。第二数据缓存设备也可以是内存数据库集群,如redis数据库集群。其中,写入第二数据缓存设备的第一业务数据与索引值关联,通过索引值能够从第二数据缓存设备中读取第一业务数据。例如,业务执行全量缓存数据初始化任务,从第一数据缓存设备这一老集群中读取,并插入第二数据缓存设备这一新集群中。
S108,当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。
在本实施例中,业务系统接收到目标业务的数据指令时,解析以得到数据指令中的指示信息。根据指示信息确定数据指令用于指示调用第一业务数据时,根据索引值从第二数据缓存设备中调用第一业务数据。其中,调用第一业务数据包括读取第一业务数据和/或修改第一业务数据。根据指示信息确定数据指令用于指示缓存增量数据时,获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。其中,目标业务的增量业务数据可以从业务数据平台获得,也可以由业务系统生成。因此,通过第二数据缓存设备对目标业务的第一业务数据的调用以及对目标业务的增量业务数据的缓存,实现了由第一数据缓存设备对目标业务的业务数据的缓存管理转换到由第二数据缓存设备对目标业务的业务数据的缓存管理,使得业务系统完成了目标业务的业务数据的数据缓存的扩容。
上述数据缓存的扩容方法,业务系统根据第一数据缓存设备中缓存的第一业务数据的索引值从第一数据缓存设备中读取第一业务数据,并将第一业务数据写入第二数据缓存设备。其中,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量。当业务系统接收到目标业务的数据指令时,根据索引值从第二数据缓存设备中调用第一业务数据。或,将目标业务的增量业务数据缓存到第二数据缓存设备。因此,实现了将目标业务的第一业务数据从第一数据缓存设备转移到数据缓存容量更大的第二数据缓存设备中,并通过第二数据缓存设备实现目标业务的第一业务数据的读取以及通过第二数据缓存设备实现目标业务的增量业务数据的缓存,从而完成了目标业务的业务数据的数据缓存的扩容。此外,通过索引值从第一数据缓存设备读取第一业务数据并将第一业务数据写入第二数据缓存设备,后续同时根据索引值从第二数据缓存设备中读取第一业务数据,从而避免了在扩容过程中无法使用索引值读取第一业务数据的情况而造成从而避免了在扩容过程中无法使用索引值读取第一业务数据的情况而造成的第一业务数据的丢失。
在一个实施例中,S102之后,还包括:若根据索引值从第一数据缓存设备未读取到第一业务数据,则根据索引值从持久化存储设备中读取第一业务数据。
在该实施例中,第一业务数据为一个或多个。当业务系统从第一数据缓存设备未读取到第一业务数据时,再从根据索引值从持久化存储设备中读取第一业务数据。因此,可扩展第一业务数据的获取方式,保证业务系统能够获取到目标业务的第一业务数据。
在一实施例中,S106之后,还包括:获取目标业务的业务数据调用信息,基于业务数据调用信息调用第二数据缓存设备中的第一业务数据;若调用到第一业务数据,则标注第二数据缓存设备的数据验证成功,若未调用到第一业务数据,则标注第二数据缓存设备的数据验证失败;若第二数据缓存设备的数据验证成功,则执行根据索引值从第二数据缓存设备中调用第一业务数据的步骤;若第二数据缓存设备的数据验证失败,则当接收到目标业务的数据指令时,根据索引值从第一数据缓存设备中调用第一业务数据。
在该实施例中,业务系统基于目标业务的业务数据调用信息对第二数据缓存设备中的第一业务数据进行业务的调用验证。当验证成功时,业务系统根据索引值从第二数据缓存设备读取目标业务的第一业务数据。反之,根据索引值从第一数据缓存设备读取目标业务的第一业务数据。其中,业务数据调用信息用于指示调用指定业务的业务数据。基于业务数据调用信息调用第二数据缓存设备中的第一业务数据,包括:在指定的时间段内基于业务数据调用信息调用第二数据缓存设备中的第一业务数据。具体地,指定的时间段为业务系统设置的目标业务的灰度时间段。若灰度一段时间后验证通过,则说明第二数据缓存设备缓存的第一业务数据能够正常调用,业务系统从第二数据缓存设备中调用第一业务数据。进一步地,若第二数据缓存设备的数据验证成功,业务系统还可设置第一数据缓存设备为关闭状态。因此,实现了业务系统中目标业务的业务数据的数据缓存的扩容。
在一实施例中,第一业务数据为第一数据缓存设备中的全量数据。根据索引值从第一数据缓存设备读取第一业务数据的同时或之后,还包括:接收目标业务的第二业务数据,第二业务数据为第一数据缓存设备的增量数据;将第二业务数据分别写入第一数据缓存设备和第二数据缓存设备。
在该实施例中,第一业务数据为第一数据缓存设备中的全量数据。业务系统将第一数据缓存设备中目标业务的全量数据缓存到第二数据缓存设备。在执行将第一数据缓存设备中目标业务的全量数据缓存到第二数据缓存设备过程中,或者将第一数据缓存设备中目标业务的全量数据缓存到第二数据缓存设备之后,业务系统接收目标业务的增量数据,并将增量数据同时写入第一数据缓存设备和第二数据缓存设备。因此,能够避免在第一业务数据的缓存转移过程中或之后,业务系统接收到目标业务的增量数据时无法及时缓存进第二数据缓存设备中而造成的目标业务的增量数据的丢失。
进一步地,将第二业务数据分别写入第一数据缓存设备和第二数据缓存设备之后,还包括:基于第一数据缓存设备设置中目标业务的第一业务数据和第二业务数据对第二数据缓存设备目标业务的第一业务数据和第二业务数据进行数据完整性验证。
具体地,采用第一数据缓存设备设置中目标业务的第一业务数据对第二数据缓存设备目标业务的第一业务数据进行匹配。当匹配成功时,标注第二数据缓存设备目标业务的第一业务数据的数据完整性验证通过。反之,第二数据缓存设备目标业务的第一业务数据的数据完整性验证不通过。采用第一数据缓存设备设置中目标业务的第二业务数据对第二数据缓存设备目标业务的第二业务数据进行匹配。当匹配成功时,标注第二数据缓存设备目标业务的第二业务数据的数据完整性验证通过。反之,第二数据缓存设备目标业务的第二业务数据的数据完整性验证不通过。因此,实现了对第二数据缓存设备目标业务的第一业务数据和第二业务数据的数据完整性验证。因此,将第二业务数据分别写入第一数据缓存设备可为后续第二数据缓存设备中目标业务的增量数据的验证提供数据基础。
例如,传统方式中,目标业务存在增量数据下发的时候,如果当时验证没问题,业务系统会将集群切换到新集群,也即是第二数据缓存设备。增量数据接收后增量数据会落入新集群,但是后续第二数据缓存设备的增量数据验证有问题需要回滚时,业务系统切回到老集群,也即是第一数据缓存设备。此时这部分增量数据只在新集群中,老集群没有,将导致增量数据的丢失。该实施例中,将增量数据同时存入第一数据缓存设备和第二数据缓存设备,可以避免增量数据的丢失。
在一实施例中,S102之前,还包括:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据读写,第二客户端用于控制第二数据缓存设备的数据读写;生成第一数据操作方法,第一数据操作方法用于指示获取第一数据缓存设备中缓存的第一业务数据的索引值,并根据索引值通过第一客户端从第一数据缓存设备读取第一业务数据,并通过第二客户端将第一业务数据写入第二数据缓存设备;将第一数据操作方法和第一客户端、第二客户端进行封装,封装后得到第一类,设置第一类的第一接口;当接收到目标业务的数据缓存扩容指令时,调用第一接口,通过第一接口调用第一类中的第一数据操作方法,以执行获取第一数据缓存设备中缓存的第一业务数据的索引值,根据索引值从第一数据缓存设备读取第一业务数据,将第一业务数据写入第二数据缓存设备的步骤。
在该实施例中,生成第一数据操作方法,以实现获取第一数据缓存设备中缓存的第一业务数据的索引值,根据索引值从第一数据缓存设备读取第一业务数据,将第一业务数据写入第二数据缓存设备。具体通过第一数据操作方法调用第一客户端的方式,获取第一数据缓存设备的第一业务数据。通过第一数据操作方法调用第二客户端的方式,将第一业务数据写入第二数据缓存设备。
例如,参见图3所示。安装部署redis集群A和redis集群B。其中,redis集群A为旧集群,也即是第一数据缓存设备。redis集群B为待初始化全量缓存数据的新集群,也即是第二数据缓存设备。redisClientA为客户端A,用于控制和操作redis集群A。redisClientB为客户端B,用于控制和操作redis集群B。提供FullRedisClientInterface操作类,也即第一类。FullRedisClientInterface操作类用于实现系统中的全量缓存数据的初始化操作。FullRedisClientInterface操作类用于实现将redis集群A中目标业务的第一业务数据这一全量数据缓存到redis集群B中。具体地,可以将redisClientA以及redisClientB封装到FullRedisClientInterface操作类中,对外部不可见。FullRedisClientInterface操作类提供3个方法,如图3所示,包括getKey()方法、getValue()方法、init()方法。getKey()方法:抽象方法,由业务系统完善其业务逻辑,提供初始化缓存所需要的redis key。业务系统实现该方法时,查询数据库组装redis key。getValue()方法:抽象方法,由业务系统完善其业务逻辑,业务系统实现该方法时通过redis key从redis集群A获取第一业务数据。当通过redis key从redis集群A查询不到缓存的第一业务数据时,从数据库查询并组装第一业务数据redis value。init()方法:用于初始化缓存的全量数据。具体地,调用getKey()方法获取redis key后查询redisClientA客户端,以从redis集群A获取第一业务数据,即value数据。如redis集群A的缓存中不存在则调用getValue()方法从数据库获取第一业务数据,即value数据。最后组装key-value写入到redisClientB客户端中,通过redisClientB客户端写入redis集群B。整个过程,业务系统无需关注此方法的实现。因此,通过提供封装类,业务系统的开发者只需关注业务系统自身逻辑,无需关注集群底层切换以及缓存的全量数据的初始化逻辑即可进行功能开发。对业务系统的开发者而言,不需要感知双集群,全量数据的移植代价小,方案实施后可重复利用。
在一实施例中,S106之后,还包括:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据操作,第二客户端用于控制第二数据缓存设备的数据操作;
生成第二数据操作方法,第二数据操作方法用于指示对第一数据缓存设备执行数据操作和/或指示对第二数据缓存设备执行数据操作;将第二数据操作方法和第一客户端、第二客户端进行封装,封装后得到第二类,设置第二类的第二接口;当接收到目标业务的数据操作指令时,调用第二接口,通过第二接口调用第二类中的第二数据操作方法,根据数据操作指令实现第二数据操作方法,以对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作。
在该实施例中,对第一数据缓存设备执行数据操作包括对第一数据缓存设备进行数据的增加、删除和/或修改,还包括对第一业务数据的数据读写。如,对第一数据缓存设备中的第一业务数据进行删除或者修改,或者在第一数据缓存设备中写入目标业务的第一业务数据。对第二数据缓存设备执行数据操作包括对第二数据缓存设备进行数据的增加、删除和/或修改,还包括对第一业务数据的数据读写。如,对第二数据缓存设备中的第一业务数据进行删除或者修改,或者在第二数据缓存设备中写入目标业务的第一业务数据。生成第二数据操作方法,以实现对第一数据缓存设备执行数据操作和/或指示对第二数据缓存设备执行数据操作。具体通过控制第一客户端对第一数据缓存设备执行数据操作,通过控制第二客户端对第二数据缓存设备执行数据操作。需要强调的是,本实施例中的方法可以在执行S102-S108之前、之后或者执行过程中实现。也即是封装得到第二类以及实现第二类中方法的过程,可以在S102-S108之前、之后或者执行过程中实现。
例如,参见图3所示。安装部署redis集群A和redis集群B。其中,redis集群A为旧集群,也即是第一数据缓存设备。redis集群B为待初始化全量缓存数据的新集群,也即是第二数据缓存设备。redisClientA为客户端A,用于控制和操作redis集群A。redisClientB为客户端B,用于控制和操作redis集群B。提供RedisClientUtils操作类,也即是第二类。将redisClientA、redisClientB封装到RedisClientUtils操作类中,对外部不可见。在RedisClientUtils操作类中重写常用的缓存中增删改查方法,用于业务系统的调用。如目标业务的业务数据的读取方法、增删改方法等。目标业务的业务数据包括第一业务数据。因此,通过提供封装类,业务系统的开发者只需关注业务系统自身逻辑,无需关注集群底层切换以及缓存的全量数据的初始化逻辑即可进行功能开发。对业务系统的开发者而言,不需要感知双集群,全量数据的移植代价小,方案实施后可重复利用。
在一实施例中,根据数据操作指令实现第二数据操作方法,以对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作之前,还包括:创建数据操作的控制开关,控制开关用于控制对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作,数据操作包括读取操作和修改操作;生成控制开关的控制信息,控制信息包括读取控制信息和修改控制信息,读取控制信息用于指示控制开关对第一数据缓存设备的数据的读取操作进行控制或对第二数据缓存设备的数据的读取操作进行控制,修改控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制和/或对第二数据缓存设备的数据的修改操作进行控制;当接收到读取控制信息的调用指示时,若根据读取控制信息识别到第一数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的读取操作进行控制,若根据读取控制信息识别到第二数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的读取操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制。
在该实施例中,数据操作包括读取操作和修改操作。修改操作包括删除操作、增加操作以及对原有数据的更改操作。第二数据操作方法用于指示对第一数据缓存设备执行数据操作和/或指示对第二数据缓存设备执行数据操作,包含多种可能的操作情况:对第一数据缓存设备执行读取操作、对第一数据缓存设备执行修改操作、对第二数据缓存设备执行读取操作、对第二数据缓存设备执行修改操作、对第一数据缓存设备以及第二数据缓存设备执行修改操作等。此时,创建数据操作的控制开关,控制开关用于控制对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作。同时设置控制开关的控制信息,通过控制信息对控制开关进行控制,以实现根据对应的指令实现对应的数据操作。因此,为实现业务系统对数据缓存扩容的前后两个数据缓存设备的多种数据操作方式提供技术基础。
在一实施例中,修改控制信息包括第一子控制信息和第二子控制信息,第一子控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制,第二子控制信息用于指示控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制,包括:当接收到第一子控制信息时,根据第一子控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制;当接收到第二子控制信息时,根据第二子控制信息启动控制开关,通过控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制。
例如,参见图3所示。RedisClientUtils操作类中将常用方法分为两类:读取方法和增删改方法。控制开关包括查询开关redis.switch以及写入开关incr.write.switch。其中,RedisClientUtils操作类中每个读取方法都通过缓存的查询开关redis.switch控制从哪个集群查询数据,增删改方法通过写入开关incr.write.switch控制增删改指向哪个集群。这里的集群指的是redis集群A和redis集群B。对于查询开关redis.switch和写入开关incr.write.switch,可按照以下设置:
redis.switch=1时,表示只从redisClientA控制的redis集群A读取数据,初始时开关值为1。
redis.switch=2时,表示只从redisClientB控制的redis集群B读取数据。
incr.write.switch=1时,表示只向redisClientA控制的redis集群A增删改数据,初始时开关值为1。
incr.write.switch=2时,表示同时向redisClientA控制的redis集群A、redisClientB控制的redis集群B执行增删改数据,实现双写。当其中一个操作失败时回滚缓存数据并返回异常。
incr.write.switch=3时,表示只向redisClientB控制的redis集群B更新数据。
因此,通过控制开关实现对第一数据缓存设备以及第二数据缓存设备的数据操作进行控制,有利于业务系统对目标业务的数据缓存的扩容的前后两个数据缓存设备进行管理,以便于更好地实现对目标业务的数据缓存的扩容。例如,对控制开关的切换,实现对第一数据缓存设备的数据的读写以及修改操作,以及对第二数据缓存设备的数据的读写以及修改操作,从而便于在执行数据缓存的扩容期间更好地管理目标业务的业务数据,目标业务的业务数据包括本申请中的第一业务数据和第二业务数据。由此,在实现目标业务的数据缓存的扩容时,能够提高目标业务的业务数据的缓存精确度,避免业务数据的丢失。
在一实施例中,当业务系统中同时封装得到第一类和第二类时,对第一类和第二类进行统一封装,得到用于管理第一数据缓存设备和第二数据缓存设备的shardedJedis类。其中,shardedJedis类向业务系统提供统一接口,通过该统一接口可以实现对第一类和第二类的调用。
例如,封装shardedJedis类,在shardedJedis类中重写业务系统常用的增删改查方法,封装得到jar包。业务系统的开发者实现shardedJedis类中FullRedisClientInterface类的getKey()方法和getValue()方法即可实现将第一数据缓存设备的第一业务数据缓存到第二数据缓存设备中,即将redis集群A中的全量数据缓存到redis集群B中。新旧集群对于开发者无感,通过配置控制开关的控制信息,即可控制业务系统的目标业务的业务数据从哪个集群读取以及往哪个集群写入,完成全量数据的缓存的初始化,进而实现全量缓存扩容。名词释义如下:
Jedis:redis是内存数据库,是一个key-value存储系统,常被用作缓存。Jedis是java语言的redis客户端。
shardedJedis:通过一致性哈希来实现分布式缓存,通过一定的策略把不同的key分配到不同的redis服务器上,达到横向扩展的目的。
参见图3所示,安装部署redis集群A、redis集群B两个集群,其中redis集群A为旧集群,redisB集群为待初始化全量缓存数据的新集群。
步骤一:识别redisClientA客户端、redisClientB客户端,两个客户端分别用于操作不同的缓存集群。其中,redisClient A操作redis集群A,redisClientB操作redis集群B。如图3所示,master指的是对应集群中的主服务器,slave指的是对应集群中主服务器控制的从服务器。master new指的是新集群中的主服务器,新集群即redis集群B。图3中其他的英文表达为软件代码领域中常用的代码,在软件代码领域有明确的意义,此处不再一一详述。
步骤二:提供RedisClientUtils操作类,将客户端redisClientA、客户端redisClientB封装到RedisClientUtils操作类中,对外部不可见。重写常用缓存增删改查方法,用于业务系统调用,并且改造的方法、方法所需的参数、返回均和shardedJedis类提供的API(接口)保持一致。将常用方法分为两类:读取方法和增删改方法。每个读取方法都通过缓存的查询开关redis.switch控制从哪个集群查询数据,增删改方法通过增量缓存的写入开关incr.write.switch控制增删改指向哪个集群。
redis.switch=1时,表示只从redisClientA控制的redis集群A读取数据,初始时开关值为1。
redis.switch=2时,表示只从redisClientB控制的redis集群B读取数据。
incr.write.switch=1时,表示只向redisClientA控制的redis集群A增删改数据,初始时开关值为1。
incr.write.switch=2时,表示同时向redisClientA、redisClientB控制的集群增删改数据,实现双写,当其中一个操作失败回滚缓存数据并返回异常。此处的操作同操作单个缓存异常一样,由业务系统进行补偿。
incr.write.switch=3时,表示只向redisClientB控制的redis集群B更新数据。
步骤三:提供FullRedisClientInterface操作类,该类仅用于全量数据的缓存的初始化。将客户端redisClientA和客户端redisClientB封装到FullRedisClientInterface操作类中,对外部不可见。提供3个方法,getKey()方法、getValue()方法、init()方法。
getKey():抽象方法,由业务系统完善业务逻辑,提供初始化缓存所需要的rediskey。业务系统需要实现该方法,如查询数据库组装redis key。
getValue():抽象方法,由业务系统完善业务逻辑,业务系统需要实现该方法。当通过redis key从旧集群查询不到缓存时,需要从数据库查询组装redis value。
init():用于初始化全量数据的缓存。调用getKey()获取redis key后查询redisClientA旧集群获取value数据,如缓存中不存在则调用getValue()从数据库获取redis value,最后组装key-value写入到redisClientB中,业务系统无需关注此方法实现。
步骤四:实施初始化数据操作。切换开关,目标业务的增量数据同时缓存写入两个集群,实现双写。
步骤五:执行全量数据的缓存的初始化任务,从旧集群中读取全量数据,并插入新集群中。
步骤六:切换查询缓存开关,从旧集群读取业务数据切换为从新集群读取数据。切换完成后进行全量业务验证。
步骤七:若验证失败,则回切查询缓存开关。若验证通过,灰度一段时间后无问题,则切换增量数据的缓存写入开关,关闭双写,增量数据只写入新集群。
步骤八:旧集群下线,新集群配置覆盖旧集群配置,此时redisClientA即为redisClientB,上述两个开关回归初始状态。
通过该实施例的一种数据缓存的扩容方法,无需借助熟悉redis运维的专业人员,只需要熟悉业务系统的人员即可实现数据缓存的扩容。任一个开发都可以执行开关切换和执行初始化任务,实现缓存数据的初始化,并且切换过程中保证增量数据不丢失,对外部无感,发生风险可快速回滚。避免因繁琐的底层操作导致数据丢失,避免机器宕机影响系统稳定性。
1)方案可移植,业务系统对双集群无感知,移植代价小。
2)通过简单开关控制新旧集群切换过程,无需其他操作,对业务无影响。
3)初始化数据过程,利用旧集群数据,加快数据初始化速度。
4)灰度期由业务系统控制,灰度过程中发现业务影响需要回滚时,通过回滚开关即可实现回滚,增量数据不丢失。
5)可实现任意扩缩容切换,方案可重复使用。
基于上述实施例的一种数据缓存的扩容方法,以下提供一具体实施例:
如图3所示,封装shardedJedis类,重写业务系统常用的增删改查方法,封装出一个jar包,业务系统开发者只需实现shardedJedis类中的FullRedisClientInterface类的getKey()方法和getValue()方法,新旧集群对于开发者无感,通过配置控制开关以控制业务数据从哪个集群读取和往哪个集群写入,完成全量数据缓存初始化,进而实现全量数据的缓存扩容。基于图3所示的jar包,参见图4所示的操作流程图,实现本申请的一种数据缓存的扩容方法如下所示:
步骤一:提供封装jar包,并制定jar包所需的依赖规范。旧集群配置指向redisClientA,新集群配置指向redisClientB,控制开关回归初始值redis.switch=1、incr.write.switch=1。
步骤二:业务系统将所有操作缓存的全量数据的方法重写为调用RedisClientUtils类中的方法。RedisClientUtils类的方法参见图3所示。
步骤三:业务系统增加缓存的全量数据的初始化任务,并实现调用FullRedisClientInterface类中getKey()方法、getValue()方法。
步骤四:当需要将增量数据分别写入两个集群时,切换控制开关incr.write.switch=2,使目标业务的增量数据同时写入redisClientA集群、redisClientB集群,实现双写。双写时只要有一个集群操作失败都需要进行异常补偿。
步骤五:执行缓存全量数据的初始化任务,调用getKey()方法获取redis key后查询redisClientA旧集群以获取value数据,如缓存中不存在则调用getValue()方法从数据库获取redis value,最后组装key-value写入到redisClientB中,此处从旧集群中获取value数据,可实现利用旧集群数据提高组装的缓存速度。
步骤六:全量数据的初始化完成后,验证新旧集群数据的内存大小是否相同、抽取新旧集群缓存数据一致,进行初步验证。此步骤为验证旧集群中的全量数据是否全部缓存到新集群中。
步骤七:切换控制开关redis.switch=2,使所有缓存查询操作指向新集群,进行全量业务验证。全量业务验证具体为:业务系统通过目标业务的业务逻辑从新集群中读写目标业务的业务数据时,操作是否成功。通过操作结果验证新集群中的全量业务。
步骤八:若验证失败,则回滚控制开关redis.switch=1,仍然读取旧集群数据。若验证通过并灰度一段时间后全量业务验证无问题,切换控制开关为incr.write.switch=3,目标业务的增量缓存数据只写入新集群。
步骤九:缓存的全量数据初始化验证通过后,旧集群下线,正式使用新集群。新集群配置覆盖旧集群配置,此时对外使用时redisClientA即为redisClientB,恢复redis.switch=1,incr.write.switch=1。
步骤十:若后期再次遇到redis集群的缓存容量瓶颈需要再一次扩容时,可重复利用执行上述方案和步骤。
本申请的一种数据缓存的扩容方法,通过对redis客户端做进一步封装,来解决redis全量缓存集群水平扩容的三个难点:一方面新旧双集群对业务系统开发者无感知,封装后的客户端面向业务系统的只有一个入口。如shardedJedis类封装得到的客户端。业务系统开发者无需关注操作哪个集群,只需按照给定的接口规范实现业务方法,对业务系统侵入性较低,业务系统改动较小,减少人力投入,达到快速上线的目的,改造完成后扩容步骤可重复实施,避免多次扩缩容,减轻运维压力,降低实施风险。另一方面,缓存和应用不需要停机,扩容期间不影响业务,扩容失败时可立即回滚,保证扩容期间缓存高可用,并且在全量数据初始化期间,充分利用旧集群缓存数据,减少数据库查询,提高全量数据初始化速度,极大缩短扩容时间。如,通过控制开关实现对新旧集群的业务数据的数据修改、查询以及增加等数据操作。最后,扩容过程不需要借助专业的运维人员,扩容期间不需要暂停业务数据下发的队列,增量数据不会丢失,业务完全无感知,只需要熟悉业务系统操作人员通过简单的开关切换和执行后台数据初始化任务,即可实施扩容操作。如,在扩容期间将增量数据同时写入新旧两个集群,防止增量数据的丢失。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种数据缓存的扩容装置,包括:获取模块10、读取模块20、写入模块30和操作模块40,其中:获取模块10,用于获取第一数据缓存设备中缓存的第一业务数据的索引值,第一数据缓存设备用于缓存目标业务的第一业务数据;读取模块20,用于根据索引值从第一数据缓存设备读取第一业务数据;写入模块30,用于将第一业务数据写入第二数据缓存设备,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量;操作模块40,用于当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。
在其中一个实施例中,一种数据缓存的扩容装置还用于:若根据索引值从第一数据缓存设备未读取到第一业务数据,则根据索引值从持久化存储设备中读取第一业务数据。
优选地,将第一业务数据写入第二数据缓存设备之后,还包括:获取目标业务的业务数据调用信息,基于业务数据调用信息调用第二数据缓存设备中的第一业务数据;若调用到第一业务数据,则标注第二数据缓存设备的数据验证成功,若未调用到第一业务数据,则标注第二数据缓存设备的数据验证失败;若第二数据缓存设备的数据验证成功,则执行根据索引值从第二数据缓存设备中调用第一业务数据的步骤;若第二数据缓存设备的数据验证失败,则当接收到目标业务的数据指令时,根据索引值从第一数据缓存设备中调用第一业务数据。
在其中一个实施例中,第一业务数据为第一数据缓存设备中的全量数据,一种数据缓存的扩容装置还用于:接收目标业务的第二业务数据,第二业务数据为第一数据缓存设备的增量数据;将第二业务数据分别写入第一数据缓存设备和第二数据缓存设备。
在其中一个实施例中,一种数据缓存的扩容装置还用于:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据读写,第二客户端用于控制第二数据缓存设备的数据读写;生成第一数据操作方法,第一数据操作方法用于指示获取第一数据缓存设备中缓存的第一业务数据的索引值,并根据索引值通过第一客户端从第一数据缓存设备读取第一业务数据,并通过第二客户端将第一业务数据写入第二数据缓存设备;将第一数据操作方法和第一客户端、第二客户端进行封装,封装后得到第一类,设置第一类的第一接口;当接收到目标业务的数据缓存扩容指令时,调用第一接口,通过第一接口调用第一类中的第一数据操作方法,以执行获取第一数据缓存设备中缓存的第一业务数据的索引值,根据索引值从第一数据缓存设备读取第一业务数据,将第一业务数据写入第二数据缓存设备的步骤。
在其中一个实施例中,一种数据缓存的扩容装置还用于:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据操作,第二客户端用于控制第二数据缓存设备的数据操作;生成第二数据操作方法,第二数据操作方法用于指示对第一数据缓存设备执行数据操作和/或指示对第二数据缓存设备执行数据操作;将第二数据操作方法和第一客户端、第二客户端进行封装,封装后得到第二类,设置第二类的第二接口;当接收到目标业务的数据操作指令时,调用第二接口,通过第二接口调用第二类中的第二数据操作方法,根据数据操作指令实现第二数据操作方法,以对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作。
在其中一个实施例中,一种数据缓存的扩容装置还用于:创建数据操作的控制开关,控制开关用于控制对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作,数据操作包括读取操作和修改操作;生成控制开关的控制信息,控制信息包括读取控制信息和修改控制信息,读取控制信息用于指示控制开关对第一数据缓存设备的数据的读取操作进行控制或对第二数据缓存设备的数据的读取操作进行控制,修改控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制和/或对第二数据缓存设备的数据的修改操作进行控制;当接收到读取控制信息的调用指示时,若根据读取控制信息识别到第一数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的读取操作进行控制,若根据读取控制信息识别到第二数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的读取操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制。
在其中一个实施例中,修改控制信息包括第一子控制信息和第二子控制信息,第一子控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制,第二子控制信息用于指示控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制,包括:当接收到第一子控制信息时,根据第一子控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制;当接收到第二子控制信息时,根据第二子控制信息启动控制开关,通过控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制。
关于一种数据缓存的扩容装置的具体限定可以参见上文中对于一种数据缓存的扩容方法的限定,在此不再赘述。上述一种数据缓存的扩容装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是支持业务系统的服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的第一数据缓存设备以及第二数据缓存设备进行数据信息交互。该计算机程序被处理器执行时以实现一种数据缓存的扩容方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取第一数据缓存设备中缓存的第一业务数据的索引值,第一数据缓存设备用于缓存目标业务的第一业务数据;根据索引值从第一数据缓存设备读取第一业务数据;将第一业务数据写入第二数据缓存设备,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量;当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。
在一个实施例中,处理器执行计算机程序时实现以下步骤:若根据索引值从第一数据缓存设备未读取到第一业务数据,则根据索引值从持久化存储设备中读取第一业务数据。
在一个实施例中,处理器执行计算机程序时实现以下步骤:获取目标业务的业务数据调用信息,基于业务数据调用信息调用第二数据缓存设备中的第一业务数据;若调用到第一业务数据,则标注第二数据缓存设备的数据验证成功,若未调用到第一业务数据,则标注第二数据缓存设备的数据验证失败;若第二数据缓存设备的数据验证成功,则执行根据索引值从第二数据缓存设备中调用第一业务数据的步骤;若第二数据缓存设备的数据验证失败,则当接收到目标业务的数据指令时,根据索引值从第一数据缓存设备中调用第一业务数据。
在一个实施例中,第一业务数据为第一数据缓存设备中的全量数据,处理器执行计算机程序时实现以下步骤:接收目标业务的第二业务数据,第二业务数据为第一数据缓存设备的增量数据;将第二业务数据分别写入第一数据缓存设备和第二数据缓存设备。
在一个实施例中,处理器执行计算机程序时实现以下步骤:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据读写,第二客户端用于控制第二数据缓存设备的数据读写;生成第一数据操作方法,第一数据操作方法用于指示获取第一数据缓存设备中缓存的第一业务数据的索引值,并根据索引值通过第一客户端从第一数据缓存设备读取第一业务数据,并通过第二客户端将第一业务数据写入第二数据缓存设备;将第一数据操作方法和第一客户端、第二客户端进行封装,封装后得到第一类,设置第一类的第一接口;当接收到目标业务的数据缓存扩容指令时,调用第一接口,通过第一接口调用第一类中的第一数据操作方法,以执行获取第一数据缓存设备中缓存的第一业务数据的索引值,根据索引值从第一数据缓存设备读取第一业务数据,将第一业务数据写入第二数据缓存设备的步骤。
在一个实施例中,处理器执行计算机程序时实现以下步骤:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据操作,第二客户端用于控制第二数据缓存设备的数据操作;生成第二数据操作方法,第二数据操作方法用于指示对第一数据缓存设备执行数据操作和/或指示对第二数据缓存设备执行数据操作;将第二数据操作方法和第一客户端、第二客户端进行封装,封装后得到第二类,设置第二类的第二接口;当接收到目标业务的数据操作指令时,调用第二接口,通过第二接口调用第二类中的第二数据操作方法,根据数据操作指令实现第二数据操作方法,以对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作。
在一个实施例中,处理器执行计算机程序时实现以下步骤:创建数据操作的控制开关,控制开关用于控制对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作,数据操作包括读取操作和修改操作;生成控制开关的控制信息,控制信息包括读取控制信息和修改控制信息,读取控制信息用于指示控制开关对第一数据缓存设备的数据的读取操作进行控制或对第二数据缓存设备的数据的读取操作进行控制,修改控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制和/或对第二数据缓存设备的数据的修改操作进行控制;当接收到读取控制信息的调用指示时,若根据读取控制信息识别到第一数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的读取操作进行控制,若根据读取控制信息识别到第二数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的读取操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制。
在一个实施例中,修改控制信息包括第一子控制信息和第二子控制信息,第一子控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制,第二子控制信息用于指示控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制;处理器执行计算机程序实现上述的当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制的步骤时,具体实现以下步骤:当接收到第一子控制信息时,根据第一子控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制;当接收到第二子控制信息时,根据第二子控制信息启动控制开关,通过控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取第一数据缓存设备中缓存的第一业务数据的索引值,第一数据缓存设备用于缓存目标业务的第一业务数据;根据索引值从第一数据缓存设备读取第一业务数据;将第一业务数据写入第二数据缓存设备,第二数据缓存设备的数据缓存容量大于第一数据缓存设备的数据缓存容量;当接收到目标业务的数据指令时,若数据指令用于指示调用第一业务数据,则根据索引值从第二数据缓存设备中调用第一业务数据,若数据指令用于指示缓存增量数据,则获取目标业务的增量业务数据,将增量业务数据缓存到第二数据缓存设备。
在一个实施例中,计算机程序被处理器执行时实现以下步骤:若根据索引值从第一数据缓存设备未读取到第一业务数据,则根据索引值从持久化存储设备中读取第一业务数据。
在一个实施例中,计算机程序被处理器执行时实现以下步骤:获取目标业务的业务数据调用信息,基于业务数据调用信息调用第二数据缓存设备中的第一业务数据;若调用到第一业务数据,则标注第二数据缓存设备的数据验证成功,若未调用到第一业务数据,则标注第二数据缓存设备的数据验证失败;若第二数据缓存设备的数据验证成功,则执行根据索引值从第二数据缓存设备中调用第一业务数据的步骤;若第二数据缓存设备的数据验证失败,则当接收到目标业务的数据指令时,根据索引值从第一数据缓存设备中调用第一业务数据。
在一个实施例中,第一业务数据为第一数据缓存设备中的全量数据,计算机程序被处理器执行时实现以下步骤:接收目标业务的第二业务数据,第二业务数据为第一数据缓存设备的增量数据;将第二业务数据分别写入第一数据缓存设备和第二数据缓存设备。
在一个实施例中,计算机程序被处理器执行时实现以下步骤:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据读写,第二客户端用于控制第二数据缓存设备的数据读写;生成第一数据操作方法,第一数据操作方法用于指示获取第一数据缓存设备中缓存的第一业务数据的索引值,并根据索引值通过第一客户端从第一数据缓存设备读取第一业务数据,并通过第二客户端将第一业务数据写入第二数据缓存设备;将第一数据操作方法和第一客户端、第二客户端进行封装,封装后得到第一类,设置第一类的第一接口;当接收到目标业务的数据缓存扩容指令时,调用第一接口,通过第一接口调用第一类中的第一数据操作方法,以执行获取第一数据缓存设备中缓存的第一业务数据的索引值,根据索引值从第一数据缓存设备读取第一业务数据,将第一业务数据写入第二数据缓存设备的步骤。
在一个实施例中,计算机程序被处理器执行时实现以下步骤:识别第一数据缓存设备的第一客户端以及第二数据缓存设备的第二客户端,第一客户端用于控制第一数据缓存设备的数据操作,第二客户端用于控制第二数据缓存设备的数据操作;生成第二数据操作方法,第二数据操作方法用于指示对第一数据缓存设备执行数据操作和/或指示对第二数据缓存设备执行数据操作;将第二数据操作方法和第一客户端、第二客户端进行封装,封装后得到第二类,设置第二类的第二接口;当接收到目标业务的数据操作指令时,调用第二接口,通过第二接口调用第二类中的第二数据操作方法,根据数据操作指令实现第二数据操作方法,以对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作。
在一个实施例中,计算机程序被处理器执行时实现以下步骤:创建数据操作的控制开关,控制开关用于控制对第一数据缓存设备执行数据操作和/或对第二数据缓存设备执行数据操作,数据操作包括读取操作和修改操作;生成控制开关的控制信息,控制信息包括读取控制信息和修改控制信息,读取控制信息用于指示控制开关对第一数据缓存设备的数据的读取操作进行控制或对第二数据缓存设备的数据的读取操作进行控制,修改控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制和/或对第二数据缓存设备的数据的修改操作进行控制;当接收到读取控制信息的调用指示时,若根据读取控制信息识别到第一数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的读取操作进行控制,若根据读取控制信息识别到第二数据缓存设备,则根据读取控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的读取操作进行控制;当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制。
在一个实施例中,修改控制信息包括第一子控制信息和第二子控制信息,第一子控制信息用于指示控制开关对第一数据缓存设备的数据的修改操作进行控制,第二子控制信息用于指示控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制;计算机程序被处理器执行实现上述的当接收到修改控制信息的调用指示时,若根据修改控制信息识别到第一数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制,若根据修改控制信息识别到第二数据缓存设备,则根据修改控制信息启动控制开关,通过控制开关对第二数据缓存设备的数据的修改操作进行控制的步骤时,具体实现以下步骤:当接收到第一子控制信息时,根据第一子控制信息启动控制开关,通过控制开关对第一数据缓存设备的数据的修改操作进行控制;当接收到第二子控制信息时,根据第二子控制信息启动控制开关,通过控制开关同时对第一数据缓存设备以及第二数据缓存设备的数据的修改操作进行控制。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种数据缓存的扩容方法,所述方法包括:
获取第一数据缓存设备中缓存的第一业务数据的索引值,所述第一数据缓存设备用于缓存目标业务的所述第一业务数据;
根据所述索引值从所述第一数据缓存设备读取所述第一业务数据;
将所述第一业务数据写入第二数据缓存设备,所述第二数据缓存设备的数据缓存容量大于所述第一数据缓存设备的数据缓存容量;
当接收到所述目标业务的数据指令时,若所述数据指令用于指示调用所述第一业务数据,则根据所述索引值从所述第二数据缓存设备中调用所述第一业务数据,若所述数据指令用于指示缓存增量数据,则获取所述目标业务的增量业务数据,将所述增量业务数据缓存到所述第二数据缓存设备;
识别所述第一数据缓存设备的第一客户端以及所述第二数据缓存设备的第二客户端,所述第一客户端用于控制所述第一数据缓存设备的数据操作,所述第二客户端用于控制所述第二数据缓存设备的数据操作;
生成第二数据操作方法,所述第二数据操作方法用于指示对所述第一数据缓存设备执行数据操作和/或指示对所述第二数据缓存设备执行数据操作;
将所述第二数据操作方法和所述第一客户端、所述第二客户端进行封装,封装后得到第二类,设置所述第二类的第二接口;
当接收到所述目标业务的数据操作指令时,调用所述第二接口,通过所述第二接口调用所述第二类中的所述第二数据操作方法,根据所述数据操作指令实现所述第二数据操作方法,以对所述第一数据缓存设备执行数据操作和/或对所述第二数据缓存设备执行数据操作;
创建所述数据操作的控制开关,所述控制开关用于控制对所述第一数据缓存设备执行数据操作和/或对所述第二数据缓存设备执行数据操作,所述数据操作包括读取操作和修改操作;
生成所述控制开关的控制信息,所述控制信息包括读取控制信息和修改控制信息,所述读取控制信息用于指示所述控制开关对所述第一数据缓存设备的数据的读取操作进行控制或对所述第二数据缓存设备的数据的读取操作进行控制,所述修改控制信息用于指示所述控制开关对所述第一数据缓存设备的数据的修改操作进行控制和/或对所述第二数据缓存设备的数据的修改操作进行控制;
当接收到所述读取控制信息的调用指示时,若根据所述读取控制信息识别到所述第一数据缓存设备,则根据所述读取控制信息启动所述控制开关,通过所述控制开关对所述第一数据缓存设备的数据的读取操作进行控制,若根据所述读取控制信息识别到所述第二数据缓存设备,则根据所述读取控制信息启动所述控制开关,通过所述控制开关对所述第二数据缓存设备的数据的读取操作进行控制;
当接收到所述修改控制信息的调用指示时,若根据所述修改控制信息识别到所述第一数据缓存设备,则根据所述修改控制信息启动所述控制开关,通过所述控制开关对所述第一数据缓存设备的数据的修改操作进行控制,若根据所述修改控制信息识别到所述第二数据缓存设备,则根据所述修改控制信息启动所述控制开关,通过所述控制开关对所述第二数据缓存设备的数据的修改操作进行控制。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若根据所述索引值从所述第一数据缓存设备未读取到所述第一业务数据,则根据所述索引值从持久化存储设备中读取所述第一业务数据。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一业务数据写入第二数据缓存设备之后,还包括:
获取所述目标业务的业务数据调用信息,基于所述业务数据调用信息调用所述第二数据缓存设备中的所述第一业务数据;
若调用到所述第一业务数据,则标注所述第二数据缓存设备的数据验证成功,若未调用到所述第一业务数据,则标注所述第二数据缓存设备的数据验证失败;
若所述第二数据缓存设备的数据验证成功,则执行所述根据所述索引值从所述第二数据缓存设备中调用所述第一业务数据的步骤;
若所述第二数据缓存设备的数据验证失败,则当接收到所述目标业务的数据指令时,根据所述索引值从所述第一数据缓存设备中调用所述第一业务数据。
4.根据权利要求1所述的方法,其特征在于,所述第一业务数据为所述第一数据缓存设备中的全量数据,所述方法还包括:
接收所述目标业务的第二业务数据,所述第二业务数据为所述第一数据缓存设备的增量数据;
将所述第二业务数据分别写入所述第一数据缓存设备和所述第二数据缓存设备。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
识别所述第一数据缓存设备的第一客户端以及所述第二数据缓存设备的第二客户端,所述第一客户端用于控制所述第一数据缓存设备的数据读写,所述第二客户端用于控制所述第二数据缓存设备的数据读写;
生成第一数据操作方法,所述第一数据操作方法用于指示获取所述第一数据缓存设备中缓存的第一业务数据的索引值,并根据所述索引值通过所述第一客户端从所述第一数据缓存设备读取所述第一业务数据,并通过所述第二客户端将所述第一业务数据写入第二数据缓存设备;
将所述第一数据操作方法和所述第一客户端、所述第二客户端进行封装,封装后得到第一类,设置所述第一类的第一接口;
当接收到所述目标业务的数据缓存扩容指令时,调用所述第一接口,通过所述第一接口调用所述第一类中的所述第一数据操作方法,以执行所述获取所述第一数据缓存设备中缓存的第一业务数据的索引值,根据所述索引值从所述第一数据缓存设备读取所述第一业务数据,将所述第一业务数据写入第二数据缓存设备的步骤。
6.根据权利要求1所述的方法,其特征在于,所述修改控制信息包括第一子控制信息和第二子控制信息,所述第一子控制信息用于指示所述控制开关对所述第一数据缓存设备的数据的修改操作进行控制,所述第二子控制信息用于指示所述控制开关同时对所述第一数据缓存设备以及所述第二数据缓存设备的数据的修改操作进行控制;
所述当接收到所述修改控制信息的调用指示时,若根据所述修改控制信息识别到所述第一数据缓存设备,则根据所述修改控制信息启动所述控制开关,通过所述控制开关对所述第一数据缓存设备的数据的修改操作进行控制,若根据所述修改控制信息识别到所述第二数据缓存设备,则根据所述修改控制信息启动所述控制开关,通过所述控制开关对所述第二数据缓存设备的数据的修改操作进行控制,包括:
当接收到所述第一子控制信息时,根据所述第一子控制信息启动所述控制开关,通过所述控制开关对所述第一数据缓存设备的数据的修改操作进行控制;
当接收到所述第二子控制信息时,根据所述第二子控制信息启动所述控制开关,通过所述控制开关同时对所述第一数据缓存设备以及所述第二数据缓存设备的数据的修改操作进行控制。
7.一种数据缓存的扩容装置,其特征在于,所述装置包括:
获取模块,用于获取第一数据缓存设备中缓存的第一业务数据的索引值,所述第一数据缓存设备用于缓存目标业务的所述第一业务数据;
读取模块,用于根据所述索引值从所述第一数据缓存设备读取所述第一业务数据;
写入模块,用于将所述第一业务数据写入第二数据缓存设备,所述第二数据缓存设备的数据缓存容量大于所述第一数据缓存设备的数据缓存容量;
操作模块,用于当接收到所述目标业务的数据指令时,若所述数据指令用于指示调用所述第一业务数据,则根据所述索引值从所述第二数据缓存设备中调用所述第一业务数据,若所述数据指令用于指示缓存增量数据,则获取所述目标业务的增量业务数据,将所述增量业务数据缓存到所述第二数据缓存设备;识别所述第一数据缓存设备的第一客户端以及所述第二数据缓存设备的第二客户端,所述第一客户端用于控制所述第一数据缓存设备的数据操作,所述第二客户端用于控制所述第二数据缓存设备的数据操作;生成第二数据操作方法,所述第二数据操作方法用于指示对所述第一数据缓存设备执行数据操作和/或指示对所述第二数据缓存设备执行数据操作;将所述第二数据操作方法和所述第一客户端、所述第二客户端进行封装,封装后得到第二类,设置所述第二类的第二接口;当接收到所述目标业务的数据操作指令时,调用所述第二接口,通过所述第二接口调用所述第二类中的所述第二数据操作方法,根据所述数据操作指令实现所述第二数据操作方法,以对所述第一数据缓存设备执行数据操作和/或对所述第二数据缓存设备执行数据操作;创建所述数据操作的控制开关,所述控制开关用于控制对所述第一数据缓存设备执行数据操作和/或对所述第二数据缓存设备执行数据操作,所述数据操作包括读取操作和修改操作;生成所述控制开关的控制信息,所述控制信息包括读取控制信息和修改控制信息,所述读取控制信息用于指示所述控制开关对所述第一数据缓存设备的数据的读取操作进行控制或对所述第二数据缓存设备的数据的读取操作进行控制,所述修改控制信息用于指示所述控制开关对所述第一数据缓存设备的数据的修改操作进行控制和/或对所述第二数据缓存设备的数据的修改操作进行控制;当接收到所述读取控制信息的调用指示时,若根据所述读取控制信息识别到所述第一数据缓存设备,则根据所述读取控制信息启动所述控制开关,通过所述控制开关对所述第一数据缓存设备的数据的读取操作进行控制,若根据所述读取控制信息识别到所述第二数据缓存设备,则根据所述读取控制信息启动所述控制开关,通过所述控制开关对所述第二数据缓存设备的数据的读取操作进行控制;当接收到所述修改控制信息的调用指示时,若根据所述修改控制信息识别到所述第一数据缓存设备,则根据所述修改控制信息启动所述控制开关,通过所述控制开关对所述第一数据缓存设备的数据的修改操作进行控制,若根据所述修改控制信息识别到所述第二数据缓存设备,则根据所述修改控制信息启动所述控制开关,通过所述控制开关对所述第二数据缓存设备的数据的修改操作进行控制。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110184571.5A CN112882658B (zh) | 2021-02-10 | 2021-02-10 | 数据缓存的扩容方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110184571.5A CN112882658B (zh) | 2021-02-10 | 2021-02-10 | 数据缓存的扩容方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112882658A CN112882658A (zh) | 2021-06-01 |
CN112882658B true CN112882658B (zh) | 2023-04-21 |
Family
ID=76056342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110184571.5A Active CN112882658B (zh) | 2021-02-10 | 2021-02-10 | 数据缓存的扩容方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112882658B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9720603B1 (en) * | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6540363B2 (ja) * | 2015-08-19 | 2019-07-10 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
CN105786491A (zh) * | 2016-02-23 | 2016-07-20 | 浪潮通信信息系统有限公司 | 一种基于数据描述的命令式智能数据管理系统 |
CN107943589A (zh) * | 2017-11-29 | 2018-04-20 | 苏宁云商集团股份有限公司 | 一种数据缓存的管理方法及装置 |
CN110019133B (zh) * | 2017-12-21 | 2021-07-13 | 北京京东尚科信息技术有限公司 | 数据在线迁移方法和装置 |
CN109683826B (zh) * | 2018-12-26 | 2023-08-29 | 北京百度网讯科技有限公司 | 用于分布式存储系统的扩容方法和装置 |
-
2021
- 2021-02-10 CN CN202110184571.5A patent/CN112882658B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9720603B1 (en) * | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
Also Published As
Publication number | Publication date |
---|---|
CN112882658A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101090401B (zh) | 一种群集环境下的数据缓存方法及系统 | |
US8244686B2 (en) | High throughput, reliable replication of transformed data in information systems | |
US11442961B2 (en) | Active transaction list synchronization method and apparatus | |
CN102103497B (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
CN110489421B (zh) | 数据存储方法、装置、计算机可读存储介质和计算机设备 | |
US8812683B2 (en) | Service scripting framework | |
EP2797013A1 (en) | Database update execution according to power management schemes | |
CN103282889A (zh) | 用于数据储存系统的端点高速缓存 | |
US11169796B2 (en) | Methods and systems for remote software update | |
CN109564502A (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
CN111400246A (zh) | 异步导入文件方法、装置、计算机设备和存储介质 | |
CN111897492A (zh) | 一种基于块设备驱动的数据处理方法、装置及电子设备 | |
US11651221B2 (en) | Method, device, and computer program product for deep learning | |
CN112882658B (zh) | 数据缓存的扩容方法、装置、计算机设备和存储介质 | |
US20070005552A1 (en) | Methods and systems for reducing transient memory consumption in an object-oriented system | |
CN105677579A (zh) | 缓存系统中的数据访问方法和系统 | |
CN111159142B (zh) | 一种数据处理方法及装置 | |
CN112241398A (zh) | 一种数据迁移方法和系统 | |
CN116208676A (zh) | 数据回源方法、装置、计算机设备、存储介质和程序产品 | |
US10678453B2 (en) | Method and device for checking false sharing in data block deletion using a mapping pointer and weight bits | |
CN112948336B (zh) | 数据加速方法及缓存单元、电子设备及存储介质 | |
WO2021174700A1 (zh) | 数据压缩方法、装置、计算机设备和存储介质 | |
CN102902825B (zh) | 一种数据库优化方法及装置 | |
US11513968B1 (en) | Systems and methods for coupled cache management | |
KR20190069134A (ko) | 응용 프로그램간 파일 공유 장치 및 방법 |
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 |