CN114625566A - 数据容灾方法、装置、电子设备及存储介质 - Google Patents
数据容灾方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114625566A CN114625566A CN202110956706.5A CN202110956706A CN114625566A CN 114625566 A CN114625566 A CN 114625566A CN 202110956706 A CN202110956706 A CN 202110956706A CN 114625566 A CN114625566 A CN 114625566A
- Authority
- CN
- China
- Prior art keywords
- cluster
- data
- center cluster
- synchronized
- standby
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请实施例提供了一种数据容灾方法、装置、电子设备及存储介质。所述方法包括:获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群;在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群;在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。本申请用以解决现有的Redis适用性不足的技术问题。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种数据容灾方法、装置、电子设备及存储介质。
背景技术
Redis(Remote Dictionary Server,远程字典服务)作为高效率的Key-Value数据库存储系统,支持多种类型的存储方式与数据操作,被广泛应用于数据存储及缓存中。目前,针对Redis的主从模式,当主节点出现故障时,需要手动将一个从节点晋升为主节点,同时需要通知业务方变更配置,不同版本的Redis需定制化改造其源代码。并且,需要让其它从节点去复制新主节点,整个过程需要人为干预。因此,现有的Redis适用性低,且操作繁琐。
发明内容
本申请针对现有方式的缺点,提出一种数据容灾方法、装置、电子设备及存储介质,用以解决现有的Redis适用性不足的技术问题。
第一个方面,本申请实施例提供了一种数据容灾方法,适用于客户端,包括:
获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群;
在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群;
在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。
在一些实施例中,所述将所述主中心集群的数据同步到所述目标备中心集群,包括:
获取所述主中心集群的数据偏移量;
根据所述数据偏移量,计算需同步的数据偏移量;
将所述需同步的数据偏移量发送到所述主中心集群,以便于所述主中心集群返回相应的待同步数据;
将所述待同步数据写入目标备中心集群。
在一些实施例中,所述待同步数据为增量数据,所述将所述待同步数据写入目标备中心集群,包括:
对所述待同步数据和后续接收到的增量数据进行分拣,得到需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
将所述增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群写入所述增量数据集。
在一些实施例中,所述待同步数据为全量数据,所述将所述待同步数据写入目标备中心集群,包括:
分拣出后续接收到的增量数据中需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
将所述全量数据及所述需同步的增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群清空集群自身的数据,写入所述全量数据,后写入所述需同步的增量数据集。
在一些实施例中,所述状态信息包括可用状态信息和请求失败比率中的至少一种,通过如下步骤确定所述主中心集群的状态信息满足所述切换条件,包括:
获取所述主中心集群的可用状态信息,当所述主中心集群的可用状态信息为不可用时,则确定满足所述切换条件;和/或,
获取所述主中心集群的请求失败比率,当确定所述主中心集群的请求失败比率大于预设阈值时,则确定满足所述切换条件。
在一些实施例中,所述确定目标备中心集群,包括:
按照预设的切换路由规则计算出备选的备中心集群;
获取所述备选的备中心集群的可用状态信息;
将所述可用状态信息为可用的备选的备中心集群作为所述目标备中心集群。
在一些实施例中,所述将所述主中心集群切换为所述目标备中心集群,包括:
获取所述目标备中心集群的地址信息;
将所述主中心集群的地址信息更新为所述目标备中心集群的地址信息。
在一些实施例中,在所述将所述主中心集群的数据同步到所述目标备中心集群之后,所述方法还包括:
接收监控服务器广播的故障恢复指令,所述故障恢复指令包括用于将当前使用的中心集群由当前使用的备中心集群切换为所述主中心集群的恢复指令;
响应于所述故障恢复指令,确定待恢复的中心集群及其地址信息;
查询所述待恢复的中心集群的状态信息;
当所述待恢复的中心集群的可用状态信息为可用时,则当前使用的中心集群的地址信息切换为所述待恢复的中心集群的地址信息,并同步更新所述待恢复的中心集群的数据。
在一些实施例中,所述方法还包括:
在本地写入集群状态文件,所述集群状态文件标记有当前使用的中心集群及其地址信息;
当发生重启时,读取所述集群状态文件,以连接所述当前使用的中心集群。
在一些实施例中,所述客户端基于装饰模式建立。
第二个方面,本申请实施例提供了一种数据容灾装置,包括:
集群状态获取模块,用于获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群;
切换触发模块,用于在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群;
集群切换模块,用于在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。
第三个方面,本申请实施例提供了一种电子设备,包括:
处理器;
存储器,与所述处理器通信连接;
至少一个程序,被存储在所述存储器中并被配置为由所述处理器执行,所述至少一个程序被配置用于:实现上述实施例所述的数据容灾方法。
第四个方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质用于存储计算机指令,当所述计算机指令在电子设备上运行时,实现上述实施例所述的数据容灾方法。
相比于现有技术,本申请实施例提供的一种数据容灾方法、装置、电子设备及存储介质,具有如下有益效果:
所述方法包括获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群,进而在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群,从而在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。这样,首先本申请在不修改Redis底层代码的情况下,通过模拟Redis的主从复制模式实现主中心集群向多个备中心集群同步数据,相比与现有技术中修改源码方案,具有更广泛的适用性和稳定性,保证了故障操作的时效性和操作简便性。其次,本申请结合自动切换的Redis客户端实现故障转移,以及实现Redis集群多数据中心的容灾,提高了Redis集群的高可用性。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例提供的一种数据容灾方法的流程示意图;
图2为本申请实施例提供的数据同步的流程示意图;
图3为本申请实施例提供的客户端调用中心集群的处理流程示意图;
图4为本申请实施例提供的主中心集群与备中心集群切换的流程示意图;
图5为本申请实施例提供的客户端节点数据上报的流程示意图;
图6为本申请实施例提供的故障恢复的流程示意图;
图7为本申请实施例提供的由JedisCluster客户端构成的系统的流程示意图;
图8为本申请实施例提供的一种数据容灾装置的结构示意图;
图9为本申请实施例提供的一种电子设备的结构的框架示意图。
具体实施方式
下面详细描述本申请,本申请的实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的部件或具有相同或类似功能的部件。此外,如果已知技术的详细描述对于示出的本申请的特征是不必要的,则将其省略。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本申请实施例提供的一种数据容灾方法,适用于客户端,该客户端在配置时可配置多个中心集群,如配置两组中心集群,主中心集群和备中心集群。客户端分别与主中心集群、备中心集群连接。主中心集群和备中心集群中的节点可以是服务器也可以是终端。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统。客户端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等智能终端设备,但并不限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请对此不作限制。
参见图1,为本申请实施例提供的一种数据容灾方法的流程示意图,所述方法适用于客户端,所述方法包括步骤S101至S103。
S101、获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群。
在本申请中,客户端与主中心集群、备中心集群直接连接,因此可对各个中心集群中的节点进行状态监控。
S102、在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群。
需要说明的是,客户端代理多个中心集群的链接,通过在客户端配置的路由和失败重试切换规则算法进行Redis-集群的动态访问代理并且支持自定义的访问策略算法,实现在集群层面的数据分片和数据访问路由功能。在本申请中,切换条件包括主中心集群的可用状态信息为不可用,以及主中心集群的请求失败比率超过预设阈值中的至少一种。
在一具体实施例中,所述状态信息包括可用状态信息和请求失败比率中的至少一种,通过如下步骤确定所述主中心集群的状态信息满足所述切换条件,包括:
获取所述主中心集群的可用状态信息,当所述主中心集群的可用状态信息为不可用时,则确定满足所述切换条件;和/或,
获取所述主中心集群的请求失败比率,当确定所述主中心集群的请求失败比率大于预设阈值时,则确定满足所述切换条件。
在本实施例中,可选的,按中心集群的可用状态的切换规则(如上述切换条件),示例性为主中心集群状态为不可用时自动切换到其他备中心集群。其实现原理如下:客户端获取各中心集群的链接时,首先向主中心集群发出集群查询命令,以检查主中心集群的可用性信息。若确定主中心集群不可用,则客户端直接使用其他备中心集群的链接。
可选的,按中心集群的请求失败比率的切换规则,请求失败比率为失败量(即请求失败量)占总请求量的比率,具体为判断主中心集群的请求失败比率是否超过预设阈值,若是,则切换到其他备中心集群,否则,保持使用该主中心集群的链接。
因此,本实施例中客户端通过各个中心集群相连,进行各个中心集群的集群状态检查机制,以识别不可用或请求失败比率过高的中心集群,从而客户端及时自动切换到其他中心集群,实现了故障转移及多数据中心的容灾,提高了中心集群的高可用性。
在一些实施例中,所述确定目标备中心集群,包括:
按照预设的切换路由规则计算出备选的备中心集群;
获取所述备选的备中心集群的可用状态信息;
将所述可用状态信息为可用的备选的备中心集群作为所述目标备中心集群。
S103、在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。
在一些实施例中,所述将所述主中心集群的数据同步到所述目标备中心集群,包括:
获取所述主中心集群的数据偏移量;
根据所述数据偏移量,计算需同步的数据偏移量;
将所述需同步的数据偏移量发送到所述主中心集群,以便于所述主中心集群返回相应的待同步数据;
将所述待同步数据写入目标备中心集群。
在本申请中,第一方面,数据同步过程可随主中心集群数据更新而触发,每当主中心集群数据更新,所有备中心集群同步更新数据,这样在集群切换后快速实现数据同步,防止了主中心集群故障宕机无法完成故障转移,防止丢失数据。第二方面,整个数据同步过程可在主中心集群的状态信息满足切换条件时触发,即客户端判断到满足切换条件时生成切换指令,并发送至主中心集群,使得主中心集群启动数据同步流程,完成将数据同步到目标备中心集群,此时仅需针对目标备中心集群进行数据同步,降低客户端的压力,避免占用其他备中心集群的数据空间。第三方面,数据同步过程中每当主中心集群发生数据更新,将更新数据缓存于客户端中,直至在主中心集群满足切换条件时,客户端将该更新数据写入目标备中心集群,这样能防止数据丢失的同时避免占用其他备中心集群的数据空间,提高了灵活性。由此,本申请不对数据同步过程的时序性进行限定,以上三方面均在主中心集群的状态信息满足切换条件后完成数据同步,这样方可进行主备集群切换。本申请实现在不修改redis底层代码的情况下通过模拟redis主从复制的协议获取主中心集群中要同步的数据,进而按redis集群写协议将同步数据写入到要一个或者多个备中心集群中从而实现多个集群多中心部署或者多集群部署时的数据同步,实现了故障转移,防止数据丢失,能有效提高系统的稳定性和适用性。
在本实施例中,客户端配置有数据同步程序,其包括同步读程序和同步写程序。优选的,客户端采用队列的存储形式,在读取同步数据后将数据写入队列,以便于在备中心集群需同步数据时从队列中获取数据后写入,但客户端对数据的存储形式并不作限定。示例性的,参见图2,为本申请实施例提供的数据同步的流程示意图,首先同步读程序获取主中心集群中所有master节点,即同步读程序通过tcp连接到集群中所有节点,发送info指令获取节点的角色信息是否是master节点,以此检测主中心集群中所有master节点。若不是master节点时,则时隔一段时间进行探测;若是master节点时,则进行数据拉取。进一步,数据同步读程序从主中心集群中的master节点拉取同步数据,即数据同步读程序将自身伪装成slave节点(发送对应的指令端口和IP信息)。具体为,通过info指令获取当前master节点的数据偏移量,计算需同步的数据偏移量,并将需同步的数据偏移量组织成psync指令,将该psync指令发送给master节点。这样,master节点收到psync指令后推送相应的待同步数据。此外,在接收到待同步数据后直至数据同步结束前,主中心集群在该同步期间向客户端推送同步期间的增量数据,客户端接收到该增量数据后向主中心集群提交同步偏移量确认,循环以上增量数据推送处理步骤,直至数据同步结束。
在上述实施例的基础上,在一实施例中,所述待同步数据为增量数据,所述将所述待同步数据写入目标备中心集群,包括:
对所述待同步数据和后续接收到的增量数据进行分拣,得到需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
将所述增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群写入所述增量数据集。
在上述实施例的基础上,在另一实施例中,所述待同步数据为全量数据,所述将所述待同步数据写入目标备中心集群,包括:
分拣出后续接收到的增量数据中需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
将所述全量数据及所述需同步的增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群清空集群自身的数据,写入所述全量数据,后写入所述需同步的增量数据集。
示例性的,请参见图2,若主中心集群推送的待同步数据为rdb文件(全量数据),同步读程序接读取rdb文件并将文件内容发送到异步队列中的全量文件队列,并触发全量文件同步进程。进而,将后续获取到的增量数据进行分拣后写入同步队列中的增量数据同步队列中。这样,当备中心集群需要数据同步时,同步写程序先获取全量文件队列中获取全量数据,后对备中心集群进行flushall操作以清空历史数据,从而将全量数据写入到备中心集群。此外,待全量同步完成后,同步写程序从增量数据同步队列中获取增量数据,以便于写入备中心集群,完成数据同步操作。
其次,若主中心集群推送的待同步数据为增量数据,同步读程序读取实时推送过来的增量数据,可通过检测备中心集群的数据,分拣出需同步的增量数据集,以放入到异步队列中的增量数据队列中,其中,队列可以为分布式消息中间件,如kafka,activemq。这样,当备中心集群需要数据同步时,由于此时队列中未有全量数据,则同步写程序直接在增量数据队列中获取增量数据集,将该增量数据集通过redis-cluster写入协议写入到备中心集群中,完成数据同步操作。因此,在本实施例中将数据按全量数据和增量数据进行数据同步,提高了操作的灵活性和运行效率。
在一些实施例中,所述将所述主中心集群切换为所述目标备中心集群,包括:
获取所述目标备中心集群的地址信息;
将所述主中心集群的地址信息更新为所述目标备中心集群的地址信息。
在本实施例中,若当前使用的中心集群为主中心集群时,则可将主中心集群切换为备中心集群。同理的,若当前使用的中心集群为备中心集群时,则可将备中心集群切换为主中心集群。因此,当客户端检测到当前使用的中心集群满足切换条件时,获取目标备用中心集群的地址,以与该目标备用中心集群建立连接,使得提高了系统的高可用性。
优选的,若客户端配置有多个备中心集群时,则可按配置顺序将位于序列首位(最先配置)的备选的备中心集群作为目标备中心集群。
示例性的,参见图3,为本申请实施例提供的客户端调用中心集群的处理流程示意图,当客户端启动初始化时,若当前使用的中心集群为主中心集群,则获取集群状态文件,该集群状态文件标记有当前使用的中心集群及其地址信息。判断该集群状态文件是否为空,若为空,则表示未发生集群切换,直接使用主中心集群。进而,根据主中心集群的状态信息,判断主中心集群是否可用,若可用,则获取主中心集群链接(即地址信息),这样客户端与主中心集群连接,执行业务调用,以及统计调用情况。而若该集群状态文件不为空时,获取文件中标记的中心集群及其链接,进而判断该中心集群是否可用。当主中心集群不可用或集群状态文件中标记的中心集群不可用时,则发生中心集群链接切换。
其中,中心集群链接切换流程(如图3虚线框内所示)如下:按照切换路由规则计算出备中心集群及其链接,进而判断该备中心集群链接是否可用。若该备中心集群链接可用(即该备中心集群的状态为可用),则确定为目标备中心集群,更新该集群状态文件中当前使用链接为该目标备中心集群的链接,进行连接,使得通过该集群链接进行业务调用,完成主备集群切换。若该备中心集群链接不可用,则主备集群切换失败,清空该集群状态文件的内容,生成错误文件,可将该错误文件上报至监控服务器。
示例性的,参见图4,为本申请实施例提供的主中心集群与备中心集群切换的流程示意图。首先,用户通过客户端的应用程序向代理客户端发送Set命令,以访问中心集群。客户端按照路由切换规则选择可用集群(主中心集群或备中心集群)及其链接。若所选的是主中心集群时,客户端向主中心集群发送该Set命令以调用主中心集群,并返回访问数据,如状态信息、调用量等集群信息。若所选的是备中心集群,客户端向备中心集群发送该Set命令以调用备中心集群,并返回访问数据。因此,客户端将访问数据返回给应用程序,完成集群访问。
在一些实施例中,为实现客户端的监控功能,客户端通过定时上报客户端节点上的数据,为监控提供实时数据,其中,该实时数据包括但不限于当前节点、主节点信息、备节点信息、状态文件地址、切换路由规则、调用量、失败量、当前节点IP和收集上报时间等。
示例性的,参见图5,为本申请实施例提供的客户端节点数据上报的流程示意图,客户端节点在启动初始化时在后台创建一个定时上报线程,定时上报线程通过访问中心集群,执行对应访问、调用等业务逻辑,而后记录对应的统计调用信息,如调用量等信息。进一步,定时上报线程定时调用上报程序,上报程序收集对应的统计调用信息,组织成上报数据(即实时信息),将以广播形式推送上报数据,完成上报。客户端的监控程序通过订阅对应的广播集统计来自节点的上报信息,以进行状态监控。因此,本实施例通过监控客户端节点的调用集群的调用量、命中率、失败率、成功笔数、当前客户端连接情况等关键监控信息,实现了统筹客户端节点的状态监控,能有效提高集群调用的灵活性。
在一些实施例中,在所述将所述主中心集群的数据同步到所述目标备中心集群之后,所述方法还包括:
接收监控服务器广播的故障恢复指令,所述故障恢复指令包括用于将当前使用的中心集群由当前使用的备中心集群切换为所述主中心集群的恢复指令;
响应于所述故障恢复指令,确定待恢复的中心集群及其地址信息;
查询所述待恢复的中心集群的状态信息;
当所述待恢复的中心集群的可用状态信息为可用时,则当前使用的中心集群的地址信息切换为所述待恢复的中心集群的地址信息,并同步更新所述待恢复的中心集群的数据。
需要说明的是,本实施例通过向客户端发送指令的方式,实现故障恢复时客户端在不重启的情况下路由到恢复的中心上,保证了恢复的时效性和便捷性,提高了运维效,同时降低了客户端在运维和部署上的成本。示例性的,参见图6,为本申请实施例提供的故障恢复的流程示意图,在主中心集群故障恢复后,将当前使用的备中心集群切换回主中心集群。监控运维控制台通过远程控制功能发起回切流程完成客户端回切。其中,回切流程如下:客户端初始化时,创建控制消息监听,主中心集群和备中心集群各自绑定一个由监控运维控制台发出的消息订阅(managerchannel)。若订阅收到的消息为switch:sm,即用于将当前使用的中心集群由当前使用的备中心集群切换为主中心集群的恢复指令时,客户端确定待恢复的集群为主中心集群。进而,客户端查询主中心集群的状态信息,以判断主中心集群的状态信息是否可用,若是,则同步更新数据,设置当前使用链接为该主中心集群链接,并更新集群状态文件,完成由备中心集群到主中心集群的回切操作,实现故障的恢复。
优选的,在本实施例中,通过监控运维控制台发送的指令,可实现由主中心集群主动切换到备中心集群的操作。示例性的,当订阅收到的消息为switch:sm,即用于将当前使用的中心集群由主中心集群切换为备中心集群的指令时,客户端确定待切换的集群为备中心集群及其链接。进而,客户端查询该备中心集群的状态信息,以判断该备中心集群是否可用,若是,则同步更新数据,设置当前可用链接为该备中心集群链接,并更新集群状态文件。
在一些实施例中,所述方法还包括:
在本地写入集群状态文件,所述集群状态文件标记有当前使用的中心集群及其地址信息;
当发生重启时,读取所述集群状态文件,以连接所述当前使用的中心集群。
在本实施例中,为了防止主中心集群故障未恢复时客户端应用重启,导致使用的中心集群链接发生变化,通过当主中心集群或某备中心集群发生故障时,客户端自动切换时在本地写入一个集群状态文件,该文件标记有当前客户端连接的中心集群及其链接,因此当客户端发生重启时,通过读取该集群状态文件,使得保持重启前后集群链接的一致性,防止应用重启时链接的变化。
在一些实施例中,所述客户端基于装饰模式建立。
在本实施例中,目前客户端支持JAVA、python,C/C++等语言版本,其中,JAVA版本可以无缝的与Jedis相互替换,无需系统做任何改造。由此,基于装饰模式建立客户端,使得通过对客户端进行装饰以动态地扩展客户端的功能,实现客户端的功能增强。示例性的,参见图7,为本申请实施例提供的由JedisCluster客户端构成的系统的流程示意图,客户端保持两个集群链接,为主中心集群和备中心集群。通过装饰模式创建JedisAutoProxyCluster对象,继承JedisCluster(即Redis客户端)。在继承的JedisCluster对象中的方法中进行链接状态检查,主备切换等增强处理。
本申请实施例提供的一种数据容灾方法,通过获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群,进而在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群,从而在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。这样,首先本申请在不修改Redis底层代码的情况下,通过模拟Redis的主从复制模式实现主中心集群向多个备中心集群同步数据,相比与现有技术中修改源码方案,具有更广泛的适用性和稳定性,保证了故障操作的时效性和操作简便性。其次,本申请结合自动切换的Redis客户端实现Redis集群多数据中心的容灾,提高了Redis集群的高可用性。
基于同一发明构思,本申请实施例提供的一种数据容灾装置,如图8所示,包括:
集群状态获取模块201,用于获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群;
切换触发模块202,用于在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群;
集群切换模块203,用于在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。
在一些实施例中,集群切换模块包括:
主集群数据获取单元,用于获取所述主中心集群的数据偏移量;
计算单元,用于根据所述数据偏移量,计算需同步的数据偏移量;
数据反馈单元,用于将所述需同步的数据偏移量发送到所述主中心集群,以便于所述主中心集群返回相应的待同步数据;
待同步数据写入单元,用于将所述待同步数据写入目标备中心集群。
在一些实施例中,待同步数据写入单元,包括:
第一增量数据集生成单元,用于对所述待同步数据和后续接收到的增量数据进行分拣,得到需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
增量数据写入单元,用于将所述增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群写入所述增量数据集。
在一些实施例中,待同步数据写入单元,包括:
第二增量数据集生成单元,用于分拣出后续接收到的增量数据中需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
数据写入单元,用于将所述全量数据及所述需同步的增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群清空集群自身的数据,写入所述全量数据,后写入所述需同步的增量数据集。
在一些实施例中,切换触发模块包括:
第一集群切换判断单元,用于获取所述主中心集群的可用状态信息,当所述主中心集群的可用状态信息为不可用时,则确定满足所述切换条件;和/或,
第二集群切换判断单元,用于获取所述主中心集群的请求失败比率,当确定所述主中心集群的请求失败比率大于预设阈值时,则确定满足所述切换条件。
在一些实施例中,切换触发模块包括:
备选集群计算单元,用于按照预设的切换路由规则计算出备选的备中心集群;
可用状态信息获取单元,用于获取所述备选的备中心集群的可用状态信息;
目标备中心集群确定单元,用于将所述可用状态信息为可用的备选的备中心集群作为所述目标备中心集群。
在一些实施例中,集群切换模块包括:
目标备中心集群链接获取单元,用于获取所述目标备中心集群的地址信息;
链接更新单元,用于将所述主中心集群的地址信息更新为所述目标备中心集群的地址信息。
在一些实施例中,所述装置还包括:
故障恢复指令接收单元,用于接收监控服务器广播的故障恢复指令,所述故障恢复指令包括用于将当前使用的中心集群由当前使用的备中心集群切换为所述主中心集群的恢复指令;
待恢复集群确定单元,用于响应于所述故障恢复指令,确定待恢复的中心集群及其地址信息;
待恢复集群状态查询单元,用于查询所述待恢复的中心集群的状态信息;
恢复单元,用于当所述待恢复的中心集群的可用状态信息为可用时,则当前使用的中心集群的地址信息切换为所述待恢复的中心集群的地址信息,并同步更新所述待恢复的中心集群的数据。
在一些实施例中,所述装置还包括:
集群状态文件保存单元,用于在本地写入集群状态文件,所述集群状态文件标记有当前使用的中心集群及其地址信息;
客户端重启单元,用于当发生重启时,读取所述集群状态文件,以连接所述当前使用的中心集群。
在一些实施例中,所述客户端基于装饰模式建立。
本申请实施例提供的一种数据容灾装置,通过获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群,进而在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群,从而在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。这样,首先本申请在不修改Redis底层代码的情况下,通过模拟Redis的主从复制模式实现主中心集群向多个备中心集群同步数据,相比与现有技术中修改源码方案,具有更广泛的适用性和稳定性,保证了故障操作的时效性和操作简便性。其次,本申请结合自动切换的Redis客户端实现Redis集群多数据中心的容灾,提高了Redis集群的高可用性。
基于同一发明构思,本申请实施例提供了一种电子设备,该电子设备,包括:存储器和处理器。
存储器与处理器通信连接。
至少一个计算机程序,存储于存储器中,用于被处理器执行时,实现本申请实施例提供的数据容灾方法的各种可选实施方式。
本技术领域技术人员可以理解,本申请实施例提供的电子设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中。
本申请在一个可选实施例中提供了一种电子设备,如图9所示,图9所示的电子设备3000包括:处理器3001和存储器3003。其中,处理器3001和存储器3003相通信连接,如通过总线3002相连。
处理器3001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器3001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线3002可包括一通路,在上述组件之间传送信息。总线3002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线3002可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器3003可以是ROM(Read-Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead-Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选地,电子设备3000还可以包括收发器3004。收发器3004可用于信号的接收和发送。收发器3004可以允许电子设备3000与其他设备进行无线或有线通信以交换数据。需要说明的是,实际应用中收发器3004不限于一个。
可选地,电子设备3000还可以包括输入单元3005。输入单元3005可用于接收输入的数字、字符、图像和/或声音信息,或者产生与电子设备3000的用户设置以及功能控制有关的键信号输入。输入单元3005可以包括但不限于触摸屏、物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆、拍摄装置、拾音器等中的一种或多种。
可选地,电子设备3000还可以包括输出单元3006。输出单元3006可用于输出或展示经过处理器3001处理的信息。输出单元3006可以包括但不限于显示装置、扬声器、振动装置等中的一种或多种。
虽然图8示出了具有各种装置的电子设备3000,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
可选的,存储器3003用于存储执行本申请方案的应用程序代码,并由处理器3001来控制执行。处理器3001用于执行存储器3003中存储的应用程序代码,以实现本申请实施例提供的任一种数据容灾方法。
基于同一的发明构思,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现本申请实施例所提供的任一数据容灾方法。
或者,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现本申请实施例提供的数据容灾方法的各种可选实施方式。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (13)
1.一种数据容灾方法,其特征在于,适用于客户端,包括:
获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群;
在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群;
在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。
2.根据权利要求1所述的数据容灾方法,其特征在于,所述将所述主中心集群的数据同步到所述目标备中心集群,包括:
获取所述主中心集群的数据偏移量;
根据所述数据偏移量,计算需同步的数据偏移量;
将所述需同步的数据偏移量发送到所述主中心集群,以便于所述主中心集群返回相应的待同步数据;
将所述待同步数据写入目标备中心集群。
3.根据权利要求2所述的数据容灾方法,其特征在于,所述待同步数据为增量数据,所述将所述待同步数据写入目标备中心集群,包括:
对所述待同步数据和后续接收到的增量数据进行分拣,得到需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
将所述增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群写入所述增量数据集。
4.根据权利要求2所述的数据容灾方法,其特征在于,所述待同步数据为全量数据,所述将所述待同步数据写入目标备中心集群,包括:
分拣出后续接收到的增量数据中需同步的增量数据集,所述后续接收到的增量数据为所述主中心集群在发送所述待同步数据后至数据同步结束前所推送的数据;
将所述全量数据及所述需同步的增量数据集发送给所述目标备中心集群,以便于所述目标备中心集群清空集群自身的数据,写入所述全量数据,后写入所述需同步的增量数据集。
5.根据权利要求1所述的数据容灾方法,其特征在于,所述状态信息包括可用状态信息和请求失败比率中的至少一种,通过如下步骤确定所述主中心集群的状态信息满足所述切换条件,包括:
获取所述主中心集群的可用状态信息,当所述主中心集群的可用状态信息为不可用时,则确定满足所述切换条件;和/或,
获取所述主中心集群的请求失败比率,当确定所述主中心集群的请求失败比率大于预设阈值时,则确定满足所述切换条件。
6.根据权利要求5所述的数据容灾方法,其特征在于,所述确定目标备中心集群,包括:
按照预设的切换路由规则计算出备选的备中心集群;
获取所述备选的备中心集群的可用状态信息;
将所述可用状态信息为可用的备选的备中心集群作为所述目标备中心集群。
7.根据权利要求1所述的数据容灾方法,其特征在于,所述将所述主中心集群切换为所述目标备中心集群,包括:
获取所述目标备中心集群的地址信息;
将所述主中心集群的地址信息更新为所述目标备中心集群的地址信息。
8.根据权利要求7所述的数据容灾方法,其特征在于,在所述将所述主中心集群的数据同步到所述目标备中心集群之后,所述方法还包括:
接收监控服务器广播的故障恢复指令,所述故障恢复指令包括用于将当前使用的中心集群由当前使用的备中心集群切换为所述主中心集群的恢复指令;
响应于所述故障恢复指令,确定待恢复的中心集群及其地址信息;
查询所述待恢复的中心集群的状态信息;
当所述待恢复的中心集群的可用状态信息为可用时,则当前使用的中心集群的地址信息切换为所述待恢复的中心集群的地址信息,并同步更新所述待恢复的中心集群的数据。
9.根据权利要求1所述的数据容灾方法,其特征在于,所述方法还包括:
在本地写入集群状态文件,所述集群状态文件标记有当前使用的中心集群及其地址信息;
当发生重启时,读取所述集群状态文件,以连接所述当前使用的中心集群。
10.根据权利要求1所述的数据容灾方法,其特征在于,所述客户端基于装饰模式建立。
11.一种数据容灾装置,其特征在于,包括:
集群状态获取模块,用于获取各个中心集群的状态信息,所述中心集群包括当前使用的主中心集群及至少一个备中心集群;
切换触发模块,用于在所述主中心集群的状态信息满足预设的切换条件时,确定目标备中心集群;
集群切换模块,用于在将所述主中心集群的数据同步到所述目标备中心集群后,将所述主中心集群切换为所述目标备中心集群。
12.一种电子设备,其特征在于,包括:
处理器;
存储器,与所述处理器通信连接;
至少一个程序,被存储在所述存储器中并被配置为由所述处理器执行,所述至少一个程序被配置用于:实现如权利要求1至10中任一项所述的数据容灾方法。
13.一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储计算机指令,当所述计算机指令在电子设备上运行时,实现如上述权利要求1至10中任一项所述的数据容灾方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110956706.5A CN114625566A (zh) | 2021-08-19 | 2021-08-19 | 数据容灾方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110956706.5A CN114625566A (zh) | 2021-08-19 | 2021-08-19 | 数据容灾方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114625566A true CN114625566A (zh) | 2022-06-14 |
Family
ID=81896862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110956706.5A Pending CN114625566A (zh) | 2021-08-19 | 2021-08-19 | 数据容灾方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114625566A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116244040A (zh) * | 2023-03-10 | 2023-06-09 | 安超云软件有限公司 | 一种主备容器集群系统及其数据同步方法、电子设备 |
CN117176743A (zh) * | 2023-11-03 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备、可读存储介质及程序产品 |
-
2021
- 2021-08-19 CN CN202110956706.5A patent/CN114625566A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116244040A (zh) * | 2023-03-10 | 2023-06-09 | 安超云软件有限公司 | 一种主备容器集群系统及其数据同步方法、电子设备 |
CN116244040B (zh) * | 2023-03-10 | 2024-05-03 | 安超云软件有限公司 | 一种主备容器集群系统及其数据同步方法、电子设备 |
CN117176743A (zh) * | 2023-11-03 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备、可读存储介质及程序产品 |
CN117176743B (zh) * | 2023-11-03 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备、可读存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379461B2 (en) | Multi-master architectures for distributed databases | |
CN108280080B (zh) | 一种数据同步方法、装置以及电子设备 | |
CN111368002A (zh) | 一种数据处理方法、系统、计算机设备和存储介质 | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
US20100106915A1 (en) | Poll based cache event notifications in a distributed cache | |
US10114848B2 (en) | Ensuring the same completion status for transactions after recovery in a synchronous replication environment | |
CN111177161B (zh) | 数据处理方法、装置、计算设备和存储介质 | |
EP3926485A1 (en) | Systems and methods for adaptive data replication | |
CN114625566A (zh) | 数据容灾方法、装置、电子设备及存储介质 | |
WO2017036332A1 (zh) | 一种基于分布式系统的灰度发布方法、客户端及平台 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN113051110A (zh) | 集群切换方法、装置及设备 | |
EP3087483A1 (en) | System and method for supporting asynchronous invocation in a distributed data grid | |
US20200403850A1 (en) | Facilitating resilient and fault tolerant asynchronous messaging | |
CN114900449B (zh) | 一种资源信息管理方法、系统及装置 | |
CN114130035A (zh) | 一种用户匹配方法、装置、设备及存储介质 | |
US20090106781A1 (en) | Remote call handling methods and systems | |
CN114138475A (zh) | 一种数据传输负载均衡方法、装置、设备及存储介质 | |
CN116016555A (zh) | 一种消息同步方法、装置、设备及计算机存储介质 | |
US11381642B2 (en) | Distributed storage system suitable for sensor data | |
CN113297516A (zh) | 客户交互界面生成方法、装置和电子设备 | |
CN113032477A (zh) | 基于gtid的长距离数据同步方法、装置及计算设备 | |
CN112685486A (zh) | 数据库集群的数据管理方法、装置、电子设备及存储介质 | |
CN113472469B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN115051911B (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 |