数据同步方法、计算设备及计算机存储介质技术

技术编号:23024949 阅读:21 留言:0更新日期:2020-01-03 16:52
本发明专利技术公开了一种数据同步方法、计算设备及计算机存储介质。方法包括:利用预设写入命令对客户端发送的数据写入请求进行封装处理;根据封装处理后的数据写入请求,调用第一写线程,将数据写操作记录至第一机房的Redis缓存区中;调用第二写线程,将Redis缓存区中的数据写操作落盘到磁盘中的日志文件,并更新日志文件的文件偏移量;基于包含有文件偏移量的预设读命令,调用读线程读取日志文件中数据写操作,利用机房间建立的同步链路将读取的数据写操作同步给第二机房;基于预设同步命令,将同步的数据写操作对应的数据写入第二机房的Redis数据库,两个机房间基于日志文件进行数据同步,无需每次都从数据开始进行同步,还实现了数据的及时同步,节省了资源。

Data synchronization method, computing equipment and computer storage medium

【技术实现步骤摘要】
数据同步方法、计算设备及计算机存储介质
本专利技术涉及数据处理
,具体涉及一种数据同步方法、计算设备及计算机存储介质。
技术介绍
Redis数据库是一种内存型数据库,因此,从Redis数据库读数据或者将数据写入到Redis数据库的速度都非常快,但是,也由于是内存型数据库,数据写入到Redis数据库后并不会记录日志文件,现有的以Redis数据库所搭建的机房在进行机房间数据同步时,需要先在机房间之间建立机房专线,然后通过机房专线实现机房间的数据同步,在数据同步过程中,很可能由于各种原因导致机房专线断开,进而导致同步中断。在机房专线重连恢复之后,由于无法获知已经同步了哪些数据,就需要重新进行数据同步,即,将全部的数据再次同步,这样就会造成资源浪费,而且当一个机房内存在多个Redis数据库中的数据需要同步时,就会出现严重的延迟现象。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的数据同步方法、计算设备及计算机存储介质。根据本专利技术的一个方面,提供了一种数据同步方法,包括:利用预设写入命令对客户端发送的数据写入请求进行封装处理;根据封装处理后的数据写入请求,调用第一写线程,将数据写操作记录至第一机房的Redis缓存区中;调用第二写线程,将Redis缓存区中的数据写操作落盘到磁盘中的日志文件,并更新日志文件的文件偏移量;基于包含有文件偏移量的预设读命令,调用读线程读取日志文件中数据写操作,利用机房间建立的同步链路将读取的数据写操作同步给第二机房;基于预设同步命令,将所同步的数据写操作对应的数据写入至第二机房的Redis数据库。根据本专利技术的另一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;存储器用于存放至少一可执行指令,可执行指令使处理器执行以下操作:利用预设写入命令对客户端发送的数据写入请求进行封装处理;根据封装处理后的数据写入请求,调用第一写线程,将数据写操作记录至第一机房的Redis缓存区中;调用第二写线程,将Redis缓存区中的数据写操作落盘到磁盘中的日志文件,并更新日志文件的文件偏移量;基于包含有文件偏移量的预设读命令,调用读线程读取日志文件中数据写操作,利用机房间建立的同步链路将读取的数据写操作同步给第二机房;基于预设同步命令,将所同步的数据写操作对应的数据写入至第二机房的Redis数据库。根据本专利技术的又一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行以下操作:利用预设写入命令对客户端发送的数据写入请求进行封装处理;根据封装处理后的数据写入请求,调用第一写线程,将数据写操作记录至第一机房的Redis缓存区中;调用第二写线程,将Redis缓存区中的数据写操作落盘到磁盘中的日志文件,并更新日志文件的文件偏移量;基于包含有文件偏移量的预设读命令,调用读线程读取日志文件中数据写操作,利用机房间建立的同步链路将读取的数据写操作同步给第二机房;基于预设同步命令,将所同步的数据写操作对应的数据写入至第二机房的Redis数据库。根据本专利技术提供的方案,利用预设写入命令对客户端发送的数据写入请求进行封装处理;根据封装处理后的数据写入请求,调用第一写线程,将数据写操作记录至第一机房的Redis缓存区中;调用第二写线程,将Redis缓存区中的数据写操作落盘到磁盘中的日志文件,并更新日志文件的文件偏移量;基于包含有文件偏移量的预设读命令,调用读线程读取日志文件中数据写操作,利用机房间建立的同步链路将读取的数据写操作同步给第二机房;基于预设同步命令,将所同步的数据写操作对应的数据写入至第二机房的Redis数据库。基于本专利技术提供的方案,使得基于Redis数据库所搭建的两个机房能够通过记录到日志文件中的数据写操作进行数据同步,从而无需每次都从数据开始进行同步,还实现了数据的及时同步,节省资源,解决了由于Redis数据库是内存型数据库,数据直接写入到Redis数据库而不会记录日志文件导致现有方案无法基于日志文件进行数据同步的问题;另外,本方案是通过调用第一写线程、第二写线程、读线程来实现数据同步,既保证了内存型数据库处理速度快的优点,又提升了数据同步效率。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的数据同步方法的流程示意图;图2示出了根据本专利技术另一个实施例的数据同步方法的流程示意图;图3示出了根据本专利技术一个实施例的计算设备的结构示意图。具体实施方式下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术的范围完整的传达给本领域的技术人员。图1示出了根据本专利技术一个实施例的数据同步方法的流程示意图。如图1所示,该方法包括以下步骤:步骤S101,利用预设写入命令对客户端发送的数据写入请求进行封装处理。通常客户端对机房的Redis数据库所执行的操作一般是写数据和读数据,即,将数据写入到Redis数据库,以及从Redis数据库读取数据。在现有技术中,在接收到客户端发送的数据写入请求时,仅是执行将数据写入到数据库的操作,由于现有基于Redis数据库所搭建的机房没有日志文件的概念,因此,不会执行将数据写操作记录到日志文件的操作。本实施例为了能够实现基于Redis数据库所搭建的机房间的数据同步,在实现数据同步时,新增了几个Redis命令,其中,预设写入命令就是其中一个新增命令。具体地,在接收到客户端发送的数据写入请求时,并不是立即根据该数据写入请求执行数据写入操作,而是对该数据写入请求进行了相应的处理,例如,利用预设写入命令对客户端发送的数据写入请求进行封装处理。预设写入命令是为了能够实现数据写操作记录到日志文件中而增设的命令,经过预设写入命令封装处理后的数据写入请求是一个新的数据写入请求,封装处理后的数据写入请求在保留了原有数据写入要求外,还被赋予了其它数据处理要求,例如,记录日志文件。在本实施例中,利用预设写入命令对客户端发送的数据写入请求进行封装处理可以是在数据写入请求的前面增加一个预设前缀,例如,WITHDQ,这里仅是举例说明,不具有任何限定作用,本领域技术人员可以根据实际需求设置增加不同的前缀,当然,本文档来自技高网...

【技术保护点】
1.一种数据同步方法,包括:/n利用预设写入命令对客户端发送的数据写入请求进行封装处理;/n根据封装处理后的数据写入请求,调用第一写线程,将数据写操作记录至第一机房的Redis缓存区中;调用第二写线程,将Redis缓存区中的数据写操作落盘到磁盘中的日志文件,并更新日志文件的文件偏移量;/n基于包含有文件偏移量的预设读命令,调用读线程读取日志文件中数据写操作,利用机房间建立的同步链路将读取的数据写操作同步给第二机房;/n基于预设同步命令,将所同步的数据写操作对应的数据写入至第二机房的Redis数据库。/n

【技术特征摘要】
1.一种数据同步方法,包括:
利用预设写入命令对客户端发送的数据写入请求进行封装处理;
根据封装处理后的数据写入请求,调用第一写线程,将数据写操作记录至第一机房的Redis缓存区中;调用第二写线程,将Redis缓存区中的数据写操作落盘到磁盘中的日志文件,并更新日志文件的文件偏移量;
基于包含有文件偏移量的预设读命令,调用读线程读取日志文件中数据写操作,利用机房间建立的同步链路将读取的数据写操作同步给第二机房;
基于预设同步命令,将所同步的数据写操作对应的数据写入至第二机房的Redis数据库。


2.根据权利要求1所述的方法,其中,所述预设同步命令包含第一机房的机房标识及文件偏移量;
在将所同步的数据写操作对应的数据写入至第二机房的Redis数据库之后,所述方法还包括:记录已同步的数据写操作对应的文件偏移量及第一机房的机房标识。


3.根据权利要求2所述的方法,其中,所述方法还包括:若机房间建立的同步链路断开导致同步失败,则从断点处再次执行同步操作直至同步成功。


4.根据权利要求3所述的方法,其中,所述基于预设同步命令,将所同步的数据写操作对应的数据写入至第二机房的Redis数据库进一步包括:
检测第二机房记录的文件偏移量与预设同步命令携带的文件偏移量是否一致;
若预设同步命令携带的文件偏移量小于第二机房记录的文件偏移量,则丢弃所同步的数据写操作;
若预设同步命令携带的文件偏移量大于第二机房记录的文件偏移量,则将所同步的数据写操作对应的数据写入至第二机房的Redis数据库。


5.根据权利要求1-4中任一项所述的方法,其中,所述方法还包括:依据包含文件偏移量的预设删除命令,删除第一机房的日志文件中与所述文件偏移量对应的数据写操作。


6.根据权利要求1-5中任一项所述的方法,其中,在利用预设写入命令对客户端发送的数据写入请求进行封装处理之后,所述方法还包括:根据封装处理后的数据写...

【专利技术属性】
技术研发人员:贺鹏飞
申请(专利权)人:掌阅科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1