《容灾方法、装置、系统与电子设备.pdf》由会员分享,可在线阅读,更多相关《容灾方法、装置、系统与电子设备.pdf(29页珍藏版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910521769.0 (22)申请日 2019.06.17 (71)申请人 腾讯科技 (深圳) 有限公司 地址 518000 广东省深圳市南山区高新区 科技中一路腾讯大厦35层 (72)发明人 侯焯明刘林 (74)专利代理机构 深圳市隆天联鼎知识产权代 理有限公司 44232 代理人 刘抗美 (51)Int.Cl. H04L 12/24(2006.01) G06F 11/14(2006.01) H04L 29/08(2006.01) (54)发明名称 容灾方法、 装置、 。
2、系统与电子设备 (57)摘要 本公开提供一种容灾方法、 装置及电子设 备, 涉及计算机技术领域。 该容灾方法包括: 将来 自客户端的第一信息发送给N个对等的服务节 点, N为大于等于2的整数; 接收来自所述N个对等 的服务节点的M个第二信息, M为小于等于N的正 整数; 将所述M个第二信息中的一个发送给所述 客户端。 本公开提供的容灾方法可以提高客户端 和服务器之间数据传递的可靠性, 提高容灾能 力。 权利要求书2页 说明书15页 附图11页 CN 110351122 A 2019.10.18 CN 110351122 A 1.一种容灾方法, 其特征在于, 由设置于服务器中的服务集群执行, 所。
3、述服务集群包括 主管理节点和一个以上备份管理节点, 所述主管理节点用于执行所述容灾方法, 所述备份 管理节点用于在所述主管理节点出现故障时作为新的主管理节点的候选对象, 所述容灾方 法包括: 将来自客户端的第一信息发送给N个对等的服务节点, N为大于等于2的整数; 接收来自所述N个对等的服务节点的M个第二信息, M为小于等于N的正整数; 将所述M个第二信息中的一个发送给所述客户端。 2.如权利要求1所述的容灾方法, 其特征在于, 所述将来自客户端的第一信息发送给N 个对等的服务节点包括: 将所述第一信息发送给全部所述备份管理节点; 所述将所述M个第 二信息中的一个发送给所述客户端还包括: 将所。
4、述M个第二信息中的一个发送给全部所述 备份管理节点。 3.如权利要求1所述的容灾方法, 其特征在于, 所述将所述M个第二信息中的一个发送 给所述客户端包括: 将到达时间最早的所述第二信息发送给所述客户端。 4.如权利要求3所述的容灾方法, 其特征在于, 所述将所述M个第二信息中的一个发送 给所述客户端还包括: 如果到达时间在后的第二信息与所述到达时间最早的第二信息相同, 则丢弃所述到达 时间在后的第二信息; 如果到达时间在后的第二信息与所述到达时间最早的第二信息不同, 则通知所述到达 时间在后的第二信息对应的服务节点关闭。 5.如权利要求1所述的容灾方法, 其特征在于, 还包括: 响应服务节点。
5、注册请求确定待注册的新服务节点的识别符, 所述服务节点注册请求包 括所述新服务节点的执行文件加密值; 如果不存在与所述识别符对应的已注册服务节点, 对所述新服务节点启动孤立节点注 册流程; 如果存在与所述识别符对应的已注册服务节点, 对比所述新服务节点的执行文件加密 值与所述已注册服务节点的执行文件加密值是否一致; 如果一致, 对所述新服务节点启动冗余节点注册流程; 如果不一致, 拒绝所述服务节点注册请求。 6.如权利要求5所述的容灾方法, 其特征在于, 所述孤立节点注册流程包括: 确定所述新服务节点的最大已执行指令序号n1与缓存中对应于所述新服务节点的识 别符的最大已接收指令序号n2的序号差。
6、的绝对值x; 如果x等于零, 注册所述新服务节点; 如果x小于等于第一预设值, 从缓存中调用序号为n1至n2的x个第一信息发送给所述新 服务节点, 在所述新服务节点执行完所述x个第一信息后, 注册所述新服务节点; 如果x大于所述第一预设值, 拒绝所述服务节点注册请求, 其中n1、 n2均为正整数。 7.如权利要求5所述的容灾方法, 其特征在于, 所述冗余节点注册流程包括: 确定所述新服务节点的最大已执行指令序号n1与所述已注册服务节点的最大已执行 指令序号n3的序号差的绝对值y; 权利要求书 1/2 页 2 CN 110351122 A 2 如果y等于零, 注册所述新服务节点; 如果y小于等于。
7、第二预设值, 从缓存中调用序号为n1至n3的y个第一信息发送给所述新 服务节点, 在所述新服务节点执行完所述y个第一信息后, 注册所述新服务节点; 如果y大于所述第二预设值, 从所述已注册服务节点中拷贝状态信息发送给所述新服 务节点后, 注册所述新服务节点, 其中n1、 n3均为正整数。 8.如权利要求57任一项所述的容灾方法, 其特征在于, 所述注册所述新服务节点包 括: 对所述新服务节点下发初始化信息, 所述初始化信息包括随机种子和自驱动逻辑, 所 述自驱动逻辑包括所述管理节点的时间戳。 9.如权利要求1所述的容灾方法, 其特征在于, 所述将来自客户端的第一信息发送给N 个对等的服务节点包。
8、括: 确定所述第一信息对应的服务节点的识别符; 根据所述识别符将所述第一信息发送给所述N个对等的服务节点。 10.如权利要求1所述的容灾方法, 其特征在于, 所述第二信息包括所述服务节点发送 的第二信息的序号, 所述接收来自所述N个对等的服务节点的M个第二信息包括: 在来自于服务节点的多个信息中, 根据所述服务节点发送的第二信息的序号确定对应 于所述第一信息的第二信息。 11.如权利要求1所述的容灾方法, 其特征在于, 所述N个对等的服务节点使用共享内 存, 每个所述服务节点在所述共享内存中具有独立的存储空间。 12.如权利要求11所述的容灾方法, 其特征在于, 在新服务节点为被关闭后重启的服。
9、务 节点时, 所述新服务节点重新启动时继续使用被关闭前在所述共享内存中使用的存储空 间。 13.一种容灾装置, 其特征在于, 包括: 信息分发模块, 设置为将来自客户端的第一信息发送给N个对等的服务节点, N为大于 等于2的整数; 信息接收模块, 设置为接收来自所述N个对等的服务节点的M个第二信息, M为小于等于 N的正整数; 信息发送模块, 设置为将所述M个第二信息中的一个发送给所述客户端。 14.一种容灾系统, 其特征在于, 包括: 至少一个客户端; 服务器集群, 耦接于所述客户端, 设置有服务集群, 所述服务集群包括主管理节点和一 个以上备份管理节点, 所述备份管理节点用于在所述主管理节。
10、点出现故障时作为新的主管 理节点的候选对象, 所述主管理节点用于执行如权利要求1-12任一项所述的容灾方法。 15.一种电子设备, 其特征在于, 包括: 存储器; 以及 耦合到所述存储器的处理器, 所述处理器被配置为基于存储在所述存储器中的指令, 执行如权利要求1-12任一项所述的容灾方法。 权利要求书 2/2 页 3 CN 110351122 A 3 容灾方法、 装置、 系统与电子设备 技术领域 0001 本公开涉及计算机技术领域, 具体而言, 涉及一种容灾方法、 装置、 系统与电子设 备。 背景技术 0002 容灾是为了在遭遇灾害时保证信息系统正常运行、 实现业务连续性而设计的一种 运营方。
11、案。 在相关技术中, 通常使用主备服务节点切换方法来实现容灾, 即在主服务节点出 现故障时, 将备份服务节点升级为新的主服务节点, 接替原主服务节点的工作。 主备切换方 法一般通过人工或第三方服务实现。 0003 在人工切换主服务节点和备份服务节点的过程中, 各服务节点处于不可用状态, 由于人工效率较低, 服务节点处于不可用状态的时间较长, 弊端较大。 0004 基于第三方服务的主备切换方法需要把业务节点注册到第三方服务中, 由第三方 服务选出主服务节点或在主服务节点故障时选举出新的主服务节点, 业务节点监听主服务 节点的状态变化信息, 并在备份服务节点升级为主服务节点时恢复相应的状态信息。 。
12、这种 方法需要在服务节点的代码上增加主服务节点切换事件的监听逻辑和主服务节点切换时 业务状态的恢复逻辑, 对于原有业务的代码入侵较大, 增加了运维风险; 当有服务节点中新 业务加入时, 还需要增加恢复服务节点状态过程中新业务的状态恢复代码, 不利于维护系 统稳定。 同时, 该方法需要维护一个第三方服务, 增加运维成本。 最后, 与人工方式相同, 在 主备节点切换过程中存在服务不可用状态, 而且对于有状态的服务节点, 在切换服务节点 时, 还需要将主服务节点的状态信息同步至该备份服务节点, 数据可靠性较低。 0005 需要说明的是, 在上述背景技术部分公开的信息仅用于加强对本公开的背景的理 解,。
13、 因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。 发明内容 0006 本公开实施例提供一种容灾方法、 装置、 系统与电子设备, 用于至少在一定程度上 克服由于相关技术的限制和缺陷而导致的容灾方案存在服务不可用状态、 可靠性不高等问 题。 0007 根据本公开的一个方面, 提供一种容灾方法, 由设置于服务器中的服务集群执行, 所述服务集群包括主管理节点和一个以上备份管理节点, 所述主管理节点用于执行所述容 灾方法, 所述备份管理节点用于在所述主管理节点出现故障时作为新的主管理节点的候选 对象, 所述容灾方法包括: 0008 将来自客户端的第一信息发送给N个对等的服务节点, N为大于。
14、等于2的整数; 0009 接收来自所述N个对等的服务节点的M个第二信息, M为小于等于N的整数; 0010 将所述M个第二信息中的一个发送给所述客户端。 0011 在本公开的一种示例性实施例中, 所述将所述M个第二信息中的一个发送给所述 客户端包括: 说明书 1/15 页 4 CN 110351122 A 4 0012 将到达时间最早的所述第二信息发送给所述客户端。 0013 在本公开的一种示例性实施例中, 所述将所述M个第二信息中的一个发送给所述 客户端还包括: 0014 如果到达时间在后的第二信息与所述到达时间最早的第二信息相同, 则丢弃所述 到达时间在后的第二信息; 0015 如果到达时。
15、间在后的第二信息与所述到达时间最早的第二信息不同, 则通知所述 到达时间在后的第二信息对应的服务节点关闭。 0016 在本公开的一种示例性实施例中, 所述将来自客户端的第一信息发送给N个对等 的服务节点包括: 将所述第一信息发送给全部所述备份管理节点; 所述将所述M个第二信息 中的一个发送给所述客户端还包括: 将所述M个第二信息中的一个发送给全部所述备份管 理节点。 0017 在本公开的一种示例性实施例中, 还包括: 0018 响应服务节点注册请求确定待注册的新服务节点的识别符, 所述服务节点注册请 求包括所述新服务节点的执行文件加密值; 0019 如果不存在与所述识别符对应的已注册服务节点,。
16、 对所述新服务节点启动孤立节 点注册流程; 0020 如果存在与所述识别符对应的已注册服务节点, 对比所述新服务节点的执行文件 加密值与所述已注册服务节点的执行文件加密值是否一致; 0021 如果一致, 对所述新服务节点启动冗余节点注册流程; 0022 如果不一致, 拒绝所述服务节点注册请求。 0023 在本公开的一种示例性实施例中, 所述孤立节点注册流程包括: 0024 确定所述新服务节点的最大已执行指令序号n1与缓存中对应于所述新服务节点 的识别符的最大已接收指令序号n2的序号差的绝对值x; 0025 如果x等于零, 注册所述新服务节点; 0026 如果x小于等于第一预设值, 从缓存中调用。
17、序号为n1至n2的x个第一信息发送给所 述新服务节点, 在所述新服务节点执行完所述x个第一信息后, 注册所述新服务节点; 0027 如果x大于所述第一预设值, 拒绝所述服务节点注册请求, 其中n1、 n2均为正整数。 0028 在本公开的一种示例性实施例中, 所述冗余节点注册流程包括: 0029 确定所述新服务节点的最大已执行指令序号n1与所述已注册服务节点的最大已 执行指令序号n3的序号差的绝对值y; 0030 如果y等于零, 注册所述新服务节点; 0031 如果y小于等于第二预设值, 从缓存中调用序号为n1至n3的y个第一信息发送给所 述新服务节点, 在所述新服务节点执行完所述y个第一信息。
18、后, 注册所述新服务节点; 0032 如果y大于所述第二预设值, 从所述已注册服务节点中拷贝状态信息发送给所述 新服务节点后, 注册所述新服务节点, 其中n1、 n3均为正整数。 0033 在本公开的一种示例性实施例中, 所述注册所述新服务节点包括: 0034 对所述新服务节点下发初始化信息, 所述初始化信息包括随机种子和自驱动逻 辑, 所述自驱动逻辑包括所述管理节点的时间戳。 0035 在本公开的一种示例性实施例中, 所述将来自客户端的第一信息发送给N个对等 说明书 2/15 页 5 CN 110351122 A 5 的服务节点包括: 0036 确定所述第一信息对应的服务节点的识别符; 00。
19、37 根据所述识别符将所述第一信息发送给所述N个对等的服务节点。 0038 在本公开的一种示例性实施例中, 所述第二信息包括所述服务节点发送的第二信 息的序号, 所述接收来自所述N个对等的服务节点的M个第二信息包括: 0039 在来自于服务节点的多个信息中, 根据所述服务节点发送的第二信息的序号确定 对应于所述第一信息的第二信息。 0040 在本公开的一种示例性实施例中, 所述N个对等的服务节点使用共享内存, 每个所 述服务节点在所述共享内存中具有独立的存储空间。 0041 在本公开的一种示例性实施例中, 在新服务节点为被关闭后重启的服务节点时, 所述新服务节点重新启动时继续使用被关闭前在所述。
20、共享内存中使用的存储空间。 0042 根据本公开的另一个方面, 包括: 0043 信息分发模块, 设置为将来自客户端的第一信息发送给N个对等的服务节点, N为 大于等于2的整数; 0044 信息接收模块, 设置为接收来自所述N个对等的服务节点的M个第二信息, M为小于 等于N的正整数; 0045 信息发送模块, 设置为将所述M个第二信息中的一个发送给所述客户端。 0046 根据本公开的再一个方面, 提供一种容灾系统, 包括: 0047 至少一个客户端; 0048 服务器集群, 耦接于所述客户端, 设置有服务集群, 所述服务集群包括主管理节点 和一个以上备份管理节点, 所述备份管理节点用于在所述。
21、主管理节点出现故障时作为新的 主管理节点的候选对象, 所述主管理节点用于执行如上任一项所述的容灾方法。 0049 根据本公开的又一个方面, 提供一种电子设备, 包括: 0050 存储器; 以及 0051 耦合到所述存储器的处理器, 所述处理器被配置为基于存储在所述存储器中的指 令, 执行如上述任意一项所述的容灾方法。 0052 本公开实施例通过部署多个对等的服务节点, 将待处理的第一信息同时分发给多 个对等的服务节点, 并根据各服务节点的处理结果确定反馈的第二信息, 可以在一或多个 服务节点出现故障时, 利用正常的服务节点保障业务的正常处理, 消除相关主备切换容灾 方法存在的服务不可用状态。 。
22、0053 应当理解的是, 以上的一般描述和后文的细节描述仅是示例性和解释性的, 并不 能限制本公开。 附图说明 0054 此处的附图被并入说明书中并构成本说明书的一部分, 示出了符合本公开的实施 例, 并与说明书一起用于解释本公开的原理。 显而易见地, 下面描述中的附图仅仅是本公开 的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据 这些附图获得其他的附图。 0055 图1是本公开示例性实施例中容灾系统的示意图。 说明书 3/15 页 6 CN 110351122 A 6 0056 图2是本公开示例性实施例中容灾方法的流程图。 0057 图3是本公开一个实施。
23、例中确定第一信息的反馈信息的流程图。 0058 图4是本公开一个实施例中通过服务集群来实现容灾方法的示意图。 0059 图5是本公开一个实施例中基于Paxos协议实现的服务集群的示意图。 0060 图6是本公开一个实施例中服务节点的注册流程图。 0061 图7A是本公开一个实施例中服务节点具有状态时的孤立节点注册流程的流程图。 0062 图7B是本公开一个实施例中服务节点具有状态时的冗余节点注册流程的流程图。 0063 图8是本公开一个实施例中服务节点注册过程中的交互示意图。 0064 图9是本公开一个实施例中节点注册的示意图。 0065 图10是本公开一个实施例中对服务节点进行初始化的示意图。
24、。 0066 图11是本公开一个实施例中主管理节点(Master Gdriver)对上行数据包进行管 理的示意图。 0067 图12是本公开一个实施例中主管理节点(Master Gdriver)对下行数据包进行管 理的示意图。 0068 图13是本公开一个应用场景的示意图。 0069 图14是本公开一个示例性实施例中一种容灾装置的方框图。 0070 图15是本公开一个示例性实施例中一种电子设备的方框图。 具体实施方式 0071 现在将参考附图更全面地描述示例实施方式。 然而, 示例实施方式能够以多种形 式实施, 且不应被理解为限于在此阐述的范例; 相反, 提供这些实施方式使得本公开将更加 全面。
25、和完整, 并将示例实施方式的构思全面地传达给本领域的技术人员。 所描述的特征、 结 构或特性可以以任何合适的方式结合在一个或更多实施方式中。 在下面的描述中, 提供许 多具体细节从而给出对本公开的实施方式的充分理解。 然而, 本领域技术人员将意识到, 可 以实践本公开的技术方案而省略所述特定细节中的一个或更多, 或者可以采用其它的方 法、 组元、 装置、 步骤等。 在其它情况下, 不详细示出或描述公知技术方案以避免喧宾夺主而 使得本公开的各方面变得模糊。 0072 此外, 附图仅为本公开的示意性图解, 图中对等的附图标记表示相同或类似的部 分, 因而将省略对它们的重复描述。 附图中所示的一些方。
26、框图是功能实体, 不一定必须与物 理或逻辑上独立的实体相对应。 可以采用软件形式来实现这些功能实体, 或在一个或多个 硬件模块或集成电路中实现这些功能实体, 或在不同网络和/或处理器装置和/或微控制器 装置中实现这些功能实体。 0073 图1是本公开实施例中容灾系统100的示意图。 本公开实施例的容灾方法或容灾装 置可以应用于容灾系统100. 0074 参考图1, 容灾系统100可以包括: 0075 至少一个客户端A; 0076 服务器集群B, 耦接于客户端A, 设置有服务集群, 服务集群包括主管理节点和一个 以上备份管理节点, 备份管理节点用于在主管理节点出现故障时作为新的主管理节点的候 选。
27、对象, 主管理节点用于执行下述实施例的容灾方法。 说明书 4/15 页 7 CN 110351122 A 7 0077 如图1所示, 客户端A例如可以为具有显示屏的各种电子设备, 包括但不限于智能 手机、 平板电脑、 便携式计算机和台式计算机等等。 客户端A和服务器集群B之间可以使用网 络提供通信链路的介质进行耦接, 使客户端A能够向服务器集群B发送第一信息或接收服务 器集群B发送的第二信息。 网络可以包括各种连接类型, 例如有线、 无线通信链路或者光纤 电缆等等。 0078 应该理解, 图1中的客户端A、 网络和服务器集群B的数目仅仅是示意性的。 根据实 现需要, 可以具有任意数目的终端、 。
28、网络和服务器。 0079 服务器集群B中可以设置有多个对等的服务节点, 这些服务节点例如可以为应用 程序的进程, 多个服务节点设置在一或多台服务器中。 0080 本公开实施例所提供的容灾方法可以由服务器集群B执行, 相应地, 容灾装置可以 设置于服务器集群B中。 0081 下面结合附图对本公开示例实施方式进行详细说明。 0082 图2是本公开示例性实施例中容灾方法的流程图。 参考图2, 容灾方法200可以包 括: 0083 步骤S1, 将来自客户端的第一信息发送给N个对等的服务节点, N为大于等于2的整 数。 0084 步骤S2, 接收来自所述N个对等的服务节点的M个第二信息, M为小于等于N。
29、的正整 数。 0085 步骤S3, 将所述M个第二信息中的一个发送给所述客户端。 0086 在本公开实施例中, 第一信息、 第二信息的形式例如可以为消息/数据包, 当第一 信息、 第二信息为数据包时, 第一信息可被称为上行数据包, 第二信息可被称为下行数据 包。 0087 本公开实施例通过部署多个对等的服务节点, 将待处理信息同时分发给多个对等 的服务节点, 根据多个对等的服务节点发送的冗余信息确定对客户端发送的信息, 可以在 部分服务节点出现故障时, 通过其余正常的服务节点保障业务的正常处理, 消除相关主备 切换容灾方法存在的服务不可用状态; 而且, 由于仅对信息的输入输出进行管理, 对于业。
30、务 代码的入侵较少; 由于多个服务节点处理的信息相同, 在一或多个服务节点出现故障时也 可以保持业务处理及状态更新, 可以避免由于服务节点故障、 服务状态丢失而引起的系统 不可用灾难。 0088 下面, 对图2所示实施例的各步骤进行详细说明。 0089 在步骤S1, 将来自客户端的第一信息发送给N个对等的服务节点, N为大于等于2的 整数。 0090 在本公开实施例中, 对等的服务节点指的是拥有一致的执行逻辑和一致的初始化 条件的服务节点。 在一些实施例中, N个对等的服务节点可以部署在一台或多台服务器上。 0091 当服务节点是一个应用程序的进程时, 启动一个应用程序则对应启动一个服务节 点。
31、。 同一时间内服务器上可能存在对应于多个应用程序的多个服务节点。 此时, 可以首先确 定第一信息对应的服务节点的识别符(例如应用程序的编号或名称), 再将第一信息发送给 该识别符对应的N个对等的服务节点。 0092 在步骤S2, 接收来自所述N个对等的服务节点的M个第二信息, M为小于等于N的正 说明书 5/15 页 8 CN 110351122 A 8 整数。 0093 在本公开实施例中, 第二信息既可以是服务节点主动发送给客户端的信息, 也可 以是服务节点响应第一信息发送给客户端的反馈信息, 本公开不以此为限。 0094 在示例性实施例中, 第二信息包括发送第二信息的服务节点的识别符和服务。
32、节点 发送的第二信息的序号, 可以在来自于服务节点的多个信息中, 根据服务节点发送的第二 信息的序号确定对应于该第一信息的第二信息。 0095 例如, 服务节点1、 2、 3、 、 N分别发送的第二信息中, 分别包括服务节点发送的 第二信息的序号99、 99、 99、 、 99, 其中99指该第二信息是服务节点1发送的第99条信息, 其他服务节点相同。 以上数值仅为示例, 本公开不以此为限。 0096 在步骤S3, 将所述M个第二信息中的一个发送给所述客户端。 0097 在本公开实施例中, 可以将最早到达的第二信息中发送给客户端, 如果到达时间 在后的第二信息与到达时间最早的第二信息相同, 丢。
33、弃到达时间在后的第二信息, 否则通 知到达时间在后的第二信息对应的服务节点关闭。 0098 由于服务节点对等, 如果各服务节点均正常运行, 第二信息(下行数据包)应该全 部相同, 此时剔除冗余, 取第一个到达的第二信息发送给客户端; 如果部分服务节点出现故 障, 例如发送错误的第二信息或不发送第二信息, 则以第一个到达的第二信息为标准对到 达时间在后的第二信息进行检验, 只要到达时间在后的第二信息与到达时间最早的第二信 息不相同, 则判断到达时间在后的第二信息为错误信息, 通知到达时间在后的第二信息对 应的服务节点关闭。 0099 图3是本公开一个实施例中确定第一信息的反馈信息的流程图。 01。
34、00 参考图3, 步骤S3可以包括: 0101 步骤S31, 将到达时间最早的第二信息发送给客户端。 0102 步骤S32, 判断到达时间在后的第二信息与到达时间最早的第二信息是否相同, 如 果相同进入步骤S33; 否则进入步骤S34。 0103 步骤S33, 丢弃到达时间在后的第二信息。 0104 步骤S34, 通知到达时间在后的第二信息对应的服务节点关闭。 0105 其中, 可以根据第二信息中包括的服务节点的识别符通知到达时间在后的第二信 息对应的服务节点关闭。 0106 如果第二信息是服务节点对第一信息的反馈信息, 由于服务节点对等、 输入信息 相同, 各对等的服务节点输出的第二信息应该。
35、相同; 如果第二信息是服务节点主动向客户 端发送的信息, 各对等的服务节点输出的第二信息也应该相同。 0107 但是在一些情况中, 有可能存在服务节点故障导致的信息接收错误、 信息处理错 误、 信息发送错误等种种错误情况, 进而导致故障服务节点发送的第二信息与其他正常服 务节点发送的第二信息不同, 此时需要通过错误的第二信息将故障服务节点识别出来, 并 通知故障服务节点关闭。 0108 通知故障服务节点关闭可以提高下一次识别第二信息的效率, 通知的方式例如可 以为通知该服务节点下线, 或者清除该服务节点的注册信息等。 在其他一些实施例中, 还可 以为通知错误信息对应的服务节点重新启动等, 本领。
36、域技术人员可以根据实际情况自行设 置。 说明书 6/15 页 9 CN 110351122 A 9 0109 在上述实施例提供的方法中, 由于第二信息冗余, 只要不是全部服务节点均出现 故障, 就不会影响反馈信息的正常传递。 即使各服务节点是有状态的节点, 由于对等的服务 节点具有相同的输入, 各对等的服务节点的状态变化过程和最新状态也相同, 即使部分服 务节点故障, 也不会导致其他服务节点的状态丢失或不同步。 因此, 相比于相关技术中切换 主备服务节点所造成的服务不可用缺陷, 或者无法在服务节点出现故障时准确无误地同步 服务节点的状态, 本公开实施例提供的技术方案具有更高的可靠性和更好的用户。
37、体验。 0110 在本公开一个实施例中, 容灾方法200可以由设置于服务器中的服务集群执行。 0111 图4是本公开一个实施例中通过服务集群400来实现容灾方法200的示意图。 0112 参考图4, 服务集群400包括一个主管理节点41和一或多个备份管理节点42, 主管 理节点41用于执行容灾方法200, 备份管理节点42用于在主管理节点41出现故障时作为新 的主管理节点的候选对象。 0113 服务集群400可以设置在一台或多台服务器上, 各管理节点可以设置在相同或不 同服务器上。 当各管理节点设置在不同服务器上时, 服务集群400可以设置各服务器之间的 通讯渠道, 以便实现多个管理节点的数据。
38、同步。 0114 在工作时, 服务集群400首先在多个管理节点中选取一个管理节点作为主管理节 点41, 并将其他管理节点设置为备份管理节点42。 为了备份管理节点42能够在主管理节点 41故障时及时接替工作、 同步数据, 主管理节点41在接收到客户端1或服务节点2发来的信 息时, 可以通过服务集群协议对全部备份管理节点同步。 0115 如图4所示, 客户端1和服务节点2只与主管理节点41交互。 主管理节点41对客户端 1和服务节点2输出信息、 接收客户端1和服务节点2发送的信息。 同时, 主管理节点41将客户 端1和服务节点2的输入信息和输出信息通过服务集群协议提交到服务集群400, 例如主管。
39、 理节点41可以将客户端1和服务节点2的输入信息和输出信息经Paxos协议提交到服务集群 400以便将第一信息或第二信息同步至全部备份管理节点。 在一些实施例中, 主管理节点41 收到第一信息时, 可以首先将第一信息同步至全部备份管理节点, 在接收到备份管理节点 的响应后, 将第一信息分发给N个对等的服务节点2; 主管理节点41收到第二信息时, 可以首 先将第二信息同步至全部备份管理节点, 在接收到备份管理节点的响应后, 将第二信息发 送给客户端1。 或者, 上述将发送数据至客户端/服务节点的过程和将数据同步至备份管理 节点的过程也可以同时进行。 0116 服务集群400实时监控主管理节点41。
40、的工作状态, 当主管理节点41出现故障时, 立 即在多个备份管理节点42中选取一个新的主管理节点, 并自动将客户端1和服务节点2的路 由地址切换到新的主管理节点。 0117 由于服务集群400本身也支持容灾, 为系统的可靠性提供了进一步的保障。 此外, 由于添加服务集群400仅需修改信息收发逻辑, 代码修改量小, 对于原业务逻辑入侵较小, 能够有效避免相关技术中存在的代码修改量大、 增加系统故障风险等问题。 0118 在一些实施例中, 服务集群400可以基于Paxos协议实现, 各管理节点例如可以通 过Gdriver节点实现。 0119 图5是一个实施例中基于Paxos协议实现的服务集群的示意。
41、图。 0120 参考图5, Paxos集群500选举一个Gdriver节点作为主管理节点51(Master Gdriver), 将客户端和服务进程的路由地址设置为主管理节点(Master Gdriver)的地址。 说明书 7/15 页 10 CN 110351122 A 10 主管理节点51接收来自客户端1的第一信息(Log, 既是Paxos的binLog也是业务消息)并分 发至多个对等的服务节点20(服务节点), 将服务节点20发送的多个第二信息(Log)中的一 个发送给客户端10。 主管理节点51和备份管理节点52之间通过Paxos协议同步数据, 主管理 节点51将接收至客户端10的第一信。
42、息、 接收至服务节点20的第二信息中的一个同步给全部 备份管理节点52。 0121 每个管理节点拥有一个本地Log池, Log池中的信息序号严格递增, Paxos集群保证 所有管理节点的Log池完全一致。 0122 为了确保多个对等的服务节点完全相同, 在本公开实施例中, 服务集群还用于管 理各服务节点的同步、 注册、 驱动。 0123 服务节点启动后, 可以向服务集群注册, 从而服务集群在接收到对应于该服务节 点的识别符的第一信息时, 可以将该第一信息发送给所有已注册的服务节点。 为了保障同 一识别符对应的已注册服务节点完全一致, 在服务节点的注册过程中, 可以对服务节点进 行校验。 012。
43、4 图6是本公开一个实施例中服务节点的注册流程图。 0125 参考图6, 服务节点的注册过程可以包括: 0126 步骤S61, 响应服务节点注册请求确定待注册的新服务节点的识别符, 服务节点注 册请求包括新服务节点的执行文件加密值; 0127 步骤S62, 判断是否存在与识别符对应的已注册服务节点, 如果不存在, 进入步骤 S63对新服务节点启动孤立节点注册流程, 否则进入步骤S64; 0128 步骤S64, 对比新服务节点的执行文件加密值与已注册服务节点的执行文件加密 值是否一致, 如果一致, 进入步骤S65, 否则进入步骤S66; 0129 步骤S65, 对新服务节点启动冗余节点注册流程;。
44、 0130 步骤S66, 拒绝服务节点注册请求。 0131 上述执行文件加密值例如可以为MD5(Message-Digest Algorithm, 消息摘要算 法)值, 本公开对此不作特殊限定。 0132 执行图6所示流程可以剔除所有执行文件与已注册节点不同的节点, 初步保证了 新服务节点与已注册服务节点的一致性。 在服务节点不具有状态时, 步骤S63中的孤立节点 注册流程和步骤S65中的冗余节点注册流程可以为直接注册新服务节点, 但是在服务节点 具有状态时, 还需要对新服务节点的状态进行调整。 0133 图7A是服务节点具有状态时的孤立节点注册流程的流程图。 0134 参考图7A, 在服务节。
45、点具有状态时, 孤立节点注册流程可以包括: 0135 步骤S71, 确定所述新服务节点的最大已执行指令序号n1与缓存中对应于所述新 服务节点的识别符的最大已接收指令序号n2的序号差的绝对值x; 0136 步骤S72, 如果x等于零, 注册所述新服务节点; 0137 步骤S73, 如果x小于等于第一预设值, 从缓存中调用序号为n1至n2的x个第一信息 发送给所述新服务节点, 在所述新服务节点执行完所述x个第一信息后, 注册所述新服务节 点; 0138 步骤S74, 如果x大于所述第一预设值, 拒绝所述服务节点注册请求。 0139 不论新服务节点是冷启动(已执行指令记录为零)还是热启动(关闭后重新。
46、启动, 说明书 8/15 页 11 CN 110351122 A 11 加载关闭前的已执行指令记录), 在注册新服务节点之前, 都需要根据主管理节点已接收到 的对新服务节点对应的第一信息(指令)来调整新服务节点的状态, 从而确保新服务节点成 功注册后状态正常, 能对新的第一信息给出正确的反馈。 0140 为了方便管理与记录各服务节点在重启前后的状态, 在本公开一个实施例中可以 设置供多个服务节点共同使用的共享内存, 在共享内存中为每个服务节点设置独立的存储 空间。 由此, 当服务节点重新启动时可以继续使用被关闭前在共享内存中使用的存储空间, 有利于重启的服务节点及时恢复状态。 0141 主管理。
47、节点对已接收的第一信息编号, 存储在缓存(Log缓存池)中, 服务节点对已 处理的第一信息编号, 存储在共享内存中, 重启时读取最大已执行指令序号, 根据共享内存 中的记录恢复状态至关闭前。 0142 如果新服务节点的最大已执行指令序号与缓存中最大已接收指令序号相同, 说明 在新服务节点关闭重启过程中或者在新服务节点冷启动之前主管理节点并未接收到新的 第一信息, 此时可以直接注册新服务节点。 0143 如果新服务节点的最大已执行指令序号与缓存中最大已接收指令序号相差较小 (x小于等于第一预设值), 说明在新服务节点关闭重启过程中或者在新服务节点冷启动之 前主管理节点接收到少量新的第一信息, 此。
48、时可以从缓存中读取这些新的第一信息(x个), 并按顺序将其发送给新服务节点, 供新服务节点按序处理后获得最新状态, 然后注册该新 服务节点。 其中, 第一预设值可以由本领域技术人员自行设置, 例如为缓存中能存储的第一 信息数量的最大值。 0144 如果新服务节点的最大已执行指令序号与缓存中最大已接收指令序号相差较大 (x大于第一预设值), 说明在新服务节点关闭重启过程中或者在新服务节点冷启动之前主 管理节点接收到了大量新的第一信息, 由于缓存存储容量有限, 无法获得全部这些新的第 一信息, 即无法恢复新服务节点的状态至最新状态, 此时只能拒绝新服务节点的注册。 0145 图7B是服务节点具有状。
49、态时的冗余节点注册流程的流程图。 0146 参考图7B, 在服务节点具有状态时, 冗余节点注册流程可以包括: 0147 步骤S75, 确定所述新服务节点的最大已执行指令序号n1与所述已注册服务节点 的最大已执行指令序号n3的序号差的绝对值y; 0148 步骤S76, 如果y等于零, 注册所述新服务节点; 0149 步骤S77, 如果y小于等于第二预设值, 从缓存中调用序号为n1至n3的y个第一信息 发送给所述新服务节点, 在所述新服务节点执行完所述y个第一信息后, 注册所述新服务节 点; 0150 步骤S78, 如果y大于所述第二预设值, 从所述已注册服务节点中拷贝状态信息发 送给所述新服务节。
50、点后, 注册所述新服务节点。 0151 当已注册服务节点已经处理了一些第一信息时, 各已注册服务节点的状态已经发 生了改变, 此时需要使新服务节点同样执行已注册服务节点已处理的第一信息, 及时调整 新服务节点的状态和已注册服务节点一致, 注册新服务节点, 才能保持所有已注册的服务 节点完全相同。 0152 在一些情况下, 新服务节点是被关闭后重启的服务节点, 此时新服务节点可以读 取关闭前的节点状态等数据, 根据这些数据将状态恢复到被关闭前。 在另一些情况下, 新服 说明书 9/15 页 12 CN 110351122 A 12 务节点的启动状态可以为冷启动, 没有信息执行记录(即n10)。 。