CN113885780A - 数据同步方法、装置、电子设备、***和存储介质 - Google Patents
数据同步方法、装置、电子设备、***和存储介质 Download PDFInfo
- Publication number
- CN113885780A CN113885780A CN202110185056.9A CN202110185056A CN113885780A CN 113885780 A CN113885780 A CN 113885780A CN 202110185056 A CN202110185056 A CN 202110185056A CN 113885780 A CN113885780 A CN 113885780A
- Authority
- CN
- China
- Prior art keywords
- target data
- data
- synchronization
- disk
- copy buffer
- 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 55
- 238000004590 computer program Methods 0.000 claims description 16
- 230000010076 replication Effects 0.000 claims description 4
- 239000013589 supplement Substances 0.000 abstract description 12
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 101150061025 rseP gene Proteins 0.000 description 4
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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/065—Replication mechanisms
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据同步方法、装置、电子设备、***和存储介质,该数据同步方法包括:在复制缓冲区查找从设备请求的目标数据;当复制缓冲区不存在目标数据时,在磁盘查找该目标数据;当磁盘存在该目标数据时,读取所述目标数据并向从设备发送该目标数据,以使得从设备根据该目标数据进行数据增量同步。本发明实施例中,可以将磁盘作为复制缓冲区的补充,当复制缓冲区由于存储空间有限导致数据溢出无法提供从设备请求的目标数据时,可以从磁盘获取从设备请求的目标数据,从而提高了增量同步的成功率,提高了数据同步效率;另一方面,将磁盘作为复制缓冲区的补充,不会增加内存空间的占用,减少了内存消耗。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种数据同步方法、装置、电子设备、***和存储介质。
背景技术
Redis服务器之间是通过主从同步的方式同步数据的,同步数据主要分为两种模式:全量同步和增量同步。全量同步比较耗时,因而增量同步的模式使用较多,增量同步的同步数据缓存在复制缓冲区。在实现本发明的过程中,发明人发现,使用增量同步时,由于复制缓冲区存储空间有限,容易导致增量同步失败,而如果加大复制缓冲区,又会增加内存空间的占用,加剧了内存的消耗。
发明内容
本发明实施例提供一种数据同步方法、装置、电子设备、***和存储介质,能够提高增量同步的成功率,减少内存消耗。
第一方面,本发明实施例提供一种数据同步方法,包括:
在复制缓冲区查找从设备请求的目标数据;
当所述复制缓冲区不存在所述目标数据时,在磁盘查找所述目标数据;
当所述磁盘存在所述目标数据时,读取所述目标数据并向所述从设备发送所述目标数据,以使得所述从设备根据所述目标数据进行数据增量同步。
第二方面,本发明实施例提供一种数据同步装置,包括:
第一查找模块,用于在复制缓冲区查找从设备请求的目标数据;
第二查找模块,用于当所述复制缓冲区不存在所述目标数据时,在磁盘查找所述目标数据;
发送模块,用于当所述磁盘存在所述目标数据时,读取所述目标数据并向所述从设备发送所述目标数据,以使得所述从设备根据所述目标数据进行数据增量同步。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的数据同步方法。
第四方面,本发明实施例还提供了一种数据同步***,包括从设备和用于执行本发明实施例中任一所述的数据同步方法的电子设备。
第五方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的数据同步方法。
本发明实施例中,在从设备请求目标数据时,可以先在复制缓冲区查找目标数据,当复制缓冲区不存在目标数据时,在磁盘查找目标数据,当磁盘存在目标数据时,读取该目标数据并向从设备发送该目标数据,以使得从设备根据该目标数据进行数据增量同步。即本发明实施例中,可以将磁盘作为复制缓冲区的补充,当复制缓冲区由于存储空间有限导致数据溢出无法提供从设备请求的目标数据时,可以从磁盘获取从设备请求的目标数据,从而提高了增量同步的成功率,提高了数据同步效率;另一方面,将磁盘作为复制缓冲区的补充,不会增加内存空间的占用,减少了内存消耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例提供的数据同步方法的一个流程示意图。
图2是本发明实施例提供的数据同步方法的另一流程示意图。
图3是本发明实施例提供的数据存储方法的一个流程示意图。
图4是本发明实施例提供的数据同步***的一个设备交互示意图。
图5是本发明实施例提供的数据同步装置的一个结构示意图。
图6是本发明实施例提供的数据同步***的一个结构示意图。
图7是本发明实施例提供的电子设备的一个结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在描述本发明实施例提供的数据同步方法之前,先介绍一下Redis服务器之间采用全量同步模式同步数据的方法和采用增量同步模式同步数据的方法,Redis服务器可以包括Redis主服务器(master服务器)和从服务器(slave服务器或replica服务器)。
(1)全量同步模式同步数据的方法如下:
从服务器连接主服务器,并向主服务器发送全量同步命令;
主服务器在接收到全量同步命令之后,开始执行BGSAVE命令生成快照文件并使用复制缓冲区记录此后执行的所有写指令;
主服务器执行完BGSAVE命令后,向从服务器发送快照文件,并在发送期间继续使用复制缓冲区记录执行的写指令;
从服务器收到快照文件后丢弃所有旧数据,载入收到的快照文件;
主服务器发送完快照文件后开始向从服务器发送复制缓冲区中的写指令;
从服务器完成对快照文件的载入后,开始接收来自主服务器复制缓冲区的写指令,并执行该写指令,完成数据同步。
实际应用中,主从同步的服务器双方各自都会维持一个偏移量offset,主服务器成功发送N个字节的写指令后会将主服务器里的偏移量加上N,从服务器在接收到N个字节写指令后同样会将从服务器里的偏移量增加N,N为正整数,主服务器和从服务器如果状态是一致的,那么它们的偏移量也应该是一致的。
(2)增量同步模式同步数据的方法如下:
从服务器向主服务器发送增量同步命令并携带偏移量(offset);
主服务器接收到增量同步命令后,根据偏移量在复制缓冲区查找对应的写指令;
主服务器将查找到的写指令发送给从服务器,完成数据同步。
相比增量同步,全量同步比较耗时,消耗资源很多,并且有可能会阻塞正常的Redis业务处理,所以Redis优先使用增量同步。
增量同步比较依赖复制缓冲区,复制缓冲区实际上是由主服务器维护的一个固定长度的循环队列,它的作用就是缓存写指令,默认情况下循环队列的大小为1MB。由于复制缓冲区存储空间有限,当写入数据过多时会造成数据溢出,导致从服务器请求的偏移量对应的数据在复制缓冲区查找不到,即增量同步失败,这个时候会触发启用全量同步,会消耗大量的***资源。另外,加大复制缓冲区可以提高增量同步的成功率,但大的复制缓冲区会增加内存空间的占用,加剧了内存的消耗,Redis作为基于内存的文件***,内存资源极其珍贵,加大复制缓冲区容易造成***数据和用户数据的竞争,可能会影响正常的业务使用。
此外,目前的Redis同步还存在无尽的复制循环问题。比如,当从服务器加入时进行全量同步,主服务器执行BGSAVE命令生成快照文件,增量写入的数据放在复制缓冲区当中,当写入的数据过多造成偏移量不在复制缓冲区中只能再次触发全量同步,由此造成无尽的复制循环,成为运维痛点。
因而,本发明实施例提供一种数据同步方法,在不增加内存空间占用的情况下,提高增量同步的成功率。
请参考图1,图1是本发明实施例提供的数据同步方法的流程示意图,本发明实施例提供的数据同步方法可以由本发明实施例提供的数据同步装置来执行,该装置可采用软件和/或硬件的方式实现。在一个具体的实施例中,该装置可以集成在服务器中,比如集成在Redis服务器中。以数据处理装置集成在Redis服务器中为例,本发明实施例的主设备、从设备均可以为Redis服务器,从设备可以有一个或多个,如图1所示,本发明实施例提供的数据同步方法可以包括以下步骤:
步骤101,在复制缓冲区查找从设备请求的目标数据。
具体实现中,主设备可以维护该复制缓冲区,执行来自客户端(比如Redis客户端)的写指令并将该写指令写入复制缓冲区,同时为写入的数据维持偏移量,该写指令可以包括增、删、改等指令。另外,主设备还可以将该写指令附加标识信息id后写入磁盘,磁盘可以是主设备自身的磁盘,也可以是其他设备的磁盘,磁盘还可以分布式存储设备的磁盘,磁盘可以包括软盘、硬盘、云盘等,此处不做具体限定。
示例地,比如当从设备断线后重新与主设备恢复连接时,从设备可以向主设备发送增量同步请求,该增量同步请求中可以目标数据的携带偏移量,主设备可以在接收到从设备发送的增量同步请求时,根据该偏移量在复制缓冲区查找从设备请求的目标数据。
比如,主设备可以在复制缓冲区查找是否存在该偏移量,如果存在该偏移量,则可以根据该偏移量从复制缓冲区读取目标数据,将目标数据发送给从设备,以使得从设备根据目标数据进行数据增量同步。如果复制缓冲区不存在该偏移量(比如复制缓冲区发生数据溢出),则说明复制缓冲区不存在从设备请求的目标数据。
步骤102,当复制缓冲区不存在目标数据时,在磁盘查找目标数据。
具体地,当复制缓冲区不存在从设备请求的目标数据时,主设备可以向从设备发送同步提示,比如可以提示从设备根据数据的标识信息请求数据同步,从设备接收到该同步提示之后,可以再次向主设备发送增量同步请求,该增量同步请求中可以携带目标数据的标识信息,主设备可以根据该标识信息在磁盘查找目标数据。
比如,主设备可以在磁盘查找是否存在该标识信息,如果存在该标识信息,则可以根据该标识信息从磁盘读取目标数据,将目标数据发送给从设备,以使得从设备根据目标数据进行数据增量同步。如果磁盘不存在该标识信息(比如该标识信息已过期删除),则说明磁盘不存在从设备请求的目标数据,这种情况下,可以触发全量同步。
步骤103,当磁盘存在目标数据时,读取目标数据并向从设备发送目标数据,以使得从设备根据目标数据进行数据增量同步。
具体实现中,该目标数据可以是写指令,该写指令可以以日志文件形式存储在磁盘中,当从设备接收到该写指令时,可以执行该写指令,从而实现与主设备间的数据同步。
本发明实施例中,可以将磁盘作为复制缓冲区的补充,当复制缓冲区由于存储空间有限导致数据溢出无法提供从设备请求的目标数据时,可以从磁盘获取从设备请求的目标数据,从而提高了增量同步的成功率,提高了数据同步效率,解决了无尽的复制循环问题;另一方面,将磁盘作为复制缓冲区的补充,不会增加内存空间的占用,减少了内存消耗。
下面进一步描述本发明实施例提供的数据同步方法,如图2所示,该方法包括如下步骤:
步骤201,将目标数据写入复制缓冲区和磁盘。
具体实现中,目标数据可以是写指令,比如,主设备可以在启动之后处理来自客户端的写指令,并将该写指令写入复制缓冲区和磁盘,复制缓冲区可以是由主设备维护的一个固定长度的循环队列,磁盘可以是主设备的本地磁盘,也可以是目标设备的磁盘,目标设备可以是远端的(共有或私有)云、区块链等。
具体地,以主设备为Redis服务器为例,可按照图3所示方法将写指令写入复制缓冲区和磁盘:
主设备利用其Redis主进程接收来自Redis客户端的写指令,写指令可以是RSEP指令;
Redis主进程处理该RSEP指令,向Redis客户端发送指令执行结果,并将RSEP指令写入复制缓冲区及rlog文件;
Redis主进程调用fork函数创建Redis子进程,利用Redis子进程将rlog文件落盘;
另外,如果AOF持久化为开启状态(即appendonly yes状态),则还可以将RSEP指令写入AOF文件,并利用Redis子进程将AOF文件落盘。
具体实现中,主设备可以为复制缓冲区中写入的写指令维持对应的偏移量,以便于后续进行数据同步。
示例地,写指令在rlog文件中的存储格式可以和在复制缓存区的存储格式一致,均为二进制格式,以便于后续读取时即取即用。
由于预设日志文件中可能需要存储大量的写指令,为了便于后续查找,防止单个文件膨胀过大,可以采用按大小或条目数进行文件的拆分写入不同的日志文件,比如可以每64M数据写入一个日志文件;示例地,例如可以10240条指令写入一个日志文件;另外,为了防止文件数目无限膨胀,可以增加删除功能,删除功能可以包括主动删除功能(比如按一定的生存时间或文件阈值删除)和懒惰LAZY删除功能(比如将上报的当前偏移量之前的数据删除)。
具体地,写入预设日志文件中的写指令可以具有标识信息id,该标识信息可由客户端在发送写指令时携带而来,也可以由主设备为对应的写指令生成。预设日志文件可以根据其内存储的写指令的标识信息命名,比如预设日志文件的文件名可以是一个标识信息区间。
步骤202,接收从设备发送的第一同步请求,第一同步请求中包含目标数据的偏移量。
比如,当从设备断线后重新与主设备恢复连接时,从设备可以向主设备发送第一同步请求,第一同步请求可以是PSYNC命令,第一同步请求中可以携带目标数据的偏移量,主设备可以在接收到从设备发送的第一同步请求时,根据该偏移量在复制缓冲区查找从设备请求的目标数据。
步骤203,根据偏移量在复制缓冲区查找目标数据。
具体地,主设备可以在复制缓冲区查找是否存在该偏移量,如果存在该偏移量,则可以根据该偏移量从复制缓冲区读取目标数据,将目标数据发送给从设备,以使得从设备根据目标数据进行数据增量同步。如果复制缓冲区不存在该偏移量(比如复制缓冲区发生数据溢出),则说明复制缓冲区不存在从设备请求的目标数据。
步骤204,复制缓冲区是否存在目标数据,若存在,则执行步骤205,否则执行步骤206。
步骤205,读取目标数据并向从设备发送目标数据,以使得从设备根据目标数据进行数据增量同步。
由于该目标数据可以是写指令,当从设备接收到该写指令时,可以执行该写指令,从而实现与主设备间的数据同步。
步骤206,向从设备发送同步提示。
由于复制缓冲区没有找到主设备请求的目标数据,这种情况下,可能会触发全量同步,具体在本发明实施例中,为了避免触发全量同步,主设备可以向从设备发送同步提示,该同步提示用于提示从设备根据数据的标识信息再次请求增量同步,从设备在接收到同步提示之后,可以根据需要同步的目标数据的标识信息再次发起增量同步请求。
步骤207,接收从设备发送的第二同步请求,第二同步请求中包含目标数据的标识信息。
具体地,第二同步请求可以是LPSYNC命令,第二同步请求中可以携带目标数据的标识信息,主设备可以在接收到从设备发送的第二同步请求时,根据该标识信息在磁盘查找从设备请求的目标数据。
比如,主设备可以根据该标识信息及磁盘中存储的各个日志文件的文件名确定目标数据所在的日志文件,然后从确定的日志文件中读取该标识信息对应的目标数据。
步骤208,根据标识信息在磁盘查找目标数据。
步骤209,磁盘是否存在目标数据,若存在,则执行步骤205,否则,执行步骤210。
步骤210,向从设备发送快照数据,以使得从设备根据快照数据进行数据全量同步。
由于磁盘空间也是有限度的,磁盘中可能只存储了预设时段内(比如最近的X天)的数据,可能从设备请求的目标数据已从磁盘中删除,磁盘中已不存在目标数据及其标识信息,这种情况下,可以触发全量同步,向从设备发送快照数据,以使得从设备根据快照数据进行数据全量同步。
在一个具体的实施例中,当磁盘中已不存在目标数据及其标识信息时,还可以确定磁盘中各个日志文件内最旧的标识信息(比如可以根据每个写指令的时间戳确定最旧的标识信息),从磁盘中最旧的标识信息开始,读取对应的数据,并将读取的数据发送给从设备,以实现尽力而为的增量同步。
本发明实施例中,可以将增量同步数据写入复制缓冲区和磁盘的预设日志文件,即增量同步数据双写,采用小复制缓冲区加大文件存储的方式,同时存储增量同步数据,将磁盘作为复制缓冲区的补充,当复制缓冲区由于存储空间有限导致数据溢出无法提供从设备请求的目标数据时,可以从磁盘获取从设备请求的目标数据,从而提高了增量同步的成功率,提高了数据同步效率,解决了无尽的复制循环问题;另一方面,将磁盘作为复制缓冲区的补充,不会增加内存空间的占用,减少了内存消耗。
下面以主设备、从设备均为Redis服务器为例说明本发明实施例提供的数据同步方法,如图4所示:
Redis从节点可以发起增量同步1,向Redis主节点发送PSYNC命令,PSYNC命令中可以包括服务器标识runid和目标数据的偏移量offset;
Redis主节点接收到PSYNC命令后,判断runid与本机id是否一致,如果不一致,则触发全量同步;如果一致则会判断offset是否在复制缓冲区,如果offset在复制缓冲区,则根据offset从复制缓冲区读取目标数据,将目标数据推送给Redis从节点,Redis从节点根据目标数据执行增量同步;如果offset不在复制缓冲区,则向Redis从节点返回LPSYNC命令;
Redis从节点发起增量同步2,向Redis主节点发送LPSYNC命令,LPSYNC命令中可以包括服务器标识runid和目标数据的标识信息id;
Redis主节点接收到LPSYNC命令时,再次判断runid与本机id是否一致,如果不一致,则触发全量同步;如果一致则会判断目标数据的标识信息id是否在磁盘的预设日志文件中;如果标识信息在预设日志文件中,则根据标识信息从预设日志文件读取目标数据,将目标数据推送给Redis从节点,同时返回数据对应的偏移量,Redis从节点根据目标数据执行增量同步;如果标识信息不在预设日志文件中,则可以向Redis从节点返回FULLRESYNC命令并向Redis从节点推送快照数据,Redis从节点根据快照数据执行全量同步。
图5是本发明是实施例提供的数据同步装置的一个结构图,该装置适用于执行本发明实施例提供的数据同步方法。如图5所示,该装置具体可以包括:
第一查找模块501,用于在复制缓冲区查找从设备请求的目标数据;
第二查找模块502,用于当所述复制缓冲区不存在所述目标数据时,在磁盘查找所述目标数据;
发送模块503,用于当所述磁盘存在所述目标数据时,读取所述目标数据并向所述从设备发送所述目标数据,以使得所述从设备根据所述目标数据进行数据增量同步。
一实施例中,所述第一查找模块501在复制缓冲区查找从设备请求的目标数据,包括:
接收所述从设备发送的第一同步请求,所述第一同步请求中包含所述目标数据的偏移量;
根据所述偏移量在所述复制缓冲区查找所述目标数据。
一实施例中,所述第二查找模块502在磁盘查找所述目标数据,包括:
接收所述从设备发送的第二同步请求,所述第二同步请求中包含所述目标数据的标识信息;
根据所述标识信息在所述磁盘查找所述目标数据。
一实施例中,所述发送模块503还用于:
向所述从设备发送同步提示,所述同步提示用于提示所述从设备根据所述标识信息请求数据同步。
一实施例中,所述第二查找模块502在磁盘查找所述目标数据,包括:
在本地的所述磁盘查找所述目标数据。
一实施例中,所述第二查找模块502在磁盘查找所述目标数据,包括:
在目标设备的所述磁盘查找所述目标数据。
一实施例中,所述第二查找模块502在磁盘查找所述目标数据,包括:
在所述磁盘的预设日志文件中查找所述目标数据,所述目标数据包括写指令。
一实施例中,所述装置还包括:
写入模块,用于将所述目标数据写入所述复制缓冲区和所述磁盘。
一实施例中,所述写入模块将所述目标数据写入所述磁盘,包括:
将所述目标数据分片写入所述磁盘。
一实施例中,所述发送模块503还用于:
当所述磁盘不存在所述目标数据时,向所述从设备发送快照数据,以使得所述从设备根据所述快照数据进行数据全量同步。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述功能模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例的装置,在从设备请求目标数据时,可以先在复制缓冲区查找目标数据,当复制缓冲区不存在目标数据时,在磁盘查找目标数据,当磁盘存在目标数据时,读取该目标数据并向从设备发送该目标数据,以使得从设备根据该目标数据进行数据增量同步。即本发明实施例中,可以将磁盘作为复制缓冲区的补充,当复制缓冲区由于存储空间有限导致数据溢出无法提供从设备请求的目标数据时,可以从磁盘获取从设备请求的目标数据,从而提高了增量同步的成功率,提高了数据同步效率;另一方面,将磁盘作为复制缓冲区的补充,不会增加内存空间的占用,减少了内存消耗。
本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例提供的数据同步方法。
本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例提供的数据同步方法。
图6示出了可以应用本发明实施例的数据同步方法或数据同步装置的示例性***架构。
如图6所示,***架构可以包括从设备601、用于执行本发明实施例的应用数据同步方法的主设备602,在一个具体的实施例中,从设备601和主设备602均可以为Redis服务器。
从设备601与主设备602之间包括网络,网络用于提供通信链路的介质,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
具体实现中,主设备602可以在复制缓冲区查找从设备601请求的目标数据;
当所述复制缓冲区不存在所述目标数据时,在磁盘查找所述目标数据;
当所述磁盘存在所述目标数据时,读取所述目标数据并向所述从设备601发送所述目标数据,以使得所述从设备601根据所述目标数据进行数据增量同步。
从设备601与主设备602之间的具体交互细节可参阅前面实施例的描述,此处不再赘述。
下面参考图7,其示出了适于用来实现本发明实施例的电子设备的计算机***700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块和/或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块和/或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一查找模块、第二查找模块和发送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:在复制缓冲区查找从设备请求的目标数据;当所述复制缓冲区不存在所述目标数据时,在磁盘查找所述目标数据;当所述磁盘存在所述目标数据时,读取所述目标数据并向所述从设备发送所述目标数据,以使得所述从设备根据所述目标数据进行数据增量同步。
根据本发明实施例的技术方案,在从设备请求目标数据时,可以先在复制缓冲区查找目标数据,当复制缓冲区不存在目标数据时,在磁盘查找目标数据,当磁盘存在目标数据时,读取该目标数据并向从设备发送该目标数据,以使得从设备根据该目标数据进行数据增量同步。即本发明实施例中,可以将磁盘作为复制缓冲区的补充,当复制缓冲区由于存储空间有限导致无法提供从设备请求的目标数据时,可以从磁盘获取从设备请求的目标数据,从而提高了增量同步的成功率,提高了数据同步效率;另一方面,将磁盘作为复制缓冲区的补充,不会增加内存空间的占用,减少了内存消耗。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
在复制缓冲区查找从设备请求的目标数据;
当所述复制缓冲区不存在所述目标数据时,在磁盘查找所述目标数据;
当所述磁盘存在所述目标数据时,读取所述目标数据并向所述从设备发送所述目标数据,以使得所述从设备根据所述目标数据进行数据增量同步。
2.根据权利要求1所述的数据同步方法,其特征在于,所述在复制缓冲区查找从设备请求的目标数据,包括:
接收所述从设备发送的第一同步请求,所述第一同步请求中包含所述目标数据的偏移量;
根据所述偏移量在所述复制缓冲区查找所述目标数据。
3.根据权利要求1所述的数据同步方法,其特征在于,所述在磁盘查找所述目标数据,包括:
接收所述从设备发送的第二同步请求,所述第二同步请求中包含所述目标数据的标识信息;
根据所述标识信息在所述磁盘查找所述目标数据。
4.根据权利要求3所述的数据同步方法,其特征在于,在磁盘查找所述目标数据之前,所述方法还包括:
向所述从设备发送同步提示,所述同步提示用于提示所述从设备根据所述标识信息请求数据同步。
5.根据权利要求1所述的数据同步方法,其特征在于,所述目标数据包括写指令,所述在磁盘查找所述目标数据,包括:
在本地的所述磁盘内的预设日志文件中查找所述目标数据;或
在目标设备的所述磁盘内的预设日志文件中查找所述目标数据。
6.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括:
当所述磁盘不存在所述目标数据时,向所述从设备发送快照数据,以使得所述从设备根据所述快照数据进行数据全量同步。
7.一种数据同步装置,其特征在于,包括:
第一查找模块,用于在复制缓冲区查找从设备请求的目标数据;
第二查找模块,用于当所述复制缓冲区不存在所述目标数据时,在磁盘查找所述目标数据;
发送模块,用于当所述磁盘存在所述目标数据时,读取所述目标数据并向所述从设备发送所述目标数据,以使得所述从设备根据所述目标数据进行数据增量同步。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6中任一所述的数据同步方法。
9.一种数据同步***,其特征在于,包括从设备和用于执行如权利要求1至6中任一所述的数据同步方法的主设备。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110185056.9A CN113885780A (zh) | 2021-02-10 | 2021-02-10 | 数据同步方法、装置、电子设备、***和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110185056.9A CN113885780A (zh) | 2021-02-10 | 2021-02-10 | 数据同步方法、装置、电子设备、***和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113885780A true CN113885780A (zh) | 2022-01-04 |
Family
ID=79013099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110185056.9A Pending CN113885780A (zh) | 2021-02-10 | 2021-02-10 | 数据同步方法、装置、电子设备、***和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113885780A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741367A (zh) * | 2022-06-13 | 2022-07-12 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置、电子设备、存储介质和程序产品 |
CN115951846A (zh) * | 2023-03-15 | 2023-04-11 | 苏州浪潮智能科技有限公司 | 数据写入方法、装置、设备及介质 |
CN116467492A (zh) * | 2023-04-23 | 2023-07-21 | 北京欧拉认知智能科技有限公司 | 一种基于图的OneID实现方法及*** |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377100A (zh) * | 2012-04-26 | 2013-10-30 | 华为技术有限公司 | 一种数据备份方法、网络节点及*** |
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和*** |
CN105468475A (zh) * | 2015-11-16 | 2016-04-06 | 北京奇虎科技有限公司 | 数据库的备份方法及备份装置 |
CN108197170A (zh) * | 2017-12-20 | 2018-06-22 | 五八有限公司 | 主从同步方法、装置、主服务器及存储介质 |
CN109062602A (zh) * | 2018-07-20 | 2018-12-21 | 乐蜜有限公司 | 一种针对应用程序的数据处理方法、装置及电子设备 |
CN109660583A (zh) * | 2017-10-12 | 2019-04-19 | 腾讯科技(上海)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN110019510A (zh) * | 2017-09-29 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种进行增量同步的方法及装置 |
CN110597452A (zh) * | 2018-06-13 | 2019-12-20 | ***通信有限公司研究院 | 存储***的数据处理方法及装置、存储服务器及存储介质 |
CN110909025A (zh) * | 2018-09-17 | 2020-03-24 | 深圳市优必选科技有限公司 | 数据库的查询方法、查询装置及终端 |
CN112114999A (zh) * | 2020-09-01 | 2020-12-22 | 阿里云计算有限公司 | 一种数据备份方法、数据恢复方法、装置及电子设备 |
-
2021
- 2021-02-10 CN CN202110185056.9A patent/CN113885780A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377100A (zh) * | 2012-04-26 | 2013-10-30 | 华为技术有限公司 | 一种数据备份方法、网络节点及*** |
CN104881494A (zh) * | 2015-06-12 | 2015-09-02 | 北京奇虎科技有限公司 | 与Redis服务器进行数据同步的方法、装置和*** |
CN105468475A (zh) * | 2015-11-16 | 2016-04-06 | 北京奇虎科技有限公司 | 数据库的备份方法及备份装置 |
CN110019510A (zh) * | 2017-09-29 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种进行增量同步的方法及装置 |
CN109660583A (zh) * | 2017-10-12 | 2019-04-19 | 腾讯科技(上海)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN108197170A (zh) * | 2017-12-20 | 2018-06-22 | 五八有限公司 | 主从同步方法、装置、主服务器及存储介质 |
CN110597452A (zh) * | 2018-06-13 | 2019-12-20 | ***通信有限公司研究院 | 存储***的数据处理方法及装置、存储服务器及存储介质 |
CN109062602A (zh) * | 2018-07-20 | 2018-12-21 | 乐蜜有限公司 | 一种针对应用程序的数据处理方法、装置及电子设备 |
CN110909025A (zh) * | 2018-09-17 | 2020-03-24 | 深圳市优必选科技有限公司 | 数据库的查询方法、查询装置及终端 |
CN112114999A (zh) * | 2020-09-01 | 2020-12-22 | 阿里云计算有限公司 | 一种数据备份方法、数据恢复方法、装置及电子设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741367A (zh) * | 2022-06-13 | 2022-07-12 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置、电子设备、存储介质和程序产品 |
CN114741367B (zh) * | 2022-06-13 | 2023-02-24 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置、电子设备、存储介质和程序产品 |
CN115951846A (zh) * | 2023-03-15 | 2023-04-11 | 苏州浪潮智能科技有限公司 | 数据写入方法、装置、设备及介质 |
CN116467492A (zh) * | 2023-04-23 | 2023-07-21 | 北京欧拉认知智能科技有限公司 | 一种基于图的OneID实现方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和*** | |
CN113885780A (zh) | 数据同步方法、装置、电子设备、***和存储介质 | |
CN109144785B (zh) | 用于备份数据的方法和装置 | |
US9075722B2 (en) | Clustered and highly-available wide-area write-through file system cache | |
CN111177159B (zh) | 一种数据处理的***、方法和数据更新设备 | |
US11392545B1 (en) | Tracking access pattern of inodes and pre-fetching inodes | |
CN111694865A (zh) | 基于分布式***的四层结构数据获取方法和装置 | |
KR20110059532A (ko) | 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들 | |
CN112948498A (zh) | 一种分布式***全局标识的生成方法和装置 | |
KR20210040864A (ko) | 파일 디렉터리 순회 방법, 장치, 기기, 매체 및 컴퓨터 프로그램 | |
CN113760847A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
CN114528255A (zh) | 元数据管理方法、电子设备及计算机程序产品 | |
CN112748866A (zh) | 一种增量索引数据的处理方法和装置 | |
WO2018064319A9 (en) | FOLLOW-UP OF INODES ACCESS SCHEMES AND INOX PREXTRACTION | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN117056123A (zh) | 数据恢复方法、装置、介质及电子设备 | |
CN110196683B (zh) | 一种操作控制的方法、装置、终端设备和介质 | |
CN111177109A (zh) | 一种删除过期键的方法和装置 | |
CN115658171A (zh) | 一种轻量级解决java分布式应用配置动态刷新的方法及*** | |
CN112395337A (zh) | 一种数据导出方法和装置 | |
US10235293B2 (en) | Tracking access pattern of inodes and pre-fetching inodes | |
CN111625500B (zh) | 文件快照方法及装置、电子设备和存储介质 | |
CN114528260A (zh) | 文件访问请求的处理方法、电子设备及计算机程序产品 | |
CN114925078A (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 |