CN117874127A - 一种Redis内核解决异地多活数据同步回环的方法与装置 - Google Patents

一种Redis内核解决异地多活数据同步回环的方法与装置 Download PDF

Info

Publication number
CN117874127A
CN117874127A CN202311712702.8A CN202311712702A CN117874127A CN 117874127 A CN117874127 A CN 117874127A CN 202311712702 A CN202311712702 A CN 202311712702A CN 117874127 A CN117874127 A CN 117874127A
Authority
CN
China
Prior art keywords
data center
command
data
redis
file
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
Application number
CN202311712702.8A
Other languages
English (en)
Inventor
张国豪
吴小文
杨焕填
石方波
毛刘刚
陈国锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202311712702.8A priority Critical patent/CN117874127A/zh
Publication of CN117874127A publication Critical patent/CN117874127A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出一种Redis内核解决异地多活数据同步回环的方法与装置,用于解决原生Redis在异地多活场景下数据同步时存在的回环问题,属于数据库领域。本发明通过修改Redis内核,将RESP协议命令修改为操作信息命令和实际操作命令两部分,用于在不同数据中心之间进行数据同步时避免回环;通过监测平均每秒的同步记录数,延迟状态等指标,实现不同数据中心之间的数据同步状态检测与监控,异常修复等。本发明从底层解决了数据同步的回环问题,提高了数据一致性和可靠性,同时提高了数据同步的效率。

Description

一种Redis内核解决异地多活数据同步回环的方法与装置
技术领域
本发明涉及一种Redis内核解决异地多活数据同步回环的方法与装置,属于数据库领域。
背景技术
随着云计算和大数据技术的发展,分布式缓存系统在处理大规模、高并发的数据请求中扮演着至关重要的角色。在这种背景下,异地多活(Geo-Distributed Active-Active)数据中心架构成为确保高可用性、灾难恢复能力和负载均衡的关键。这种架构涉及在不同地理位置建立多个数据中心,每个中心都能独立处理请求并支持整体业务运行。然而,这也带来了数据同步回环的问题。如原生Redis在处理跨多个数据中心的同步任务时,当数据中心集群A向数据中心集群B同步命令setkey value时,集群B写入该命令,接着集群B的同步程序向集群C发送当前变更命令;同理集群C收到命令并写入后向集群A同步;以此类推,这个数据变更同步会在多个数据中心间无限循环,形成回环问题,这不仅影响了系统性能,也增加了数据一致性维护的复杂度。因此,开发能够有效管理和同步分布式数据中心中的数据,同时避免数据回环问题的解决方案,成为了提升分布式缓存系统效率的关键。
上述背景技术的现存问题主要包括数据同步效率低下、无法有效避免数据回环和缺乏实时监控与管理机制。对此,本发明提供了基于Redis内核的改进方法和相应装置,以解决分布式缓存系统中的这些关键问题。通过修改原生Redis的RESP协议并引入新的数据同步机制,本发明不仅解决了数据回环问题,而且提供了丰富的监控指标,有助于实现更有效的数据同步状态监测、管理和异常修复,从而提高了整体系统的稳定性和效率。
发明内容
本发明提出了一种Redis内核解决异地多活数据同步回环的方法与装置,通过修改Redis内核,将RESP协议命令修改为操作信息命令和实际操作命令两部分,用于在不同数据中心之间进行数据同步时避免回环的判断;通过监测平均每秒的同步记录数,延迟状态等指标,实现不同数据中心之间的数据同步状态检测与监控,异常修复等。本发明从底层解决了数据同步的回环问题,提高了数据一致性和可靠性,同时提高了数据同步的效率,本发明是采用下述具体技术方案实现的。
一种Redis内核解决异地多活数据同步回环的方法,包括以下具体步骤:
将Redis的RESP协议修改为为操作信息命令和实际操作命令两部分,其中所述操作信息命令包括包括:操作ID、时间戳、数据中心ID和源数据中心ID,所述实际操作命令包括标准RESP协议格式的Redis命令;
当接收其他数据中心的RESP协议命令时,解析所述RESP协议命令中的源数据中心ID,并与当前数据中心ID比较,若相同,则忽略所述RESP协议命令,若不同,则执行所述RESP协议命令中的写操作;
当执行写操作后,将所述修改后的RESP协议格式的命令记录到AOF文件中;
当所述数据中心发生写操作变更时,按照修改后的RESP协议格式,将写操作命令同步到其他数据中心;
在数据同步过程中,监控并统计所述操作信息命令中的信息。
优选地,所述操作ID是按照时间顺序和数据中心ID生成的唯一标识符,用于标识每个操作命令;
优选地,所述时间戳用于记录操作发生的时间;
优选地,所述数据中心ID是所述数据中心的唯一ID;
优选地,所述源数据中心ID用于标识命令的起始数据中心。
优选地,在数据中心的Redis服务第一次启动时生成所述数据中心ID,并记录到rdb文件头部。
优选地,当数据中心执行保存操作时,将所述数据中心ID与所述操作ID一起写入rdb文件头部。
优选地,当数据中心重启或发生故障恢复时,判断AOF文件是否存在,若存在,则从所述AOF文件中提取所述数据中心ID和所述操作ID,若不存在,则从rdb文件中提取所述数据中心ID和所述操作ID。
优选地,当数据中心重启或发生故障恢复时,若AOF文件和rdb同时存在,则从所述AOF文件中提取所述操作信息命令和实际操作命令,从rdb文件中提取所述数据中心ID和所述操作ID。
优选地,所述监控信息包括平均每秒同步记录数、数据同步延迟状况、各数据中心间的同步流量情况。
一种Redis内核解决异地多活数据同步回环的装置,包括以下模块:
数据接收模块:用于接收其他数据中心发来的RESP协议命令,并解析所述命令中的源数据中心ID;
判断模块:用于判断所述解析出的源数据中心ID与当前数据中心ID是否相同,若相同,则忽略所述RESP协议命令,若不同,则执行所述RESP协议中的实际操作命令;
操作信息生成模块:用于生成操作信息命令中的操作ID、时间戳、数据中心ID和源数据中心ID;
命令持久化模块,用于在执行写操作后,将所述操作信息命令中和实际操作命令记录到AOF文件中;
数据同步模块:当本地数据中心发生写操作变更时,将所述操作信息命令中和实际操作命令同步到其他数据中心;
状态监控模块:用于监控数据同步过程中的指标,包括平均每秒同步记录数、数据同步延迟状况和各数据中心间的同步流量。
优选地,所述操作信息生成模块生成操作信息命令包括以下步骤:
当数据中心首次启动Redis服务时,所述操作信息生成模块负责生成唯一的数据中心ID并将其持久化存储在rdb文件的头部;
当数据中心执行保存操作时,所述操作信息生成模块将所述数据中心ID与所述操作ID一起写入rdb文件头部。
优选地,所述操作信息生成模块还包括:
当数据中心重启或发生故障恢复时,判断AOF文件是否存在,若存在,则从所述AOF文件中提取所述数据中心ID和所述操作ID,若不存在,则从rdb文件中提取所述数据中心ID和所述操作ID;若AOF文件和rdb同时存在,则从所述AOF文件中提取所述操作信息命令和实际操作命令,从rdb文件中提取所述数据中心ID和所述操作ID。
与现有技术相比,本发明所达到的有益效果:
1.本发明通过在原生Redis内核级别上的改动,实现了与RESP协议的深层兼容性,解决了Redis在异地多活数据同步场景中面临的数据回环问题,提供了一个不依赖于外部附加组件的解决方案;
2.本发明通过在原生Redis内核级别上的改动,丰富了可用于数据同步过程的监控指标,使得不同数据中心之间的数据同步状态可以被更加有效地跟踪和评估,同时也便于在出现异常情况时进行迅速的诊断和修复。
附图说明
图1所示为改造后的RESP协议命令格式图;
图2所示为数据中心A的接收来自客户端的请求流程图;
图3所示为数据中心A的接收来自其他数据中心的请求流程图;
图4所示为数据中心A发送增量数据给其他数据中心的流程图;
图5所示为数据同步模块示意图。
具体实施方式
需要说明的是:此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
下面通过附图以及具体实施例对本发明技术方案做详细地说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符"/",一般表示前后关联对象是一种“或”的关系。
实施例1
本实施例介绍一种Redis内核解决异地多活数据同步回环的方法,包括以下步骤:
首先,将传统的Redis RESP协议中的命令格式进行改造,改造后的格式包括操作信息命令(opinfoCommand)和实际操作命令(realCommand),操作信息命令包含操作ID(opid)、时间戳(timestamp)、数据中心ID(serverId),以及源数据中心ID(srcId);实际操作命令为Redis的正常操作命令,如set y 1。通过增加操作信息命令得每个命令都具有详细的上下文信息,便于跟踪和管理。在数据中心执行完一个写命令之后,将改造写命令写到aof文件中。
如图2所示,当数据中心A接收来自客户端的请求时,系统会判断是否是写操作(如set、update等)。如果是,数据中心A的操作ID(opid)加1,并记录相关信息,相关信息包括当前数据中心A的opid、当前时间戳(timestamp)、数据中心A的serverId以及作为源ID的serverId,再加上原始命令,如SET x 1,并将这些信息记录到AOF日志中。如果不是写操作,则系统继续处理该操作。
如图3所示,当数据中心A接收其他数据中心的增量数据时,解析命令中的opinfoCommand,以避免数据回环。首先,系统判断srcId是否为数据中心A的serverId。如果是,则忽略该增量数据;如果不是,执行该命令并记录相关信息到aof日志中,相关信息包括保持opid、timestamp、srcId,并将serverId改为数据中心A的serverId,以标识命令的来源。
如图4所示,在数据中心A需要发送增量数据给其他数据中心时,需要判断srcId是否为数据中心A的serverId来避免数据回环。如果否,则发送整个完整的命令到其他数据中心,完整的命令包括操作信息命令和实际操作命令。
此外,数据中心在第一次初始化时会生成唯一的serverId并存储在rdb文件的头部。在执行save或bgsave操作时,会将serverId和最新的opid写入rdb文件头部。在数据中心重启或进行全量同步时,如果存在aof文件,则从中提取serverId和opid回写到内存中;如果没有aof文件,从rdb文件中提取并回写到内存中;在混合持久化情况下,根据aof文件中的记录,将serverId和opid回写到内存中。
实施例2
一种Redis内核解决异地多活数据同步回环的装置,包括以下模块:
接收模块;
判断模块;
操作信息生成模块;
命令持久化模块;
数据同步模块。
数据接收模块负责接收其他数据中心发来的RESP协议命令,并解析命令中的源数据中心ID(srcId)。判断模块用于比较解析出的srcId与当前数据中心ID,并根据比较结果决定是否执行该命令。操作信息生成模块生成包含操作ID、时间戳、数据中心ID和源数据中心ID的操作信息命令。在数据中心第一次启动Redis服务时,该模块负责生成唯一的数据中心ID并将其存储在rdb文件中。命令持久化模块在执行写操作后,将操作信息命令和实际操作命令记录到AOF文件中。如图5所示,数据同步模块负责将本地数据中心的写操作变更同步到其他数据中心。
此外,装置还包括一个状态监控模块,用于监控数据同步过程中的关键指标,如平均每秒同步记录数、数据同步延迟状况和各数据中心间的同步流量。该模块可实现对不同数据中心之间的数据同步状态的检测与监控,以及异常修复等功能。
操作信息命令包含操作ID(opid)、时间戳(timestamp)、数据中心ID(serverId),以及源数据中心ID(srcId)。这种修改使得每个命令都具有详细的上下文信息,便于跟踪和管理。
上述各模块的具体功能实现参考实施例1方法中的相关内容,不予赘述。
综上实施例,本发明带来的有益效果如下:
本发明通过在原生Redis内核级别上的改动,实现了与RESP协议的深层兼容性,解决了Redis在异地多活数据同步场景中面临的数据回环问题,提供了一个不依赖于外部附加组件的解决方案;本发明通过在原生Redis内核级别上的改动,丰富了可用于数据同步过程的监控指标,使得不同数据中心之间的数据同步状态可以被更加有效地跟踪和评估,同时也便于在出现异常情况时进行迅速的诊断和修复。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (10)

1.一种Redis内核解决异地多活数据同步回环的方法,其特征在于,包括:
将基于RESP协议的Redis命令修改为为操作信息命令和实际操作命令两部分,其中所述操作信息命令包括包括:操作ID、时间戳、数据中心ID和源数据中心ID,所述实际操作命令包括标准RESP协议格式的Redis命令;
当接收其他数据中心的修改后的RESP协议命令时,解析所述RESP协议命令中的源数据中心ID,并与当前数据中心ID比较,若相同,则忽略所述RESP协议命令,若不同,则执行所述RESP协议命令中的写操作;
当执行写操作后,将所述修改后的RESP协议格式的命令记录到AOF文件中;
当所述数据中心发生写操作变更时,按照所述修改后的RESP协议格式,将写操作命令同步到其他数据中心;
在数据同步过程中,监控并统计所述操作信息命令中的信息。
2.根据权利要求1所述的一种Redis内核解决异地多活数据同步回环的方法,其特征在于,包括:
所述操作ID是按照时间顺序和数据中心ID生成的唯一标识符,用于标识每个操作命令;
所述时间戳用于记录操作发生的时间;
所述数据中心ID是所述数据中心的唯一ID;
所述源数据中心ID用于标识命令的起始数据中心。
3.根据权利要求1所述的一种Redis内核解决异地多活数据同步回环的方法,其特征在于,在所述数据中心的Redis服务第一次启动时生成所述数据中心ID,并记录到rdb文件头部。
4.根据权利要求1所述的一种Redis内核解决异地多活数据同步回环的方法,其特征在于,当所述数据中心执行保存操作时,将所述数据中心ID与所述操作ID一起写入rdb文件头部。
5.根据权利要求1所述的一种Redis内核解决异地多活数据同步回环的方法,其特征在于,当所述数据中心重启或发生故障恢复时,判断所述AOF文件是否存在,若存在,则从所述AOF文件中提取所述数据中心ID和所述操作ID,若不存在,则从所述rdb文件中提取所述数据中心ID和所述操作ID。
6.根据权利要求1所述的一种Redis内核解决异地多活数据同步回环的方法,其特征在于,当数据中心重启或发生故障恢复时,若所述AOF文件和所述rdb同时存在,则从所述AOF文件中提取所述操作信息命令和实际操作命令,从rdb文件中提取所述数据中心ID和所述操作ID。
7.根据权利要求1所述的一种Redis内核解决异地多活数据同步回环的方法,其特征在于,所述监控信息包括平均每秒同步记录数、数据同步延迟状况、各数据中心间的同步流量情况。
8.一种Redis内核解决异地多活数据同步回环的装置,利用权利要求1所述的一种Redis内核解决异地多活数据同步回环的方法,其特征在于,包括以下模块:
数据接收模块:用于接收其他数据中心发来的RESP协议命令,并解析所述命令中的源数据中心ID;
判断模块:用于判断所述解析出的源数据中心ID与当前数据中心ID是否相同,若相同,则忽略所述RESP协议命令,若不同,则执行所述RESP协议中的实际操作命令;
操作信息生成模块:用于生成操作信息命令中的操作ID、时间戳、数据中心ID和源数据中心ID;
命令持久化模块,用于在执行写操作后,将所述操作信息命令中和实际操作命令记录到AOF文件中;
数据同步模块:当本地数据中心发生写操作变更时,将所述操作信息命令中和实际操作命令同步到其他数据中心;
状态监控模块:用于监控数据同步过程中的指标,包括平均每秒同步记录数、数据同步延迟状况和各数据中心间的同步流量。
9.根据权利要求8所述一种Redis内核解决异地多活数据同步回环的装置,其特征在于,所述操作信息生成模块生成操作信息命令包括以下步骤:
当数据中心首次启动Redis服务时,所述操作信息生成模块负责生成唯一的数据中心ID并将其持久化存储在rdb文件的头部;
当数据中心执行保存操作时,所述操作信息生成模块将所述数据中心ID与所述操作ID一起写入rdb文件头部。
10.根据权利要求8所述一种Redis内核解决异地多活数据同步回环的装置,其特征在于,所述操作信息生成模块还包括:
当数据中心重启或发生故障恢复时,判断AOF文件是否存在,若存在,则从所述AOF文件中提取所述数据中心ID和所述操作ID,若不存在,则从rdb文件中提取所述数据中心ID和所述操作ID;若AOF文件和rdb同时存在,则从所述AOF文件中提取所述操作信息命令和实际操作命令,从rdb文件中提取所述数据中心ID和所述操作ID。
CN202311712702.8A 2023-12-13 2023-12-13 一种Redis内核解决异地多活数据同步回环的方法与装置 Pending CN117874127A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311712702.8A CN117874127A (zh) 2023-12-13 2023-12-13 一种Redis内核解决异地多活数据同步回环的方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311712702.8A CN117874127A (zh) 2023-12-13 2023-12-13 一种Redis内核解决异地多活数据同步回环的方法与装置

Publications (1)

Publication Number Publication Date
CN117874127A true CN117874127A (zh) 2024-04-12

Family

ID=90587460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311712702.8A Pending CN117874127A (zh) 2023-12-13 2023-12-13 一种Redis内核解决异地多活数据同步回环的方法与装置

Country Status (1)

Country Link
CN (1) CN117874127A (zh)

Similar Documents

Publication Publication Date Title
WO2019154394A1 (zh) 分布式数据库集群系统、数据同步方法及存储介质
US11797489B2 (en) System and method for using local storage to emulate centralized storage
WO2018177107A1 (zh) 数据迁移方法、迁移服务器及存储介质
US9116903B2 (en) Method and system for inserting data records into files
JP2022095645A (ja) 異種ターゲットに対して使用するために分散型データソースからの変更データをキャプチャするためのシステムおよび方法
CN110442560B (zh) 一种日志重演方法、装置、服务器和存储介质
CN113396407A (zh) 用于利用区块链技术扩充数据库应用的系统和方法
US7801846B2 (en) Generating log sequence identifiers to apply a transaction to a storage system
US20150213100A1 (en) Data synchronization method and system
US20120246116A1 (en) System and method for data replication between heterogeneous databases
US9098439B2 (en) Providing a fault tolerant system in a loosely-coupled cluster environment using application checkpoints and logs
CN108628717A (zh) 一种数据库系统及监控方法
US11748215B2 (en) Log management method, server, and database system
CN105635311A (zh) 一种云管理平台中资源池信息同步的方法
US8527454B2 (en) Data replication using a shared resource
EP4170509A1 (en) Method for playing back log on data node, data node, and system
US20210165760A1 (en) Managing Dependent Delete Operations among Data Stores
WO2017181430A1 (zh) 分布式系统的数据库复制方法及装置
CN112241437A (zh) 数据库多主同步的回环控制方法、装置、设备及存储介质
CN111651302A (zh) 分布式数据库备份方法,装置及系统
CN114116665A (zh) 数据库中并行写入事务日志以提升处理效率的方法
WO2021082925A1 (zh) 一种交易处理的方法及装置
CN111404737B (zh) 一种容灾处理方法以及相关装置
CN115904817A (zh) 分布式数据库并行回放方法、装置、电子设备和存储介质
CN117874127A (zh) 一种Redis内核解决异地多活数据同步回环的方法与装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination