本技术涉及计算机与软件开发领域,尤其涉及一种数据同步方法和多活系统。
背景技术:
1、目前众多企业采用高可用系统架构为关键业务提供全天的不间断服务,保障业务稳定和持续的运转。然而在一些极端场景中,可能所有服务器都出现故障,例如机房断电、火灾和地震等不可抗因素导致系统所有服务都故障,从而导致业务整体瘫痪。即使在其他地区存有备份,把备份业务系统全部恢复到能够正常提供业务,需要花费比较长的时间。
2、同时,随着用户规模的增长,企业也会面临高并发业务和海量数据存储的挑战,传统的单机房在机器容量上存在瓶颈。因此,现有的高可用系统架构存在数据同步不及时导致的抗风险能力较弱的问题。
技术实现思路
1、本技术的目的旨在至少能解决上述的技术缺陷之一,特别是现有的高可用系统架构存在数据同步不及时导致的抗风险能力较弱的技术缺陷。
2、第一方面,本技术提供了一种数据同步方法,应用于多活系统,所述多活系统包括多个多活数据中心,所述多活数据中心部署于多活架构,所述多个多活数据中心包括第一数据中心和第二数据中心,所述方法包括:
3、接收客户端请求,并按照预设分配规则确定用于响应所述客户端请求的所述第一数据中心;
4、根据所述第一数据中心的流量日志,判断所述第一数据中心的流量状态是否正常;
5、若所述第一数据中心的流量状态正常,则解析所述客户端请求中数据库访问指令的读写操作类型,并在所述读写操作类型为写操作类型的情况下,同步更新设于所述第一数据中心的数据库的数据信息和设于所述第二数据中心的数据库的数据信息;
6、若所述第一数据中心的流量状态异常,则关闭所述第一数据中心的所有数据库,并在确定所述第二数据中心的流量状态正常的情况下,将所述第一数据中心的所述客户端请求分配到所述第二数据中心。
7、在其中一个实施例中,所述若所述第一数据中心的流量状态异常,则关闭所述第一数据中心的所有数据库,并在确定所述第二数据中心的流量状态正常的情况下,将所述第一数据中心的所述客户端请求分配到所述第二数据中心的步骤,包括:
8、获取所述第一数据中心和所述第二数据中心的域名;
9、当所述第一数据中心的流量状态异常,且所述第二数据中心的流量状态正常时,调整所述第一数据中心和所述第二数据中心的域名权重,以下线所述第一数据中心的域名;
10、基于调整后的所述第一数据中心和所述第二数据中心的域名权重,将所述第一数据中心的所述客户端请求分配到所述第二数据中心。
11、在其中一个实施例中,所述多活数据中心的数据库为关系型数据库,所述多活数据中心部署于mgr架构;
12、所述同步更新设于所述第一数据中心的数据库的数据信息和设于所述第二数据中心的数据库的数据信息的步骤,包括:
13、当所述客户端请求中数据库访问指令的读写操作类型为写操作类型时,仅同步更新设于所述第一数据中心的主数据库的数据信息,以及设于所述第一数据中心和所述第二数据中心的各个从数据库的数据信息;其中,所述mgr架构中仅存在一个主数据库;
14、所述将所述第一数据中心的所述客户端请求分配到所述第二数据中心的步骤,包括:
15、将所述第一数据中心的所述客户端请求分配到所述第二数据中心,所述客户端请求用于指示所述第二数据中心通过代理服务器将所述第二数据中心的任一从数据库切换为主数据库。
16、在其中一个实施例中,所述多活数据中心的数据库为非关系型数据库,所述多活数据中心部署于cassandra架构;
17、所述同步更新设于所述第一数据中心的数据库的数据信息和设于所述第二数据中心的数据库的数据信息的步骤,包括:
18、当所述第一数据中心的所述客户端请求中数据库访问指令的读写操作类型为写操作类型时,同步更新设于所述第一数据中心的所有数据库的数据信息和设于所述第二数据中心的所有数据库的数据信息。
19、在其中一个实施例中,所述多活数据中心的数据库为缓存集群,所述多活数据中心部署于cluster架构;
20、所述同步更新设于所述第一数据中心的数据库的数据信息和设于所述第二数据中心的数据库的数据信息的步骤,包括:
21、当所述第一数据中心的所述客户端请求中数据库访问指令的读写操作类型为写操作类型时,同步更新设于所述第一数据中心中各个第一目标主数据库的数据信息,以及设于所述第一数据中心和所述第二数据中心中每个所述第一目标主数据库对应的从数据库的数据信息;其中,设于任一数据中心的目标主数据库的数量小于设于所述cluster架构的数据库总数量的一半;
22、所述将所述第一数据中心的所述客户端请求分配到所述第二数据中心的步骤,包括:
23、将所述第一数据中心的所述客户端请求分配到所述第二数据中心,所述客户端请求用于指示所述cluster架构将所述第二数据中心中每个所述第一目标主数据库对应的从数据库切换为主数据库。
24、在其中一个实施例中,所述多活数据中心的数据库为消息队列集群,所述多活数据中心部署于dledger架构;
25、所述同步更新设于所述第一数据中心的数据库的数据信息和设于所述第二数据中心的数据库的数据信息的步骤,包括:
26、当所述客户端请求中数据库访问指令的读写操作类型为写操作类型时,同步更新设于所述第一数据中心中各个第二目标主数据库的数据信息,以及设于所述第二数据中心中与每个所述第二目标主数据库同个dledger组的各个从数据库的数据信息;
27、所述将所述第一数据中心的所述客户端请求分配到所述第二数据中心的步骤,包括:
28、将所述第一数据中心的所述客户端请求分配到所述第二数据中心,所述客户端请求用于指示所述dledger架构将所述第二数据中心中与每个所述第二目标主数据库同个dledger组的任一从数据库切换为主数据库。
29、第二方面,本技术提供了一种多活系统,所述多活系统包括多个多活数据中心,所述多个多活数据中心部署于多活架构,所述多个多活数据中心包括第一数据中心和第二数据中心;
30、所述多活系统用于执行上述任一实施例所述数据同步方法。
31、在其中一个实施例中,在所述多活数据中心中至少两个多活数据中心包括流量层,在所述流量层所在的数据中心还包括应用层,以使至少两个多活数据中心同时接收外部流量。
32、在其中一个实施例中,所述流量层包括nginx服务器和网关中间件集群,所述nginx服务器连接所述网关中间件集群,所述应用层包括应用服务集群,其中:
33、所述nginx服务器用于接收所述客户端请求,并确定用于响应所述客户端请求的目标应用服务;
34、所述网关中间件集群用于实现网络互连,以使所述客户端请求发送到所述目标应用服务;
35、所述应用服务器集群用于接收所述流量层分配的所述客户端请求,并解析所述客户端请求中数据库访问指令的读写操作类型,根据解析结果向数据库发送与所述解析结果对应的指令。
36、在其中一个实施例中,各个所述多活数据中心通过高速专线连接。
37、从以上技术方案可以看出,本技术实施例具有以下优点:
38、本技术提供的一种数据同步方法,应用于多活系统,所述多活系统包括多个多活数据中心,所述多活数据中心部署于多活架构,所述多个多活数据中心包括第一数据中心和第二数据中心,所述方法包括:接收客户端请求,并按照预设分配规则确定用于响应所述客户端请求的所述第一数据中心;根据所述第一数据中心的流量日志,判断所述第一数据中心的流量状态是否正常;若所述第一数据中心的流量状态正常,则解析所述客户端请求中数据库访问指令的读写操作类型,并在所述读写操作类型为写操作类型的情况下,同步更新设于所述第一数据中心的数据库的数据信息和设于所述第二数据中心的数据库的数据信息;若所述第一数据中心的流量状态异常,则关闭所述第一数据中心的所有数据库,并在确定所述第二数据中心的流量状态正常的情况下,将所述第一数据中心的所述客户端请求分配到所述第二数据中心。当任一数据中心出现故障,正常运行的一方可以随时接管来自异常运行的一方的流量和数据,确保数据同步及时,提高抗风险能力,保证业务连续性和可用性。