首页 / 专利库 / 电信 / 节点 / 子节点 / 处理至少一个分布式集群中的故障的方法、设备和系统

处理至少一个分布式集群中的故障的方法、设备和系统

阅读:638发布:2024-02-29

专利汇可以提供处理至少一个分布式集群中的故障的方法、设备和系统专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供一种处理至少一个分布式集群中的故障的方法、设备和系统,至少一个分布式集群包括第一分布式集群,第一分布式集群中包括第一Master 节点 和第一Slave节点,第一参考节点,以及作为第一Master节点的备份的第一备用节点,第一备用节点接收第一参考节点发送的包括用于指示第一参考节点与第一Master节点处于失联状态的第一指示信息的心跳消息;第一备用节点根据第一指示信息,确定第一参考节点与第一Master节点处于失联状态;第一备用节点在检测到第一Master节点向第一备用节点发送的心跳消息中断的情况下,确定第一备用节点与第一Master节点也处于失联状态;第一备用节点确定该第一Master节点发生故障。在本发明实施例中,能够有效缩短故障检测时间。,下面是处理至少一个分布式集群中的故障的方法、设备和系统专利的具体信息内容。

1.一种处理至少一个分布式集群中的故障的方法,所述至少一个分布式集群包括第一分布式集群,所述第一分布式集群中包括第一Master节点和第一Slave节点,其特征在于,所述第一分布式集群还包括第一参考节点与第一备用节点,其中,所述第一Master节点用于监控所述第一分布式集群中的其它节点,所述第一备用节点用于在所述第一Master节点发生故障时替换所述第一Master节点,所述第一备用节点还用于监控所述第一Master节点、所述第一参考节点与所述第一Slave节点,所述第一参考节点用于监控所述第一Master节点和所述第一备用节点,所述第一Slave节点用于执行所述第一Master节点下发的指令,所述方法包括:
所述第一备用节点接收所述第一参考节点发送的心跳消息,所述心跳消息包括用于指示所述第一参考节点与所述第一Master节点处于失联状态的第一指示信息;
所述第一备用节点根据所述第一指示信息,确定所述第一参考节点与所述第一Master节点处于失联状态;
所述第一备用节点检测所述第一Master节点向所述第一备用节点发送的心跳消息是否中断;
在检测到所述第一Master节点向所述第一备用节点发送的心跳消息中断的情况下,所述第一备用节点确定所述第一备用节点与所述第一Master节点也处于失联状态;
所述第一备用节点确定与所述第一备用节点和所述第一参考节点均失联的所述第一Master节点发生故障。
2.根据权利要求1所述的方法,其特征在于,在确定所述第一Master节点发生故障的情况下,所述方法还包括:
所述第一备用节点向所述第一分布式集群中所有节点发送广播消息,所述广播消息用于指示所述第一备用节点升级为所述第一Master节点。
3.根据权利要求1或2所述的方法,其特征在于,所述第一备用节点检测所述第一Master节点向所述第一备用节点发送的心跳消息是否中断,包括:
所述第一备用节点检测在第一时刻与第二时刻之间是否接收到所述第一Master节点发送的心跳消息,所述第一时刻为所述第一备用节点接收到所述第一参考节点发送的包括有所述第一指示信息的心跳消息的时刻,所述第二时刻早于所述第一时刻,所述第一时刻与所述第二时刻之间的时间间隔为所述第一Master节点向所述第一备用节点发送心跳消息的心跳周期的N倍,N为正整数。
4.根据权利要求1或2所述的方法,其特征在于,所述至少一个分布式集群还包括第二分布式集群,所述第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为所述第二Master节点的备份的第二备用节点,所述方法还包括:
所述第一备用节点接收所述第二参考节点发送的心跳消息,所述心跳消息包括用于指示所述心跳消息的接收端的节点属性为Slave节点的第二指示信息,所述第二参考节点用于分别向所述第二Slave节点以及所述第一分布式集群中的所有节点发送包括所述第二指示信息的心跳消息,所述第二分布式集群与所述第一分布式集群具有相同的集群标识;
所述第一备用节点根据所述第二指示信息,确定所述第二参考节点发送的心跳消息中所指示的所述心跳消息的接收端的节点属性与所述第一备用节点的节点属性不相符,并确定所述第二参考节点所在的第二分布式集群与所述第一备用节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
所述第一备用节点与所述第二分布式集群中的第二备用节点进行协商,以便于整合所述第一分布式集群和所述第二分布式集群。
5.根据权利要求4所述的方法,其特征在于,所述第一备用节点与所述第二分布式集群中的第二备用节点进行协商,包括:
所述第一备用节点向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一备用节点的节点属性为备用节点的广播消息;
所述第一备用节点接收所述第二备用节点发送的协商消息,所述协商消息中包括用于指示所述第二备用节点的权重的信息,所述协商消息是所述第二备用节点在检测到所述广播消息指示的节点属性与自身的节点属性相同的情况下向所述第一备用节点发送的;
在确定所述第一备用节点的权重大于或等于所述第二备用节点的权重的情况下,所述第一备用节点向所述第二备用节点发送用于指示所述第二备用节点降级为Slave节点的协商响应消息;
在确定所述第一备用节点的权重小于所述第二备用节点的权重的情况下,所述第一备用节点向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一备用节点降级为Slave节点的广播消息。
6.一种处理至少一个分布式集群中的故障的方法,所述至少一个分布式集群包括第一分布式集群,所述第一分布式集群中包括第一Master节点和第一Slave节点,其特征在于,所述第一分布式集群还包括第一参考节点与第一备用节点,其中,所述第一Master节点用于监控所述第一分布式集群中的其它节点,所述第一备用节点用于在所述第一Master节点发生故障时替换所述第一Master节点,所述第一备用节点还用于监控所述第一Master节点、所述第一参考节点与所述第一Slave节点,所述第一参考节点用于监控所述第一Master节点和所述第一备用节点,所述第一Slave节点用于执行所述第一Master节点下发的指令,所述方法包括:
所述第一Master节点接收所述第一备用节点发送的心跳消息,所述心跳消息包括用于指示所述第一备用节点与所述第一Slave节点处于失联状态的第三指示信息;
所述第一Master节点根据所述第三指示信息,确定所述第一备用节点与所述第一Slave节点处于失联状态;
所述第一Master节点检测所述第一Slave节点向所述第一Master节点发送的心跳消息是否中断;
在检测到所述第一Slave节点向所述第一Master节点发送的心跳消息中断的情况下,所述第一Master节点确定所述第一Master节点与所述第一Slave节点也处于失联状态;
所述第一Master节点确定与所述第一Master节点和所述第一备用节点均失联的所述第一Slave节点发生故障。
7.根据权利要求6所述的方法,其特征在于,所述第一Master节点检测所述第一Slave节点向所述第一Master节点发送的心跳消息是否中断,包括:
所述第一Master节点检测在第三时刻与第四时刻之间是否接收到所述第一Slave节点发送的心跳消息,所述第三时刻为所述第一Master节点接收到所述第一备用节点发送的包括有所述第三指示信息的心跳消息的时刻,所述第四时刻早于所述第三时刻,所述第三时刻与所述第四时刻之间的时间间隔为所述第一Slave节点向所述第一Master节点发送心跳消息的心跳周期的N倍,N为正整数。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
所述第一Master节点在预设检测周期内检测是否接收到所述第一备用节点发送的心跳消息和所述第一参考节点发送的心跳消息,所述预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
在所述预设检测周期内既没有接收到所述第一备用节点发送的心跳消息,也没有接收到所述第一参考节点发送的心跳消息的情况下,所述第一Master节点确定所述第一备用节点和所述第一参考节点均发生故障。
9.根据权利要求6或7所述的方法,其特征在于,所述至少一个分布式集群还包括第二分布式集群,所述第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为所述第二Master节点的备份的第二备用节点,所述方法还包括:
所述第一Master节点接收所述第二参考节点发送的心跳消息,所述心跳消息包括用于指示所述心跳消息的接收端的节点属性为Slave节点的第四指示信息,所述第二参考节点用于分别向所述第二Slave节点以及所述第一分布式集群中的所有节点发送包括所述第四指示信息的心跳消息,所述第二分布式集群与所述第一分布式集群具有相同的集群标识;
所述第一Master节点根据所述第四指示信息,确定所述第二参考节点发送的心跳消息中所指示的所述心跳消息的接收端的节点属性与所述第一Master节点的节点属性不相符,并确定所述第二参考节点所在的第二分布式集群与所述第一Master节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
所述第一Master节点与所述第二分布式集群中的第二Master节点进行协商,以便于整合所述第一分布式集群和所述第二分布式集群。
10.根据权利要求9所述的方法,其特征在于,所述第一Master节点与所述第二分布式集群中的第二Master节点进行协商,包括:
所述第一Master节点向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一Master节点的节点属性为Master节点的广播消息;
所述第一Master节点接收所述第二Master节点发送的协商消息,所述协商消息中包括用于指示所述第二Master节点的权重的信息,所述协商消息是所述第二Master节点在检测到所述广播消息指示的节点属性与自身的节点属性相同的情况下向所述第一Master节点发送的;
在确定所述第一Master节点的权重大于或等于所述第二Master节点的权重时,所述第一Master节点向所述第二Master节点发送用于指示所述第二Master节点降级为Slave节点的协商响应消息;
在确定所述第一Master节点的权重小于所述第二Master节点的权重时,所述第一Master节点向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一Master节点降级为Slave节点的广播消息。
11.一种用于处理至少一个分布式集群中的故障的设备,所述至少一个分布式集群包括第一分布式集群,所述第一分布式集群中包括第一Master节点和第一Slave节点,其特征在于,所述第一分布式集群还包括第一参考节点与第一备用节点,其中,所述第一Master节点用于监控所述第一分布式集群中的其它节点,所述第一备用节点用于在所述第一Master节点发生故障时替换所述第一Master节点,所述第一备用节点还用于监控所述第一Master节点、所述第一参考节点与所述第一Slave节点,所述第一参考节点用于监控所述第一Master节点和所述第一备用节点,所述第一Slave节点用于执行所述第一Master节点下发的指令,所述设备为所述第一备用节点,所述设备包括:
第一接收模,用于接收所述第一参考节点发送的包括用于指示所述第一参考节点与所述第一Master节点处于失联状态的第一指示信息的心跳消息;
第一确定模块,用于根据所述第一接收模块接收的所述第一指示信息,确定所述第一参考节点与所述第一Master节点处于失联状态;
检测模块,用于检测所述第一Master节点向所述设备发送的心跳消息是否中断;
第二确定模块,用于在所述检测模块检测到所述第一Master节点向所述设备发送的心跳消息中断的情况下,确定所述设备与所述第一Master节点也处于失联状态;
第三确定模块,用于根据所述第一确定模块和所述第二确定模块确定的结果,确定所述第一Master节点发生故障。
12.根据权利要求11所述的设备,其特征在于,所述设备还包括:
发送模块,用于在所述第三确定模块确定所述第一Master节点发生故障的情况下,向所述第一分布式集群中所有节点发送广播消息,所述广播消息用于指示所述设备升级为所述第一Master节点。
13.根据权利要求11或12所述的设备,其特征在于,所述检测模块具体用于,检测在第一时刻与第二时刻之间是否接收到所述第一Master节点发送的心跳消息,所述第一时刻为所述设备接收到所述第一参考节点发送的包括有所述第一指示信息的心跳消息的时刻,所述第二时刻早于所述第一时刻,所述第一时刻与所述第二时刻之间的时间间隔为所述第一Master节点向所述设备发送心跳消息的心跳周期的N倍,N为正整数。
14.根据权利要求11或12所述的设备,其特征在于,所述至少一个分布式集群还包括第二分布式集群,所述第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为所述第二Master节点的备份的第二备用节点,所述设备还包括:
第二接收模块,用于接收所述第二参考节点发送的心跳消息,所述心跳消息包括用于指示所述心跳消息的接收端的节点属性为Slave节点的第二指示信息,所述第二参考节点用于分别向所述第二Slave节点以及所述第一分布式集群中的所有节点发送包括所述第二指示信息的心跳消息,所述第二分布式集群与所述第一分布式集群具有相同的集群标识;
第四确定模块,用于根据所述第二接收模块接收的所述第二指示信息,确定所述第二参考节点发送的心跳消息中所指示的所述心跳消息的接收端的节点属性与所述设备的节点属性不相符,并确定所述第二参考节点所在的第二分布式集群与所述设备所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
协商模块,用于与所述第二分布式集群中的第二备用节点进行协商,以便于整合所述第一分布式集群和所述第二分布式集群。
15.根据权利要求14所述的设备,其特征在于,所述协商模块包括:
第一发送单元,用于向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述设备的节点属性为备用节点的广播消息;
接收单元,用于接收所述第二备用节点发送的协商消息,所述协商消息中包括用于指示所述第二备用节点的权重的信息,所述协商消息是所述第二备用节点在检测到所述第一发送单元发送的所述广播消息指示的节点属性与自身的节点属性相同的情况下向所述设备发送的;
第二发送单元,用于在确定所述设备的权重大于或等于所述第二备用节点的权重的情况下,向所述第二备用节点发送用于指示所述第二备用节点降级为Slave节点的协商响应消息;
第三发送单元,用于在确定所述设备权重小于所述第二备用节点的权重的情况下,向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述设备降级为Slave节点的广播消息。
16.一种用于处理至少一个分布式集群中的故障的设备,所述至少一个分布式集群包括第一分布式集群,所述第一分布式集群中包括第一Master节点和第一Slave节点,其特征在于,所述第一分布式集群还包括第一参考节点与第一备用节点,其中,所述第一Master节点用于提供监控所述第一分布式集群中的其它节点,所述第一备用节点用于在所述第一Master节点发生故障时替换所述第一Master节点,所述第一备用节点还用于监控所述第一Master节点、所述第一参考节点与所述第一Slave节点,所述第一参考节点用于监控所述第一Master节点和所述第一备用节点,所述第一Slave节点用于执行所述第一Master节点下发的指令,所述设备为所述第一Master节点,所述设备包括:
第一接收模块,用于接收所述第一备用节点发送的包括用于指示所述第一参考节点与所述第一Master节点处于失联状态的第三指示信息的心跳消息;
第一确定模块,用于根据所述第一接收模块接收的所述第三指示信息,确定所述第一备用节点与所述第一Slave节点处于失联状态;
第一检测模块,用于检测所述第一Slave节点向所述设备发送的心跳消息是否中断;
第二确定模块,用于在所述第一检测模块检测到所述第一Slave节点向所述设备发送的心跳消息中断的情况下,确定所述设备与所述第一Slave节点也处于失联状态;
第三确定模块,用于根据所述第一确定模块与所述第二确定模块确定的结果,确定所述第一Slave节点发生故障。
17.根据权利要求16所述的设备,其特征在于,所述第一检测模块具体用于,检测在第三时刻与第四时刻之间是否接收到所述第一Slave节点发送的心跳消息,所述第三时刻为所述设备接收到所述第一备用节点发送的包括有所述第三指示信息的心跳消息的时刻,所述第四时刻早于所述第三时刻,所述第三时刻与所述第四时刻之间的时间间隔为所述第一Slave节点向所述设备发送心跳消息的心跳周期的N倍,N为正整数。
18.根据权利要求16或17所述的设备,其特征在于,所述设备还包括:
第二检测模块,用于在预设检测周期内检测是否接收到所述第一备用节点发送的心跳消息和所述第一参考节点发送的心跳消息,所述预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
第四确定模块,用于在所述第二检测模块在所述预设检测周期内既没有接收到所述第一备用节点发送的心跳消息,也没有接收到所述第一参考节点发送的心跳消息的情况下,确定所述第一备用节点和所述第一参考节点均发生故障。
19.根据权利要求16或17所述的设备,其特征在于,所述至少一个分布式集群还包括第二分布式集群,所述第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为所述第二Master节点的备份的第二备用节点,所述设备还包括:
第二接收模块,用于接收所述第二参考节点发送的心跳消息,所述心跳消息包括用于指示所述心跳消息的接收端的节点属性为Slave节点的第四指示信息,所述第二参考节点用于分别向所述第二Slave节点以及所述第一分布式集群中的所有节点发送包括所述第四指示信息的心跳消息,所述第二分布式集群与所述第一分布式集群具有相同的集群标识;
第五确定模块,用于根据所述第二接收模块接收的所述第四指示信息,确定所述第二参考节点发送的心跳消息中所指示的所述心跳消息的接收端的节点属性与所述设备的节点属性不相符,并确定所述第二参考节点所在的第二分布式集群与所述设备所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
协商模块,用于与所述第二分布式集群中的第二Master节点进行协商,以便于整合所述第一分布式集群和所述第二分布式集群。
20.根据权利要求19所述的设备,其特征在于,所述协商模块包括:
第一发送单元,用于向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述设备的节点属性为Master节点的广播消息;
接收单元,用于接收所述第二Master节点发送的协商消息,所述协商消息中包括用于指示所述第二Master节点的权重的信息,所述协商消息是所述第二Master节点在检测到所述第一发送单元发送的所述广播消息指示的节点属性与自身的节点属性相同的情况下向所述设备发送的;
第二发送单元,用于在确定所述设备的权重大于或等于所述第二Master节点的权重时,向所述第二Master节点发送用于指示所述第二Master节点降级为Slave节点的协商响应消息;
第三发送单元,用于在确定所述设备的权重小于所述第二Master节点的权重时,向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述设备降级为Slave节点的广播消息。
21.一种分布式集群系统,其特征在于,所述分布式集群系统包括第一分布式集群,所述第一分布式集群中包括第一Master节点和第一Slave节点,其特征在于,所述第一分布式集群还包括第一参考节点与第一备用节点,其中,所述第一Master节点用于监控所述第一分布式集群中的其它节点,所述第一备用节点用于在所述第一Master节点发生故障时替换所述第一Master节点,所述第一备用节点还用于监控所述第一Master节点、所述第一参考节点与所述第一Slave节点,所述第一参考节点用于监控所述第一Master节点和所述第一备用节点,所述第一Slave节点用于执行所述第一Master节点下发的指令,其中,所述第一参考节点还用于,在检测到所述第一Master节点向所述第一参考节点发送的心跳消息中断的情况下,向所述第一备用节点发送心跳消息,所述心跳消息包括用于指示所述第一参考节点与所述第一Master节点处于失联状态的第一指示信息,所述第一备用节点包括:
第一接收模块,用于接收所述第一参考节点发送的包括所述第一指示信息的心跳消息;
第一确定模块,用于根据所述第一接收模块接收的所述第一指示信息,确定所述第一参考节点与所述第一Master节点处于失联状态;
检测模块,用于检测所述第一Master节点向所述第一备用节点发送的心跳消息是否中断;
第二确定模块,用于在所述检测模块检测到所述第一Master节点向所述第一备用节点发送的心跳消息中断的情况下,确定所述第一备用节点与所述第一Master节点也处于失联状态;
第三确定模块,用于根据所述第一确定模块和所述第二确定模块确定的结果,确定所述第一Master节点发生故障。
22.根据权利要求21所述的分布式集群系统,其特征在于,所述第一备用设备还包括:
发送模块,用于在所述第三确定模块确定所述第一Master节点发生故障的情况下,向所述第一分布式集群中所有节点发送广播消息,所述广播消息用于指示所述第一备用节点升级为所述第一Master节点。
23.根据权利要求21或22所述的分布式集群系统,其特征在于,所述检测模块具体用于,检测在第一时刻与第二时刻之间是否接收到所述第一Master节点发送的心跳消息,所述第一时刻为所述第一备用节点接收到所述第一参考节点发送的包括有所述第一指示信息的心跳消息的时刻,所述第二时刻早于所述第一时刻,所述第一时刻与所述第二时刻之间的时间间隔为所述第一Master节点向所述第一备用节点发送心跳消息的心跳周期的N倍,N为正整数。
24.根据权利要求21或22所述的分布式集群系统,其特征在于,所述分布式集群系统还包括第二分布式集群,所述第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为所述第二Master节点的备份的第二备用节点,所述第一备用节点还包括:
第二接收模块,用于接收所述第二参考节点发送的心跳消息,所述心跳消息包括用于指示所述心跳消息的接收端的节点属性为Slave节点的第二指示信息,所述第二参考节点用于分别向所述第二Slave节点以及所述第一分布式集群中的所有节点发送包括所述第二指示信息的心跳消息,所述第二分布式集群与所述第一分布式集群具有相同的集群标识;
第四确定模块,用于根据所述第二接收模块接收的所述第二指示信息,确定所述第二参考节点发送的心跳消息中所指示的所述心跳消息的接收端的节点属性与所述第一备用节点的节点属性不相符,并确定所述第二参考节点所在的第二分布式集群与所述第一备用节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
协商模块,用于与所述第二分布式集群中的第二备用节点进行协商,以便于整合所述第一分布式集群和所述第二分布式集群。
25.根据权利要求24所述的分布式集群系统,其特征在于,所述协商模块包括:
第一发送单元,用于向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一备用节点的节点属性为备用节点的广播消息;
接收单元,用于接收所述第二备用节点发送的协商消息,所述协商消息中包括用于指示所述第二备用节点的权重的信息,所述协商消息是所述第二备用节点在检测到所述第一发送单元发送的所述广播消息指示的节点属性与自身的节点属性相同的情况下向所述第一备用节点发送的;
第二发送单元,用于在确定所述第一备用节点的权重大于或等于所述第二备用节点的权重的情况下,向所述第二备用节点发送用于指示所述第二备用节点降级为Slave节点的协商响应消息;
第三发送单元,用于在确定所述第一备用节点权重小于所述第二备用节点的权重的情况下,向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一备用节点降级为Slave节点的广播消息。
26.一种分布式集群系统,其特征在于,所述分布式集群系统包括第一分布式集群,所述第一分布式集群中包括第一Master节点和第一Slave节点,其特征在于,所述第一分布式集群还包括第一参考节点与第一备用节点,其中,所述第一Master节点用于监控所述第一分布式集群中的其它节点,所述第一备用节点用于在所述第一Master节点发生故障时替换所述第一Master节点,所述第一备用节点还用于监控所述第一Master节点、所述第一参考节点与所述第一Slave节点,所述第一参考节点用于监控所述第一Master节点和所述第一备用节点,所述第一Slave节点用于执行所述第一Master节点下发的指令,其中,所述第一备用节点还用于,在检测到所述第一Slave节点向所述第一备用节点发送的心跳消息中断的情况下,向所述第一Master节点发送心跳消息,所述心跳消息包括用于指示所述第一备用节点与所述第一Slave节点处于失联状态的第三指示信息,所述第一Master节点包括:
第一接收模块,用于接收所述第一备用节点发送的包括所述第三指示信息的心跳消息;
第一确定模块,用于根据所述第一接收模块接收的所述第三指示信息,确定所述第一备用节点与所述第一Slave节点处于失联状态;
第一检测模块,用于检测所述第一Slave节点向所述第一Master节点发送的心跳消息是否中断;
第二确定模块,用于在所述第一检测模块检测到所述第一Slave节点向所述第一Master节点发送的心跳消息中断的情况下,确定所述第一Master节点与所述第一Slave节点也处于失联状态;
第三确定模块,用于根据所述第一确定模块与所述第二确定模块确定的结果,确定所述第一Slave节点发生故障。
27.根据权利要求26所述的分布式集群系统,其特征在于,所述第一检测模块具体用于,检测在第三时刻与第四时刻之间是否接收到所述第一Slave节点发送的心跳消息,所述第三时刻为所述第一Master节点接收到所述第一备用节点发送的包括有所述第三指示信息的心跳消息的时刻,所述第四时刻早于所述第三时刻,所述第三时刻与所述第四时刻之间的时间间隔为所述第一Slave节点向所述第一Master节点发送心跳消息的心跳周期的N倍,N为正整数。
28.根据权利要求26或27所述的分布式集群系统,其特征在于,所述第一Master节点还包括:
第二检测模块,用于在预设检测周期内检测是否接收到所述第一备用节点发送的心跳消息和所述第一参考节点发送的心跳消息,所述预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
第四确定模块,用于在所述第二检测模块在所述预设检测周期内既没有接收到所述第一备用节点发送的心跳消息,也没有接收到所述第一参考节点发送的心跳消息的情况下,确定所述第一备用节点和所述第一参考节点均发生故障。
29.根据权利要求26或27所述的分布式集群系统,其特征在于,所述分布式集群系统还包括第二分布式集群,所述第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为所述第二Master节点的备份的第二备用节点,所述第一Master节点还包括:
第二接收模块,用于接收所述第二参考节点发送的心跳消息,所述心跳消息包括用于指示所述心跳消息的接收端的节点属性为Slave节点的第四指示信息,所述第二参考节点用于分别向所述第二Slave节点以及所述第一分布式集群中的所有节点发送包括所述第四指示信息的心跳消息,所述第二分布式集群与所述第一分布式集群具有相同的集群标识;
第五确定模块,用于根据所述第二接收模块接收的所述第四指示信息,确定所述第二参考节点发送的心跳消息中所指示的所述心跳消息的接收端的节点属性与所述第一Master节点的节点属性不相符,并确定所述第二参考节点所在的第二分布式集群与所述第一Master节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
协商模块,用于与所述第二分布式集群中的第二Master节点进行协商,以便于整合所述第一分布式集群和所述第二分布式集群。
30.根据权利要求29所述的分布式集群系统,其特征在于,所述协商模块包括:
第一发送单元,用于向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一Master节点的节点属性为Master节点的广播消息;
接收单元,用于接收所述第二Master节点发送的协商消息,所述协商消息中包括用于指示所述第二Master节点的权重的信息,所述协商消息是所述第二Master节点在检测到所述第一发送单元发送的所述广播消息指示的节点属性与自身的节点属性相同的情况下向所述第一Master节点发送的;
第二发送单元,用于在确定所述第一Master节点的权重大于或等于所述第二Master节点的权重时,向所述第二Master节点发送用于指示所述第二Master节点降级为Slave节点的协商响应消息;
第三发送单元,用于在确定所述第一Master节点的权重小于所述第二Master节点的权重时,向所述第一分布式集群和所述第二分布式集群内所有的节点发送用于指示所述第一Master节点降级为Slave节点的广播消息。

说明书全文

处理至少一个分布式集群中的故障的方法、设备和系统

技术领域

[0001] 本发明实施例涉及集群管理领域,并且更具体地,涉及一种处理至少一个分布式集群中的故障的方法、设备和系统。

背景技术

[0002] 目前大部分的高可用性(High Available,简称为“HA”)分布式集群通常为一主(Master节点)多从(Slave节点)集中式的,其中,Master节点向集群中所有Slave节点发送心跳消息,集群中每个Salve节点也向该Master节点发送心跳消息。Slave节点通过检测Master节点发送的心跳消息来判断该 Master节点是否发生故障,Master节点通过检测Slave节点发送的心跳消息来判断该Salve节点是否发生故障。
[0003] 但在上述故障检测中存在以下弊端,Salve节点通常是在多次判断没有接收到Master节点的心跳消息的情况下,才会认为该Master节点发生故障,才会发起用于在集群内确定新的Master节点的选举策略,因此,在目前技术中, Master节点的故障检测时间过长。

发明内容

[0004] 本发明实施例提供一种处理至少一个分布式集群中的故障的方法、设备和系统,能够有效缩短故障检测时间。
[0005] 第一方面提供了一种处理至少一个分布式集群中的故障的方法,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master 节点和第一Slave节点,该分布式集群还包括第一参考节点,以及作为该第一Master节点的备份的第一备用节点,该方法包括:
[0006] 该第一备用节点接收该第一参考节点发送的心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息;
[0007] 该第一备用节点根据该第一指示信息,确定该第一参考节点与该第一Master节点处于失联状态;
[0008] 该第一备用节点检测该第一Master节点向该第一备用节点发送的心跳消息是否中断;
[0009] 在检测到该第一Master节点向该第一备用节点发送的心跳消息中断的情况下,该第一备用节点确定该第一备用节点与该第一Master节点也处于失联状态;
[0010] 该第一备用节点确定与该第一备用节点和该第一参考节点均失联的该第一Master节点发生故障。
[0011] 结合第一方面,在第一方面的第一种可能的实现方式中,在确定该第一 Master节点发生故障的情况下,该方法还包括:
[0012] 该第一备用节点向该第一分布式集群中所有节点发送广播消息,该广播消息用于指示该第一备用节点升级为该第一Master节点。
[0013] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该第一备用节点检测该第一Master节点向该第一备用节点发送的心跳消息是否中断,包括:
[0014] 该第一备用节点检测在第一时刻与第二时刻之间是否接收到该第一 Master节点发送的心跳消息,该第一时刻为该第一备用节点接收到该第一参考节点发送的包括有该第一指示信息的心跳消息的时刻,该第二时刻早于该第一时刻,该第一时刻与该第二时刻之间的时间间隔为该第一Master节点向该第一备用节点发送心跳消息的心跳周期的N倍,N为正整数。
[0015] 结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该方法还包括:
[0016] 该第一备用节点接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第二指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第二指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0017] 该第一备用节点根据该第二指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一备用节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一备用节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0018] 该第一备用节点与该第二分布式集群中的第二备用节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0019] 结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该第一备用节点与该第二分布式集群中的第二备用节点进行协商,包括:
[0020] 该第一备用节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点的节点属性为备用节点的广播消息;
[0021] 该第一备用节点接收该第二备用节点发送的协商消息,该协商消息中包括用于指示该第二备用节点的权重的信息,该协商消息是该第二备用节点在检测到该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一备用节点发送的;
[0022] 在确定该第一备用节点的权重大于或等于该第二备用节点的权重的情况下,该第一备用节点向该第二备用节点发送用于指示该第二备用节点降级为 Slave节点的协商响应消息;
[0023] 在确定该第一备用节点的权重小于该第二备用节点的权重的情况下,该第一备用节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点降级为Slave节点的广播消息
[0024] 第二方面提供了一种处理至少一个分布式集群中的故障的方法,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master 节点和第一Slave节点,该第一分布式集群还包括第一参考节点以及作为该第一Master节点的备份的第一备用节点,该方法包括:
[0025] 该第一Master节点接收该第一备用节点发送的心跳消息,该心跳消息包括用于指示该第一备用节点与该第一Slave节点处于失联状态的第三指示信息;
[0026] 该第一Master节点根据该第三指示信息,确定该第一备用节点与该第一 Slave节点处于失联状态;
[0027] 该第一Master节点检测该第一Slave节点向该第一Master节点发送的心跳消息是否中断;
[0028] 在检测到该第一Slave节点向该第一Master节点发送的心跳消息中断的情况下,该第一Master节点确定该第一Master节点与该第一Slave节点也处于失联状态;
[0029] 该第一Master节点确定与该第一Master节点和该第一备用节点均失联的该第一Slave节点发生故障。
[0030] 结合第二方面,在第二方面的第一种可能的实现方式中,该第一Master 节点检测该第一Slave节点向该第一Master节点发送的心跳消息是否中断,包括:
[0031] 该第一Master节点检测在第三时刻与第四时刻之间是否接收到该第一 Slave节点发送的心跳消息,该第三时刻为该第一Master节点接收到该第一备用节点发送的包括有该第三指示信息的心跳消息的时刻,该第四时刻早于该第三时刻,该第三时刻与该第四时刻之间的时间间隔为该第一Slave节点向该第一Master节点发送心跳消息的心跳周期的N倍,N为正整数。
[0032] 结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该方法还包括:
[0033] 该第一Master节点在预设检测周期内检测是否接收到该第一备用节点发送的心跳消息和该第一参考节点发送的心跳消息,该预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
[0034] 在该预设检测周期内既没有接收到该第一备用节点发送的心跳消息,也没有接收到该第一参考节点发送的心跳消息的情况下,该第一Master节点确定该第一备用节点和该第一参考节点均发生故障。
[0035] 结合第二方面或第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该方法还包括:
[0036] 该第一Master节点接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第四指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第四指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0037] 该第一Master节点根据该第四指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一Master节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一 Master节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0038] 该第一Master节点与该第二分布式集群中的第二Master节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0039] 结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,该第一Master节点与该第二分布式集群中的第二Master节点进行协商,包括:
[0040] 该第一Master节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点的节点属性为Master节点的广播消息;
[0041] 该第一Master节点接收该第二Master节点发送的协商消息,该协商消息中包括用于指示该第二Master节点的权重的信息,该协商消息是该第二 Master节点在检测到该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一Master节点发送的;
[0042] 在确定该第一Master节点的权重大于或等于该第二Master节点的权重时,该第一Master节点向该第二Master节点发送用于指示该第二Master节点降级为Slave节点的协商响应消息;
[0043] 在确定该第一Master节点的权重小于该第二Master节点的权重时,该第一Master节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点降级为Slave节点的广播消息。
[0044] 第三方面提供了一种用于处理至少一个分布式集群中的故障的设备,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一 Master节点和第一Slave节点,该分布式集群还包括第一参考节点,以及作为该第一Master节点的备份的第一备用节点,其中,该第一参考节点用于,在检测到该第一Master节点向该第一参考节点发送的心跳消息中断的情况下,向该第一备用节点发送心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息,该设备为该第一备用节点,该设备包括:
[0045] 第一接收模,用于接收该第一参考节点发送的包括有该第一指示信息的心跳消息;
[0046] 第一确定模块,用于根据该第一接收模块接收的该第一指示信息,确定该第一参考节点与该第一Master节点处于失联状态;
[0047] 检测模块,用于检测该第一Master节点向该设备发送的心跳消息是否中断;
[0048] 第二确定模块,用于在该检测模块检测到该第一Master节点向该设备发送的心跳消息中断的情况下,确定该设备与该第一Master节点也处于失联状态;
[0049] 第三确定模块,用于根据该第一确定模块和该第二确定模块确定的结果,确定该第一Master节点发生故障。
[0050] 结合第三方面,在第三方面的第一种可能的实现方式中,该设备还包括:
[0051] 发送模块,用于在该第三确定模块确定该第一Master节点发生故障的情况下,向该第一分布式集群中所有节点发送广播消息,该广播消息用于指示该设备升级为该第一Master节点。
[0052] 结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,该检测模块具体用于,检测在第一时刻与第二时刻之间是否接收到该第一Master节点发送的心跳消息,该第一时刻为该设备接收到该第一参考节点发送的包括有该第一指示信息的心跳消息的时刻,该第二时刻早于该第一时刻,该第一时刻与该第二时刻之间的时间间隔为该第一 Master节点向该设备发送心跳消息的心跳周期的N倍,N为正整数。
[0053] 结合第三方面或第三方面的第一种或第二种可能的实现方式,在第三方面的第三种可能的实现方式中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该设备还包括:
[0054] 第二接收模块,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第二指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第二指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0055] 第四确定模块,用于根据该第二接收模块接收的该第二指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该设备的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该设备所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0056] 协商模块,用于与该第二分布式集群中的第二备用节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0057] 结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,该协商模块包括:
[0058] 第一发送单元,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备的节点属性为备用节点的广播消息;
[0059] 接收单元,用于接收该第二备用节点发送的协商消息,该协商消息中包括用于指示该第二备用节点的权重的信息,该协商消息是该第二备用节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该设备发送的;
[0060] 第二发送单元,用于在确定该设备的权重大于或等于该第二备用节点的权重的情况下,向该第二备用节点发送用于指示该第二备用节点降级为Slave 节点的协商响应消息;
[0061] 第三发送单元,用于在确定该设备权重小于该第二备用节点的权重的情况下,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备降级为Slave节点的广播消息。
[0062] 第四方面提供了一种用于处理至少一个分布式集群中的故障的设备,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一 Master节点和第一Slave节点,其特征在于,该第一分布式集群还包括第一参考节点以及作为该第一Master节点的备份的第一备用节点,该第一备用节点用于,在检测到该第一Slave节点向该第一备用节点发送的心跳消息中断的情况下,向该第一Master节点发送心跳消息,该心跳消息包括用于指示该第一备用节点与该第一Slave节点处于失联状态的第三指示信息,该设备为该第一Master节点,该设备包括:
[0063] 第一接收模块,用于接收该第一备用节点发送的包括该第三指示信息的心跳消息;
[0064] 第一确定模块,用于根据该第一接收模块接收的该第三指示信息,确定该第一备用节点与该第一Slave节点处于失联状态;
[0065] 第一检测模块,用于检测该第一Slave节点向该设备发送的心跳消息是否中断;
[0066] 第二确定模块,用于在该第一检测模块检测到该第一Slave节点向该设备发送的心跳消息中断的情况下,确定该设备与该第一Slave节点也处于失联状态;
[0067] 第三确定模块,用于根据该第一确定模块与该第二确定模块确定的结果,确定该第一Slave节点发生故障。
[0068] 结合第四方面,在第四方面的第一种可能的实现方式中,该第一检测模块具体用于,检测在第三时刻与第四时刻之间是否接收到该第一Slave节点发送的心跳消息,该第三时刻为该设备接收到该第一备用节点发送的包括有该第三指示信息的心跳消息的时刻,该第四时刻早于该第三时刻,该第三时刻与该第四时刻之间的时间间隔为该第一Slave节点向该设备发送心跳消息的心跳周期的N倍,N为正整数。
[0069] 结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,该设备还包括:
[0070] 第二检测模块,用于在预设检测周期内检测是否接收到该第一备用节点发送的心跳消息和该第一参考节点发送的心跳消息,该预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
[0071] 第四确定模块,用于在该第二检测模块在该预设检测周期内既没有接收到该第一备用节点发送的心跳消息,也没有接收到该第一参考节点发送的心跳消息的情况下,确定该第一备用节点和该第一参考节点均发生故障。
[0072] 结合第四方面或第四方面的第一种或第二种可能的实现方式,在第四方面的第三种可能的实现方式中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该设备还包括:
[0073] 第二接收模块,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第四指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第四指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0074] 第五确定模块,用于根据该第二接收模块接收的该第四指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该设备的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该设备所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0075] 协商模块,用于与该第二分布式集群中的第二Master节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0076] 结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,该协商模块包括:
[0077] 第一发送单元,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备的节点属性为Master节点的广播消息;
[0078] 接收单元,用于接收该第二Master节点发送的协商消息,该协商消息中包括用于指示该第二Master节点的权重的信息,该协商消息是该第二Master 节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该设备发送的;
[0079] 第二发送单元,用于在确定该设备的权重大于或等于该第二Master节点的权重时,向该第二Master节点发送用于指示该第二Master节点降级为Slave 节点的协商响应消息;
[0080] 第三发送单元,用于在确定该设备的权重小于该第二Master节点的权重时,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备降级为Slave节点的广播消息。
[0081] 第五方面,提供了一种分布式集群系统,该分布式集群系统包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,其特征在于,该分布式集群还包括第一参考节点,以及作为该第一Master节点的备份的第一备用节点,该第一Master节点、该第一备用节点和该第一参考节点用于彼此之间互发心跳消息,该第一参考节点还用于向该第一Slave节点发送心跳消息,该第一Slave节点用于分别向该第一Master节点和该第一备用节点发送心跳消息,其中,
[0082] 该第一参考节点还用于,在检测到该第一Master节点向该第一参考节点发送的心跳消息中断的情况下,向该第一备用节点发送心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息,
[0083] 该第一备用节点包括:
[0084] 第一接收模块,用于接收该第一参考节点发送的包括该第一指示信息的心跳消息;
[0085] 第一确定模块,用于根据该第一接收模块接收的该第一指示信息,确定该第一参考节点与该第一Master节点处于失联状态;
[0086] 检测模块,用于检测该第一Master节点向该第一备用节点发送的心跳消息是否中断;
[0087] 第二确定模块,用于在该检测模块检测到该第一Master节点向该第一备用节点发送的心跳消息中断的情况下,确定该第一备用节点与该第一Master 节点也处于失联状态;
[0088] 第三确定模块,用于根据该第一确定模块和该第二确定模块确定的结果,确定该第一Master节点发生故障。
[0089] 结合第五方面,在第五方面的第一种可能的实现方式中,该第一备用设备还包括:
[0090] 发送模块,用于在该第三确定模块确定该第一Master节点发生故障的情况下,向该第一分布式集群中所有节点发送广播消息,该广播消息用于指示该第一备用节点升级为该第一Master节点。
[0091] 结合第五方面或第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,该检测模块具体用于,检测在第一时刻与第二时刻之间是否接收到该第一Master节点发送的心跳消息,该第一时刻为该第一备用节点接收到该第一参考节点发送的包括有该第一指示信息的心跳消息的时刻,该第二时刻早于该第一时刻,该第一时刻与该第二时刻之间的时间间隔为该第一Master节点向该第一备用节点发送心跳消息的心跳周期的N倍,N 为正整数。
[0092] 结合第五方面或第五方面的第一种或第二种可能的实现方式,在第五方面的第三种可能的实现方式中,该分布式集群系统还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该第一备用节点还包括:
[0093] 第二接收模块,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第二指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第二指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0094] 第四确定模块,用于根据该第二接收模块接收的该第二指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一备用节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一备用节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0095] 协商模块,用于与该第二分布式集群中的第二备用节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0096] 结合第五方面的第三种可能的实现方式,在第五方面的第四种可能的实现方式中,该协商模块包括:
[0097] 第一发送单元,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点的节点属性为备用节点的广播消息;
[0098] 接收单元,用于接收该第二备用节点发送的协商消息,该协商消息中包括用于指示该第二备用节点的权重的信息,该协商消息是该第二备用节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该设备发送的;
[0099] 第二发送单元,用于在确定该第一备用节点的权重大于或等于该第二备用节点的权重的情况下,向该第二备用节点发送用于指示该第二备用节点降级为Slave节点的协商响应消息;
[0100] 第三发送单元,用于在确定该第一备用节点权重小于该第二备用节点的权重的情况下,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点降级为Slave节点的广播消息。
[0101] 第六方面提供了一种分布式集群系统,其特征在于,该分布式集群系统包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave 节点,其特征在于,该分布式集群还包括第一参考节点,以及作为该第一 Master节点的备份的第一备用节点,该第一Master节点、该第一备用节点和该第一参考节点用于彼此之间互发心跳消息,该第一参考节点还用于向该第一Slave节点发送心跳消息,该第一Slave节点用于分别向该第一Master节点和该第一备用节点发送心跳消息,其中,
[0102] 该第一备用节点还用于,在检测到该第一Slave节点向该第一备用节点发送的心跳消息中断的情况下,向该第一Master节点发送心跳消息,该心跳消息包括用于指示该第一备用节点与该第一Slave节点处于失联状态的第三指示信息,
[0103] 该第一Master节点包括:
[0104] 第一接收模块,用于接收该第一备用节点发送的包括该第三指示信息的心跳消息;
[0105] 第一确定模块,用于根据该第一接收模块接收的该第三指示信息,确定该第一备用节点与该第一Slave节点处于失联状态;
[0106] 第一检测模块,用于检测该第一Slave节点向该第一Master节点发送的心跳消息是否中断;
[0107] 第二确定模块,用于在该第一检测模块检测到该第一Slave节点向该第一Master节点发送的心跳消息中断的情况下,确定该第一Master节点与该第一Slave节点也处于失联状态;
[0108] 第三确定模块,用于根据该第一确定模块与该第二确定模块确定的结果,确定该第一Slave节点发生故障。
[0109] 结合第六方面,在第六方面的第一种可能的实现方式中,该第一检测模块具体用于,检测在第三时刻与第四时刻之间是否接收到该第一Slave节点发送的心跳消息,该第三时刻为该第一Master节点接收到该第一备用节点发送的包括有该第三指示信息的心跳消息的时刻,该第四时刻早于该第三时刻,该第三时刻与该第四时刻之间的时间间隔为该第一Slave节点向该第一 Master节点发送心跳消息的心跳周期的N倍,N为正整数。
[0110] 结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,该第一Master节点还包括:
[0111] 第二检测模块,用于在预设检测周期内检测是否接收到该第一备用节点发送的心跳消息和该第一参考节点发送的心跳消息,该预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
[0112] 第四确定模块,用于在该第二检测模块在该预设检测周期内既没有接收到该第一备用节点发送的心跳消息,也没有接收到该第一参考节点发送的心跳消息的情况下,确定该第一备用节点和该第一参考节点均发生故障。
[0113] 结合第六方面或第六方面的第一种或第二种可能的实现方式,在第六方面的第三种可能的实现方式中,该分布式集群系统还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该第一Master节点还包括:
[0114] 第二接收模块,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第四指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第四指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0115] 第五确定模块,用于根据该第二接收模块接收的该第四指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一Master节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一Master节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0116] 协商模块,用于与该第二分布式集群中的第二Master节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0117] 结合第六方面的第三种可能的实现方式,在第六方面的第四种可能的实现方式中,该协商模块包括:
[0118] 第一发送单元,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点的节点属性为Master节点的广播消息;
[0119] 接收单元,用于接收该第二Master节点发送的协商消息,该协商消息中包括用于指示该第二Master节点的权重的信息,该协商消息是该第二Master 节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一Master节点发送的;
[0120] 第二发送单元,用于在确定该第一Master节点的权重大于或等于该第二 Master节点的权重时,向该第二Master节点发送用于指示该第二Master节点降级为Slave节点的协商响应消息;
[0121] 第三发送单元,用于在确定该第一Master节点的权重小于该第二Master 节点的权重时,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点降级为Slave节点的广播消息。
[0122] 基于上述技术方案,在本发明实施例中,该分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点,该备用节点根据参考节点发送的心跳消息确定Master节点与该参考节点处于失联状态,并通过检测该Master节点向该备用节点发送的心跳消息也中断来确定该Master节点与该备用节点也处于失联状态,从而可以有效地确定与该备用节点和该参考节点均失联的该Master节点发生故障。在本发明实施例中,备用节点通过参考节点发送的用于指示Master节点失联的心跳消息,以及自身检测到的该Master节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。附图说明
[0123] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0124] 图1示出了本发明实施例涉及的分布式集群的示意图。
[0125] 图2示出了本发明实施例提供的处理至少一个分布式集群中的故障的方法的示意性流程图
[0126] 图3示出了本发明实施例提供的处理至少一个分布式集群中的故障的方法的另一示意性流程图。
[0127] 图4示出了本发明实施例提供的处理至少一个分布式集群中的故障的方法的再一示意性流程图。
[0128] 图5(a),(b),(c)和(d)示出了本发明实施例提供的处理至少一个分布式集群中的故障的方法的示意图。
[0129] 图6示出了本发明实施例提供的处理至少一个分布式集群中的故障的方法的再一示意性流程图。
[0130] 图7示出了本发明实施例提供的用于处理至少一个分布式集群中的故障的设备的示意性框图
[0131] 图8示出了本发明实施例提供的用于处理至少一个分布式集群中的故障的设备的再一示意性框图。
[0132] 图9示出了本发明实施例提供的用于处理至少一个分布式集群中的故障的设备的再一示意性框图。
[0133] 图10示出了本发明实施例提供的用于处理至少一个分布式集群中的故障的设备的再一示意性框图。
[0134] 图11示出了本发明实施例提供的分布式集群系统的示意性框图。
[0135] 图12示出了本发明实施例提供的分布式集群系统的另一示意性框图。

具体实施方式

[0136] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0137] 为了便于理解本发明实施例提供的数据处理的方案,首先介绍以下概念:
[0138] 心跳消息
[0139] 心跳消息(Heartbeat Message)是一种发送源发送到接收方的消息,这种消息可以让接收方确定发送源是否以及何时出现故障或终止。通常,心跳消息从发送源启动时开始发送,直到发送源关闭,期间发送源会不间断的发送周期性或重复的心跳消息。当接收方在某个心跳消息接收周期内没有接收到心跳消息,接收方可能会认为发送源已经关闭、或出现故障,或者当前不可用。
[0140] 心跳消息可能常常被用于高可用性或容错处理的目的。
[0141] 为了便于本领域技术人员理解本发明实施例提出的处理至少一个分布式集群中的故障的方法、设备和系统,下面首先结合图1介绍本发明实施例涉及到的分布式集群。
[0142] 如图1所示,分布式集群100包括Master节点(主节点)110,备用节点120,参考节点130和Slave节点(从属节点)140。其中,Master节点110,备用节点120和参考节点130三者之间互发心跳消息;参考节点130还向Slave 节点140发送心跳消息;Slave节点140分别向主节点110和备用节点120发送心跳消息。
[0143] 如图1所示,Master节点110,备用节点120和参考节点130三者之中的两两之间发送心跳消息,具体地,Master节点110分别向备用节点120和参考节点130发送心跳消息,备用节点120分别向Master节点110和参考节点130发送心跳消息,参考节点130分别向Master节点110和备用节点120 发送心跳消息。即Master节点110,备用节点120和参考节点130三者互相监控彼此是否存在故障。应理解,如果一个节点存在故障,则该节点就无法向其他节点发送心跳消息,也无法接收到其他节点发送的心跳消息。
[0144] 如图1所示,由于Slave节点140分别向主节点110和备用节点120发送心跳消息,则Master节点110和备用节点120均可以监控Slave节点130 的故障与否。
[0145] 由于参考节点130向Slave节点140发送心跳消息,则Slave节点140 也可以监控该参考节点130。
[0146] 应理解,分布式集群100中包括的所有节点,均具有基本的本地业务计算对象故障监控功能,该业务计算对象例如为进程等。其中,
[0147] Master节点110用于,负责业务计算对象(例如进程)的调度,例如为应用层的业务集群提供仲裁,具体地包括主备仲裁,集群一致性协调控制等。该Master节点监控分布式集群100中所有节点。
[0148] 备用节点120用于,作为Master节点110的备用节点,即作为Master 节点的备份,例如,在Master节点110发生故障时,该备用节点120快速升主接替该Master节点110业务,该备用节点120也监控分布式集群100中所有节点。
[0149] 参考节点130用于,实时监控Master节点110和备用节点120发送的心跳消息,以便于及时地发现Master节点110或备用节点120发生故障。具体地,例如,在参考节点130检测到Master节点110向参考节点130发送的心跳消息中断的情况下,认为与该Master节点110失联,然后向备用节点120 发送携带有指示信息的心跳消息,该指示信息用于指示该参考节点130与该 Master节点110处于失联状态,以便于该备用节点120根据该指示信息,能够有效地确定出该Master节点110发生故障。例如,当备用节点120也检测到Master节点110向备用节点120发送的心跳消息中断的情况下,该备用节点120可以综合考虑自身的检测结果以及参考节点130发送的心跳消息中的该指示信息,较为快捷、准确地确定该Master节点110确实发生故障。
[0150] 类似的,参考节点130也可以协助Master节点110快捷、准确地确定备用节点120发生故障。
[0151] 应理解,集群中各个节点发送的心跳消息,可以基于相同的心跳周期来发送,换句话说,每个节点都是按照预设的心跳周期来发送心跳消息,相应地,也按照该预设的心跳周期来接收心跳消息。因此,例如,当参考节点130 在一个心跳周期内没有接收到Master节点110发送的心跳消息,就可以认为该Master节点110的心跳消息中断,进而认为与该Master节点110失联。
[0152] 应理解,该参考节点130也可以根据预设的预设检测周期来判断Master 节点110的心跳消息是否中断,该预设检测周期例如设置为心跳周期的3倍或其他整数倍。
[0153] 综上所述,该参考节点130作为Master节点110和备用节点120的参考方,用于协助Master节点110和备用节点120快速有效地检测彼此是否存在故障,可以有效增强对Master节点110的故障判断的准确性。
[0154] Slave节点140,为集群100中除上述Master节点110、备用节点120和参考节点130以外的其它所有节点。该Slave节点140用于,负责搜集本地业务计算对象(例如进程)的状态信息,并将该状态信息上报给Master节点 110,并执行Master节点110下发的指令。
[0155] 可选地,在本发明实施例涉及的分布式集群100包括一个Master节点110 和一个备用节点120,可以包括多个参考节点130和多个Slave节点140。
[0156] 具体地,当该分布式集群100为虚拟机集群时,该集群100中的所有节点均为虚拟机。再例如,当该分布式集群100为物理组机集群时,该集群100 中的所有节点均为物理组设备。此外,上述各个节点也可以为逻辑站点等。
[0157] 图2示出了本发明实施例的处理至少一个分布式集群中的故障的方法 200,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,该分布式集群还包括第一参考节点,以及作为该第一Master节点的备份的第一备用节点,该方法200包括:
[0158] S210,该第一备用节点接收该第一参考节点发送的心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息;
[0159] S220,该第一备用节点根据该第一指示信息,确定该第一参考节点与该第一Master节点处于失联状态;
[0160] S230,该第一备用节点检测该第一Master节点向该第一备用节点发送的心跳消息是否中断;
[0161] S240,在检测到该第一Master节点向该第一备用节点发送的心跳消息中断的情况下,该第一备用节点确定该第一备用节点与该第一Master节点也处于失联状态;
[0162] S250,该第一备用节点确定与该第一备用节点和该第一参考节点均失联的该第一Master节点发生故障。
[0163] 在本发明实施例中,该分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点,该备用节点根据参考节点发送的心跳消息确定Master节点与该参考节点处于失联状态,并通过检测该 Master节点向该备用节点发送的心跳消息也中断来确定该Master节点与该备用节点也处于失联状态,从而可以有效地确定与该备用节点和该参考节点均失联的该Master节点发生故障。
[0164] 因此,本发明实施例提供的处理至少一个分布式集群中的故障的方法,备用节点通过参考节点发送的用于指示Master节点失联的心跳消息,以及自身检测到的该Master节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。
[0165] 可选地,本发明实施例提供的处理至少一个分布式集群中的故障的方法 200所涉及的第一分布式集群可以是如图1所示的分布式集群100,本发明实施例中的第一Master节点、第一备用节点、第一参考节点和第一Slave节点分别对应于图1所示的分布式集群100中的Master节点110,备用节点120,参考节点130和Slave节点140。
[0166] 在本发明实施例中,各个节点发送的心跳消息,可以基于相同的心跳周期来发送,换句话说,每个节点都是按照预设的心跳周期来发送心跳消息,相应地,也按照该预设的心跳周期来接收心跳消息。该心跳周期可以是系统预设的。
[0167] 在本发明实施例中,可选地,第一参考节点当在预设检测周期内没有接收到第一Master节点的心跳消息时,确定与第一Master节点处于失联状态,然后在下一个心跳周期,向该第一备用节点发送包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息的心跳消息。其中,该预设检测周期可以等于N倍的心跳周期,N可以为1或大于1的整数,具体地,例如N为4~7。
[0168] 还应理解,一个分布式集群中所有节点的节点属性(即节点的色信息,例如Master节点,Slave节点,参考节点和备用节点)都是公知的,例如,每一个Slave节点都知道该分布式集群中哪个是Master节点,哪个是备用节点,哪个是参考节点。
[0169] 可选地,在本发明实施例中,各个节点发送的心跳消息中均包括该心跳消息的发送端节点所认为的该心跳消息的接收端节点的节点属性信息 (Message Type)。
[0170] 例如,在图1所示的分布式集群100中,Master节点110向备用节点120 发送的心跳消息中包括的心跳消息的接收端的节点属性为备用节点;再例如, Master节点110发送给参考节点130的心跳消息中包括用于表示参考节点的节点属性信息。
[0171] 可选地,在本发明实施例中,S230该第一备用节点检测该第一Master 节点向该第一备用节点发送的心跳消息是否中断,包括:
[0172] 该第一备用节点检测在第一时刻与第二时刻之间是否接收到该第一 Master节点发送的心跳消息,该第一时刻为该第一备用节点接收到该第一参考节点发送的包括有该第一指示信息的心跳消息的时刻,该第二时刻早于该第一时刻,该第一时刻与该第二时刻之间的时间间隔为该第一Master节点向该第一备用节点发送心跳消息的心跳周期的N倍,N为正整数。
[0173] 具体地,例如在第一时刻t1该第一备用节点接收到第一参考节点发送的包括有该第一指示信息的心跳消息,该第一备用节点检测在该第一时刻t1与该第一时刻t1之前的第二时刻t2之间,是否接收到该第一Master节点发送的心跳消息。
[0174] 该第一时刻与该第二时刻之间的时间间隔可以为该第一Master节点向该第一备用节点发送心跳消息的心跳周期的整数倍,例如1倍、4倍或7倍。
[0175] 应理解,在S230中,第一备用节点还可以采用其他可行的方案,来检测自己与第一Master节点是否处于失联状态,例如,该第一备用节点还可以在接收到第一参考节点的包括该第一指示信息的心跳消息之前,自主地判断自己是否与第一Master节点处于失联状态,本发明实施例对此不作限定。
[0176] 因此,本发明实施例提供的处理至少一个分布式集群中的故障的方法,备用节点通过参考节点发送的包括第一指示信息的心跳消息以及自己的检测结果,确定Master节点与备用节点和参考节点均失联,从而确定出该Master 节点发生故障。能够较为高效、准确地判断分布式集群中的Master节点是否发生故障,相对于现有技术,能够有效缩短故障检测时间,也能够提高故障检测准确性。
[0177] 可选地,如图3所示,在本发明实施例中,在确定该第一Master节点发生故障的情况下,该方法200还包括:
[0178] S260,该第一备用节点向该第一分布式集群中所有节点发送广播消息,该广播消息用于指示该第一备用节点升级为该第一Master节点。
[0179] 具体地,该第一备用节点更新为该第一分布式集群内新的第一Master节点,即接替了原来第一Master节点(即发生故障的第一Master节点)的相关业务。
[0180] 可选地,在本发明实施中,该方法200还包括:
[0181] S270,由原有第一备用节点升级后的第一Master节点重新确定该第一分布式集群中的新的第一备用节点。
[0182] 具体地,例如该由原有第一备用节点升级后的第一Master节点从该第一分布式集群的第一Slave节点中选出新的第一备用节点,该新的第一备用节点与原有的第一备用节点具有相同功能,即用于监控第一分布式集群内的第一Master节点和第一参考节点,并在第一Master节点发生故障时,接替其业务。
[0183] 因此,在本发明实施例中,当备用节点确定Master节点发生故障后,快速升级为新的Master节点,跳过了目前技术中临时选举新的Master节点的环节,节省了选举新的Master节点所消耗的时间,从而能够较为快捷地恢复集群中存在的故障,有利于业务的延续性。
[0184] 应理解,在本发明实施例中,如果第一备用节点在收到第一参考节点发送的包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息的心跳消息后,检测到自己与该第一Master节点没有失联,则没有上述S250、S260和S270的动作。
[0185] 可选地,在本发明实施例中,第一参考节点的数量可以有多个。
[0186] 具体地,结合图1所示,例如分布式集群100中包括3个参考节点131,132 和133,且每个参考节点都与Master节点110和备用节点120构成一个由三个节点组成的监控环,即在该监控环内,三个节点之间互发心跳消息,利用方法200中描述的方法,互相监控彼此是否为故障节点。
[0187] 可选地,在本发明实施例中,备用节点120分别接收到参考节点131,132 和133发送的心跳消息A,B和C,其中心跳消息A中包括有用于指示参考节点131与Master节点110处于失联状态的指示信息,心跳消息B中包括有用于指示参考节点132与Master节点110处于失联状态的指示信息,心跳消息C中包括有用于指示参考节点133与Master节点110处于失联状态的指示信息;备用节点120检测到自身与Master节点110也处于失联状态;该备用节点120根据心跳消息A,B和C中的指示信息,以及自己的检测信息,推断出,该Master节点110与参考节点131,132,133以及备用节点120均处于失联状态,则可以较为准确地确定该Master节点110发生故障。
[0188] 因此,在本发明实施例中,分布式集群中包括多个参考节点,可以向备用节点提供较多的参考信息,从而有助于备用节点快速且较为准确地判断出 Master节点是否发生故障。
[0189] 还应理解,在上述包括多个参考节点的实施例中,备用节点可以自主地检测自身是否与Master节点失联,也可以在接收到心跳消息A和/或心跳消息B和/或心跳消息C的情况下,再去检测自身是否与Master节点失联。
[0190] 结合图1,在分布式集群100中,Master节点110也可以根据方法200 描述的两方共同监控一方的方法,监控Slave节点140的故障情况。
[0191] 图4示出了本发明另一实施例提供的处理至少一个分布式集群中的故障的方法300的示意性流程图,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,该第一分布式集群还包括第一参考节点以及作为该第一Master节点的备份的第一备用节点,该方法300包括:
[0192] S310,该第一Master节点接收该第一备用节点发送的心跳消息,该心跳消息包括用于指示该第一备用节点与该第一Slave节点处于失联状态的第三指示信息;
[0193] S320,该第一Master节点根据该第三指示信息,确定该第一备用节点与该第一Slave节点处于失联状态;
[0194] S330,该第一Master节点检测该第一Slave节点向该第一Master节点发送的心跳消息是否中断;
[0195] S340,在检测到该第一Slave节点向该第一Master节点发送的心跳消息中断的情况下,该第一Master节点确定该第一Master节点与该第一Slave节点也处于失联状态;
[0196] S350,该第一Master节点确定与该第一Master节点和该第一备用节点均失联的该第一Slave节点发生故障。
[0197] 在本发明实施例中,分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点,该Master节点根据备用节点发送的心跳消息确定备用节点与该Slave处于失联状态,并通过检测该Slave节点向该Master节点发送的心跳消息也中断来确定该Slave节点与该Master节点也处于失联状态,从而可以有效地确定与该Master节点和该备用节点均失联的该Slave节点发生故障。
[0198] 因此,本发明实施例提供的处理至少一个分布式集群中的故障的方法, Master节点通过备用节点发送的用于指示Slave节点失联的心跳消息,以及自身检测到的该Slave节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Slave节点发生故障,相比于现有技术,能够有效缩短Slave节点的故障检测时间,同时也能够提高故障检测的准确性。
[0199] 在本发明实施例中,Master节点无需像现有技术中一样向所有Slave节点发送心跳消息,只需通过检测Salve节点发送的心跳消息,实现对Slave节点的监控,并结合备用节点发送的心跳消息中的用于指示Salve节点失联的指示信息,可以确定出存在故障的Slave节点。相对于现有方案,Master节点的心跳消息处理量可以减半,有效降低了Master节点的负载。
[0200] 在本发明实施例中,可选地,第一备用节点当在预设检测周期内没有接收到第一Slave节点的心跳消息时,确定与该第一Slave节点失联,然后在下一个心跳周期,向第一Master节点发送包括用于指示第一备用节点与该第一 Slave节点失联的第三指示信息的心跳消息。其中,该预设检测周期可以等于 N倍的心跳消息发送周期,N可以为1或大于1的整数。
[0201] 可选地,在本发明实施例中,该备用节点发送的包括第三指示信息的心跳消息中还包括用于指示该心跳消息的接收端的节点属性的指示信息,其中节点属性也可称之为角色信息(Message Type)。
[0202] 可选地,在本发明实施例中,S330该第一Master节点检测该第一Slave 节点向该第一Master节点发送的心跳消息是否中断,包括:
[0203] 该第一Master节点检测在第三时刻与第四时刻之间是否接收到该第一 Slave节点发送的心跳消息,该第三时刻为该第一Master节点接收到该第一备用节点发送的包括有该第三指示信息的心跳消息的时刻,该第四时刻早于该第三时刻,该第三时刻与该第四时刻之间的时间间隔为该第一Slave节点向该第一Master节点发送心跳消息的心跳周期的N倍,N为正整数。
[0204] 具体地,例如在第三时刻t3该第一Master节点接收到第一备用节点发送的包括有该第三指示信息的心跳消息,该第一Master节点检测在该第三时刻 t2与该第三时刻t3之前的第四时刻t4之间,是否接收到该第一Slave节点发送的心跳消息。
[0205] 该第三时刻与该第四时刻之间的时间间隔可以为该第一Slave节点向该第一Master节点发送心跳消息的心跳周期的整数倍,例如,1倍、4倍或7 倍。
[0206] 应理解,在S330中,该第一Master节点还可以采用其他可行的方案,来检测与第一Slave节点是否处于失联状态,例如,该第一Master节点还可以在接收到第一备用节点发送的包括该第三指示信息的心跳消息之前,自主地判断自己是否与第一Slave节点处于失联状态,本发明实施例对此不作限定。
[0207] 因此,在本发明实施例中,Master节点根据备用节点发送的包括第三指示信息的心跳消息以及自己对Slave节点的检测信息,通过确定Master节点和备用节点均与该Salve节点均处于失联状态,从而能够较为高效、准确地确定该Slave节点发生故障,相比于现有的处理集群中故障的方案,有效缩短了故障检测的时间,同时也能够降低在故障检测过程中Master节点的能耗。
[0208] 现有的分布式集群中包括两种角色的节点,即Master节点和Slave节点,通过互发心跳消息来监控彼此是否发生故障,由于监控信息的单一,一般需要通过多次检测心跳消息,例如,Slave节点在多个预设检测周期(心跳周期的整数倍)内都接收不大Master节点发送的心跳消息时,才会认为Master 节点发生故障,导致故障检测时间较长。
[0209] 在本发明实施例提供的分布式集群中包括四种角色的节点,例如图1所示的,Master节点,Slave节点,参考节点和备用节点,其中,Master节点,备用节点和参考节点互发心跳消息,能够互相监控;Slave节点向Master节点和备用节点发送心跳消息,即Master节点和备用节点可以共同监控Slave 节点。参考节点还向Slave节点发送心跳消息,用于让Slave节点感知到自己所在的集群。例如,Master节点通过参考备用节点发送的心跳消息和自己对 Salve节点的监控信息,可以快速、准确地确定Slave节点是否发生故障。在本发明实施例中,如果Master节点发现备用节点和/或参考节点发生故障,可以在Slave节点中重新确定出新的备用节点和/或参考节点;如果备用节点发现Master节点发生故障,会快速更新为新的Master节点。即在本发明实施例中,集群中四个角色的节点实时地维护这集群的完整性和有效性。
[0210] 此外,在本发明实施例中,Master节点只接收Slave节点的心跳消息,而不向各个Slave节点发送心跳消息,根据备用节点发送的心跳消息和自己的检测结果,就可以有效地监控Slave节点的故障情况,同时相比于现有技术,一方面能够提高检测故障的效率,另一方面有效地降低了Master节点的负载。
[0211] 可选地,在本发明实施例中,该方法300还包括:
[0212] S360,该第一Master节点在预设检测周期内检测是否接收到该第一备用节点发送的心跳消息和该第一参考节点发送的心跳消息,该预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
[0213] S370,在该预设检测周期内既没有接收到该第一备用节点发送的心跳消息,也没有接收到该第一参考节点发送的心跳消息的情况下,该第一Master 节点确定该第一备用节点和该第一参考节点均发生故障。
[0214] 具体地,该预设检测周期可以是系统预设的用于判断故障的时间段,例如可以直接等于心跳周期,也可以为心跳周期的4倍或7倍。
[0215] 可选地,在本发明实施例中,该方法300还包括:
[0216] S380,当该第一Master节点确定该第一备用节点和该第一参考节点均发生故障的情况下,重新确定该第一分布式集群中的新的第一备用节点和新的第一参考节点。
[0217] 具体地,例如利用分布式选举算法、从满足某一原则(如心跳正常)的节点集合里面随机指定新的备用节点和新的参考节点。
[0218] 在本发明实施例中,Master节点利用多路径检测结果,综合判断Slave 节点的故障情况,一方面可以缩短检测故障的时间,另一方面可以提高故障检测的可靠性。
[0219] 一个网络集群因交换节点或路由节点发生故障而导致分裂成多个子集群是一种典型的集群故障场景。本发明实施例涉及的包括四个角色的集群,可以有效避免或者解决上述集群分裂的问题。
[0220] 可选地,在本发明实施例中,
[0221] 该方法300还包括:该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该方法300还包括:
[0222] S3010,该第一Master节点接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第四指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第四指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0223] 具体地,该第一分布式集群与该第二分布式集群具有相同的集群标识,所以,第二分布式集群中的第二参考节点能够感知到第一分布式集群中的节点,并将第一分布式集群中的所有节点都看作为Slave节点,因此,第二参考节点分别向第二分布式集群中的第二Salve节点和第一分布式集群中的所有节点发送包括用于指示接收端的节点属性为Salve节点的心跳消息。
[0224] S3020,该第一Master节点根据该第四指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一Master 节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一Master节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0225] S3030,该第一Master节点与该第二分布式集群中的第二Master节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0226] 可选地,在本发明实施例中,S3030第一Master节点与该第二分布式集群中的第二Master节点进行协商,包括:
[0227] S3031,该第一Master节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点的节点属性为Master节点的广播消息;
[0228] S3032,该第一Master节点接收该第二Master节点发送的协商消息,该协商消息中包括用于指示该第二Master节点的权重的信息,该协商消息是该第二Master节点在检测到该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一Master节点发送的;
[0229] S3033,在确定该第一Master节点的权重大于或等于该第二Master节点的权重时,该第一Master节点向该第二Master节点发送用于指示该第二 Master节点降级为Slave节点的协商响应消息;
[0230] S3034,在确定该第一Master节点的权重小于该第二Master节点的权重时,该第一Master节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点降级为Slave节点的广播消息。
[0231] 具体地,如图5(a)所示,一个网络集群分裂为两个子集群A和B,子集群A和B是由一个网络集群分裂而来,因此该子集群A和B具有相同的集群标识。记子集群A包括Master节点A,备用节点A,参考节点A和Slave 节点A;子集群B包括Master节点B,备用节点B,参考节点B和Slave节点B。子集群A和子集群B中的各个节点都具有如图1所示的分布式集群100 中的对应节点的特性。
[0232] 在子集群B中的参考节点B看来,它能够接收到Master节点B和备用节点B的心跳消息,所以,在参考节点B看来,除了Master节点B和备用节点B之外,其他节点都是Slave节点,即子集群A中的所有节点在参考节点B看来,都是处于失联状态下的Slave节点。
[0233] 如图5(b)所示,子集群B中的参考节点B除了向子集群B中的Master 节点B发送心跳消息(接收端的节点属性为Master)、向子集群B中的备用节点B发送心跳消息(接收端的节点属性为备用)、向子集群B中的Slave节点B 发送心跳消息(接收端的节点属性为Slave)之外,所以还会向子集群A中的所有节点发送心跳消息,其该心跳消息中指示的接收端的节点属性为Slave节点。
[0234] 子集群A中的所有节点都接收到子集群B中的参考节点B发送的包括用于指示接收端的节点属性为Slave节点的指示信息的心跳消息,子集群A中的Master节点A,备用节点A和参考节点A接收到参考节点B发送的该心跳消息后,会感知到该心跳消息携带的节点属性与自身的节点属性信息不相符。
[0235] 以子集群A中的Master节点A为例,子集群A中的Master节点A根据参考节点B发送的心跳消息,确定该心跳消息携带的节点属性与自身的节点属性信息不相符,子集群A中的Master节点A向所有节点发送用于指示自己的节点属性的广播消息,如图5(c)所示。
[0236] 子集群B中Master节点B接收到Master节点A发送的广播消息后,检测到角色冲突,向子集群A中的Master节点A发送协商消息,该协商消息中携带有Master节点B的权重信息。
[0237] Master节点A接收到Master节点B发送的协商消息后,比较自身与 Master节点B的权重,如果判断Master节点A的权重高于Master节点B的权重,则Master节点A向Master节点B发送用于指示Master节点B降级为 Slave节点的协商响应消息;如果判断Master节点B的权重高于Master节点 A的权重,则该Master节点A主动降级为Slave节点。
[0238] 具体地,节点的权重例如为:节点存活时长,节点本地缓存的新旧程度 (一般用版本号来表征),或者所管理的集群的规模等等。
[0239] 应理解,图5(c)只示出了以Master节点A为例的示意图,实际中,接收到参考节点B发送的用于指示接收端节点属性为Slave节点的心跳消息后,子集群A中的备用节点B和参考节点B也会判断出该心跳消息携带的节点属性与自身的节点属性信息不相符,也会发送包括自己节点属性的广播消息。备用节点A和备用节点B也会采用类似图5(c)和图5(d)所述的示意图,协商最终的备用节点,参考节点A和参考节点B也会采用类似图5(c)和图5(d)所述的示意图,协商最终的参考节点。
[0240] 可选地,在图2所示的实施例提供的方法200中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二 Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该方法200还包括:
[0241] S2010,该第一备用节点接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第二指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第二指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0242] S2020,该第一备用节点根据该第二指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一备用节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一备用节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0243] S2030,该第一备用节点与该第二分布式集群中的第二备用节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0244] 可选地,在本发明实施例中,S2030该第一备用节点与该第二分布式集群中的第二备用节点进行协商,包括:
[0245] S2031,该第一备用节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点的节点属性为备用节点的广播消息;
[0246] S2032,该第一备用节点接收该第二备用节点发送的协商消息,该协商消息中包括用于指示该第二备用节点的权重的信息,该协商消息是该第二备用节点在检测到该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一备用节点发送的;
[0247] S2033,在确定该第一备用节点的权重大于或等于该第二备用节点的权重的情况下,该第一备用节点向该第二备用节点发送用于指示该第二备用节点降级为Slave节点的协商响应消息;
[0248] S2034,在确定该第一备用节点的权重小于该第二备用节点的权重的情况下,该第一备用节点向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点降级为Slave节点的广播消息。
[0249] 具体流程与图5( a ) -5 ( d ) 所示一致,这里不再赘述。
[0250] 应理解,本发明实施例中的第一分布式集群可以对应于图5( a ) -5 ( d ) 所示的子集群A,第二分布式集群对应于图5( a ) -5 ( d ) 中的子集群B。
[0251] 还应理解,图5(a)只示出了,子集群B中的参考节点B将子集群A中的所有节点看作Slave节点,而向其发送包括有指示接收端的节点属性为Slave 节点的心跳消息。还应理解,在子集群A与子集群B合并为一个集群之前,子集群A中的参考节点A也会将子集群B中的所有节点看作为Slave节点,也会向其发送包括有指示接收端的节点属性为Slave节点的心跳消息。子集群B中的Master节点B,参考节点B,以及备用节点B也会执行图5(b),图5(c)和图5(d)所示的动作,直至子集群A和子集群B整合为一个集群为止。
[0252] 还应理解,上面结合图5( a ) -5 ( d ) 只描述了一个分布式集群分裂为两个子集群后,将其整合恢复的过程,本发明实施例提供的集群整合恢复的方案同样适应于,将两个以上分裂的分布式子集群整合为一个分布式集群的场合,本发明实施例对此不作限定。
[0253] 在本发明实施例中,各个节点发送的心跳消息中都携带该心跳消息的发送端节点所认为的心跳消息的接收端节点的节点属性信息(角色信息),这样能够让接收心跳消息的节点,感知到集群的分裂,从而触发后续的动作,实现分裂的集群的整合。
[0254] 综上所述,本发明实施例提供的处理至少一个分布式集群中的故障的方法,能够有效缩短集群中故障检测的时间,并能够有效提高故障检测的准确性,同时也能够降低Master节点处理心跳消息的负担。
[0255] 上文结合图1至图3,描述了在本发明实施例提出的分布式集群中,备用节点确定Master节点发生故障的过程,结合图1和图4,描述了在本发明实施例提出的分布式集群中,Master节点确定Slave节点发生故障的过程。下面从参考节点的角度描述本发明实施例提供的用于处理分布式集群的故障的方法。
[0256] 图6示出了本发明另一实施例提供的处理至少一个分布式集群中的故障的方法400,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,该分布式集群还包括第一参考节点,以及作为该第一Master节点的备份的第一备用节点,该方法400包括:
[0257] S410,该第一参考节点检测该第一Master节点向该第一参考节点发送的心跳消息是否中断;
[0258] S420,当确定该第一Master向该第一参考节点发送的心跳消息中断时,该第一参考节点确定与该第一Master节点处于失联状态;
[0259] S430,该第一参考节点向第一备用节点发送心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息,以便于所述第一备用节点判断所述第一Master节点是否为故障节点。
[0260] 在本发明实施例中,参考节点在确定与Master节点处于失联状态的情况下,向备用节点发送包括用于指示该状况的指示信息的心跳消息,从而以便于备用节点,通过参考该指示信息,进一步判断该Master节点是否发生故障。有助于备用节点根据多路径的检测信息综合确定分布式集群中的故障情况,能够有效提高故障检测的效率和准确性。
[0261] 可选地,在本发明实施例中,S410该第一参考节点检测该第一Master 节点向该第一参考节点发送的心跳消息是否中断,包括:
[0262] 该第一参考节点在预设检测周期内,检测是否接收到该第一Master发送的心跳消息。
[0263] 具体地,该预设检测周期可以为该第一Master节点向该第一参考节点发送心跳消息的心跳周期的N倍,N为正整数。
[0264] 可选地,在本发明实施例中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该第二分布式集群与第一分布式集群为一个网络集群分裂后形成的两个子集群,该方法400 还包括:
[0265] 该第一参考节点分别向该第一分布式集群中的第一Slave节点,以及该第二分布式集群中的所有节点发送心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的指示信息,以便于该第二分布式集群中的第二Master节点,第二备用节点和第二参考节点能够通过该指示信息,感知到该第二分布式集群。
[0266] 具体地,如图5(b)所示,子集群B中的参考节点B向Slave节点B,以及子集群A中的所有节点发送包括用于指示接收端为Slave节点的指示信息的心跳消息。
[0267] 应理解,本发明实施例中的第一参考节点可对应于方法200和方法300 中涉及的第二参考节点,还可以对应于图5(b)所示的参考节点B。
[0268] 在本发明实施例中,参考节点发送的心跳消息携带用于指示心跳消息的接收端的节点属性的指示信息,这样能够让心跳消息的接收端端节点,感知到集群的分裂,从而触发后续的动作,实现分裂的集群的整合。
[0269] 综上所述,在本发明实施例提供的处理至少一个分布式集群中的故障的方法中,该分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点。该备用节点根据参考节点发送的心跳消息确定 Master节点与该参考节点处于失联状态,并通过检测该Master节点向该备用节点发送的心跳消息也中断来确定该Master节点与该备用节点也处于失联状态,从而可以有效地确定与该备用节点和该参考节点均失联的该Master节点发生故障。该Master节点根据备用节点发送的心跳消息确定备用节点与该 Slave处于失联状态,并通过检测该Slave节点向该Master节点发送的心跳消息也中断来确定该Slave节点与该Master节点也处于失联状态,从而可以有效地确定与该Master节点和该备用节点均失联的该Slave节点发生故障。即本发明实施例提供的分布式集群中包括Master节点,Slave节点,备用节点和参考节点,可以通过两方节点的检测结果综合判断第三方节点是否发生故障,从而能够较为高效、准确地检测故障,相对于现有技术,能够有效缩短故障检测时间,同时也能够降低Master节点处理心跳消息的负担。
[0270] 上文中结合图1至图6,描述了本发明实施例提供的处理至少一个分布式集群中的故障的方法,下面将结合图7和图8,描述本发明实施例提供的用于处理至少一个分布式集群中的故障的设备。
[0271] 图7示出了根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备500的示意性框图。该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,该分布式集群还包括第一参考节点,以及作为该第一Master节点的备份的第一备用节点,其中,该设备为该第一备用节点,该设备500包括:
[0272] 第一接收模块510,用于接收该第一参考节点发送的包括有该第一指示信息的心跳消息;
[0273] 第一确定模块520,用于根据该第一接收模块接收的该第一指示信息,确定该第一参考节点与该第一Master节点处于失联状态;
[0274] 检测模块530,用于检测该第一Master节点向该设备发送的心跳消息是否中断;
[0275] 第二确定模块540,用于在该检测模块检测到该第一Master节点向该设备发送的心跳消息中断的情况下,确定该设备与该第一Master节点也处于失联状态;
[0276] 第三确定模块550,用于根据该第一确定模块和该第二确定模块确定的结果,确定该第一Master节点发生故障。
[0277] 在该第一分布式集群中,该第一参考节点用于,在检测到该第一Master 节点向该第一参考节点发送的心跳消息中断的情况下,向该第一备用节点发送心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息。
[0278] 在本发明实施例中,该分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点,该备用节点根据参考节点发送的心跳消息确定Master节点与该参考节点处于失联状态,并通过检测该 Master节点向该备用节点发送的心跳消息也中断来确定该Master节点与该备用节点也处于失联状态,从而可以有效地确定与该备用节点和该参考节点均失联的该Master节点发生故障。
[0279] 因此,本发明实施例提供的设备,通过参考节点发送的用于指示Master 节点失联的心跳消息,以及自身检测到的该Master节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。
[0280] 可选地,本发明实施例提供的用于处理至少一个分布式集群中的故障的设备500中涉及的分布式集群可以是如图1所示的分布式集群100。
[0281] 可选地,在本发明实施例中,该设备500还包括:
[0282] 发送模块560,用于在该第三确定模块确定该第一Master节点发生故障的情况下,向该第一分布式集群中所有节点发送广播消息,该广播消息用于指示该设备升级为该第一Master节点。
[0283] 可选地,在本发明实施例中,该检测模块具体用于,检测在第一时刻与第二时刻之间是否接收到该第一Master节点发送的心跳消息,该第一时刻为该设备接收到该第一参考节点发送的包括有该第一指示信息的心跳消息的时刻,该第二时刻早于该第一时刻,该第一时刻与该第二时刻之间的时间间隔为该第一Master节点向该设备发送心跳消息的心跳周期的N倍,N为正整数。
[0284] 可选地,在本发明实施例中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该设备500还包括:
[0285] 第二接收模块570,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第二指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第二指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0286] 第四确定模块580,用于根据该第二接收模块接收的该第二指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该设备的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该设备所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0287] 协商模块590,用于与该第二分布式集群中的第二备用节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0288] 可选地,在本发明实施例中,该协商模块590包括:
[0289] 第一发送单元591,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备的节点属性为备用节点的广播消息;
[0290] 接收单元592,用于接收该第二备用节点发送的协商消息,该协商消息中包括用于指示该第二备用节点的权重的信息,该协商消息是该第二备用节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该设备发送的;
[0291] 第二发送单元593,用于在确定该设备的权重大于或等于该第二备用节点的权重的情况下,向该第二备用节点发送用于指示该第二备用节点降级为 Slave节点的协商响应消息;
[0292] 第三发送单元594,用于在确定该设备权重小于该第二备用节点的权重的情况下,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备降级为Slave节点的广播消息。
[0293] 因此,本发明实施例提供的设备,通过参考节点发送的用于指示Master 节点失联的心跳消息,以及自身检测到的该Master节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。
[0294] 应理解,根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备500可对应于本发明实施例的处理至少一个分布式集群中的故障的方法中的备用节点,并且设备500中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5( d ) 中的各个方法的相应流程,为了简洁,在此不再赘述。
[0295] 图8示出了根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备600的示意性框图。该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,该第一分布式集群还包括第一参考节点以及作为该第一Master节点的备份的第一备用节点,该设备600为该第一Master节点,该设备600包括:
[0296] 第一接收模块610,用于接收该第一备用节点发送的包括该第三指示信息的心跳消息;
[0297] 第一确定模块620,用于根据该第一接收模块接收的该第三指示信息,确定该第一备用节点与该第一Slave节点处于失联状态;
[0298] 第一检测模块630,用于检测该第一Slave节点向该设备发送的心跳消息是否中断;
[0299] 第二确定模块640,用于在该第一检测模块检测到该第一Slave节点向该设备发送的心跳消息中断的情况下,确定该设备与该第一Slave节点也处于失联状态;
[0300] 第三确定模块650,用于根据该第一确定模块与该第二确定模块确定的结果,确定该第一Slave节点发生故障。
[0301] 在该第一分布式集群中,该第一备用节点用于,在检测到该第一Slave 节点向该第一备用节点发送的心跳消息中断的情况下,向该第一Master节点发送心跳消息,该心跳消息包括用于指示该第一备用节点与该第一Slave节点处于失联状态的第三指示信息。
[0302] 在本发明实施例中,分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点,该Master节点根据备用节点发送的心跳消息确定备用节点与该Slave处于失联状态,并通过检测该Slave节点向该Master节点发送的心跳消息也中断来确定该Slave节点与该Master节点也处于失联状态,从而可以有效地确定与该Master节点和该备用节点均失联的该Slave节点发生故障。
[0303] 因此,在本发明实施例中,Master节点通过备用节点发送的用于指示 Slave节点失联的心跳消息,以及自身检测到的该Slave节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Slave节点发生故障,相比于现有的处理集群中故障的方案,有效缩短了故障检测的时间,同时也能够降低在故障检测过程中Master节点的能耗。
[0304] 可选地,在本发明实施例中,该第一检测模块具体用于,检测在第三时刻与第四时刻之间是否接收到该第一Slave节点发送的心跳消息,该第三时刻为该设备接收到该第一备用节点发送的包括有该第三指示信息的心跳消息的时刻,该第四时刻早于该第三时刻,该第三时刻与该第四时刻之间的时间间隔为该第一Slave节点向该设备发送心跳消息的心跳周期的N倍,N为正整数。
[0305] 可选地,在本发明实施例中,该设备600还包括:
[0306] 第二检测模块,用于在预设检测周期内检测是否接收到该第一备用节点发送的心跳消息和该第一参考节点发送的心跳消息,该预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
[0307] 第四确定模块,用于在该第二检测模块在该预设检测周期内既没有接收到该第一备用节点发送的心跳消息,也没有接收到该第一参考节点发送的心跳消息的情况下,确定该第一备用节点和该第一参考节点均发生故障。
[0308] 可选地,在本发明实施例中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该设备600还包括:
[0309] 第二接收模块,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第四指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第四指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0310] 第五确定模块,用于根据该第二接收模块接收的该第四指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该设备的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该设备所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0311] 协商模块,用于与该第二分布式集群中的第二Master节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0312] 可选地,在本发明实施例中,该协商模块包括:
[0313] 第一发送单元,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备的节点属性为Master节点的广播消息;
[0314] 接收单元,用于接收该第二Master节点发送的协商消息,该协商消息中包括用于指示该第二Master节点的权重的信息,该协商消息是该第二Master 节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该设备发送的;
[0315] 第二发送单元,用于在确定该设备的权重大于或等于该第二Master节点的权重时,向该第二Master节点发送用于指示该第二Master节点降级为Slave 节点的协商响应消息;
[0316] 第三发送单元,用于在确定该设备的权重小于该第二Master节点的权重时,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该设备降级为Slave节点的广播消息。
[0317] 因此,在本发明实施例中,Master节点通过备用节点发送的用于指示Slave节点失联的心跳消息,以及自身检测到的该Slave节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Slave节点发生故障,相比于现有的处理集群中故障的方案,有效缩短了故障检测的时间,同时也能够降低在故障检测过程中Master节点的能耗。
[0318] 应理解,根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备600可对应于本发明实施例的处理至少一个分布式集群中的故障的方法中的Master节点,并且设备600中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5( d ) 中的各个方法的相应流程,为了简洁,在此不再赘述。
[0319] 如图9所示,本发明实施例还提供了一种用于处理至少一个分布式集群中的故障的设备700,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,该分布式集群还包括第一参考节点,以及作为该第一Master节点的备份的第一备用节点,该设备 700为该第一备用节点,该设备700包括处理器710、存储器720、总线系统 730、接收器740和发送器750。其中,处理器710、存储器720、接收器740 和发送器750通过总线系统730相连,该存储器720用于存储指令,该处理器710用于执行该存储器720存储的指令,以控制接收器740接收信号,并控制发送器750发送信号。其中,接收器740用于,接收该第一参考节点发送的心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息;该处理器710用于,根据该第一指示信息,确定该第一参考节点与该第一Master节点处于失联状态;检测该第一Master 节点向该第一备用节点发送的心跳消息是否中断;在检测到该第一Master节点向该第一备用节点发送的心跳消息中断的情况下,该第一备用节点确定该第一备用节点与该第一Master节点也处于失联状态;确定与该第一备用节点和该第一参考节点均失联的该第一Master节点发生故障。
[0320] 因此,本发明实施例提供的设备,通过参考节点发送的用于指示Master 节点失联的心跳消息,以及自身检测到的该Master节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。
[0321] 可选地,在本发明实施例中,发送器750还用于,在处理器710确定该第一Master节点发生故障之后,向该第一分布式集群中所有节点发送广播消息,该广播消息用于指示该第一备用节点升级为该第一Master节点。
[0322] 可选地,在本发明实施例中,处理器710具体用于,检测在第一时刻与第二时刻之间是否接收到该第一Master节点发送的心跳消息,该第一时刻为该第一备用节点接收到该第一参考节点发送的包括有该第一指示信息的心跳消息的时刻,该第二时刻早于该第一时刻,该第一时刻与该第二时刻之间的时间间隔为该第一Master节点向该第一备用节点发送心跳消息的心跳周期的 N倍,N为正整数。
[0323] 可选地,在本发明实施例中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该接收器740 用于,接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第二指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第二指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;该处理器710用于,根据该第二指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一备用节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一备用节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;与该第二分布式集群中的第二备用节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0324] 可选地,在本发明实施例中,该发送器750用于,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点的节点属性为备用节点的广播消息;该接收器740用于,接收该第二备用节点发送的协商消息,该协商消息中包括用于指示该第二备用节点的权重的信息,该协商消息是该第二备用节点在检测到该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一备用节点发送的;该发送器750用于,在确定该第一备用节点的权重大于或等于该第二备用节点的权重的情况下,向该第二备用节点发送用于指示该第二备用节点降级为Slave节点的协商响应消息;在确定该第一备用节点的权重小于该第二备用节点的权重的情况下,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点降级为Slave节点的广播消息。
[0325] 应理解,在本发明实施例中,该处理器710可以是中央处理单元(Central Processing Unit,简称为“CPU”),该处理器710还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程阵列(FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0326] 该存储器720可以包括只读存储器随机存取存储器,并向处理器710 提供指令和数据。存储器720的一部分还可以包括非易失性随机存取存储器。例如,存储器720还可以存储设备类型的信息。
[0327] 该总线系统730除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统730。
[0328] 在实现过程中,上述方法的各步骤可以通过处理器710中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器720,处理器710读取存储器720中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
[0329] 因此,本发明实施例提供的设备,通过参考节点发送的用于指示Master 节点失联的心跳消息,以及自身检测到的该Master节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。
[0330] 应理解,根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备700可对应于本发明实施例的处理至少一个分布式集群中的故障的方法中的备用节点,也对应于根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备500,并且设备,700中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5( d ) 中的各个方法的相应流程,为了简洁,在此不再赘述。
[0331] 如图10所示,本发明实施例还提供了用于处理至少一个分布式集群中的故障的设备800,该至少一个分布式集群包括第一分布式集群,该第一分布式集群中包括第一Master节点和第一Slave节点,该第一分布式集群还包括第一参考节点以及作为该第一Master节点的备份的第一备用节点,该设备800 为该第一Master节点,该设备800包括处理器810、存储器820、总线系统 830、接收器840和发送器850。其中,处理器810、存储器820、接收器840 和发送器850通过总线系统830相连,该存储器820用于存储指令,该处理器810用于执行该存储器820存储的指令,以控制接收器840接收信号,并控制发送器850发送信号。其中,该接收器840用于,接收该第一备用节点发送的心跳消息,该心跳消息包括用于指示该第一备用节点与该第一Slave 节点处于失联状态的第三指示信息;该处理器810用于,根据该第三指示信息,确定该第一备用节点与该第一Slave节点处于失联状态;检测该第一Slave 节点向该第一Master节点发送的心跳消息是否中断;在检测到该第一Slave 节点向该第一Master节点发送的心跳消息中断的情况下,该第一Master节点确定该第一Master节点与该第一Slave节点也处于失联状态;点确定与该第一Master节点和该第一备用节点均失联的该第一Slave节点发生故障。
[0332] 因此,在本发明实施例中,Master节点通过备用节点发送的用于指示 Slave节点失联的心跳消息,以及自身检测到的该Slave节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Slave节点发生故障,相比于现有的处理集群中故障的方案,有效缩短了故障检测的时间,同时也能够降低在故障检测过程中Master节点的能耗。
[0333] 可选地,在本发明实施例中,该处理器810用于,检测在第三时刻与第四时刻之间是否接收到该第一Slave节点发送的心跳消息,该第三时刻为该第一Master节点接收到该第一备用节点发送的包括有该第三指示信息的心跳消息的时刻,该第四时刻早于该第三时刻,该第三时刻与该第四时刻之间的时间间隔为该第一Slave节点向该第一Master节点发送心跳消息的心跳周期的N倍,N为正整数。
[0334] 可选地,在本发明实施例中,该处理器810用于,在预设检测周期内检测是否接收到该第一备用节点发送的心跳消息和该第一参考节点发送的心跳消息,该预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;在该预设检测周期内既没有接收到该第一备用节点发送的心跳消息,也没有接收到该第一参考节点发送的心跳消息的情况下,确定该第一备用节点和该第一参考节点均发生故障。
[0335] 可选地,在本发明实施例中,该至少一个分布式集群还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该接收器840 用于,接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第四指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第四指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;该处理器810用于,根据该第四指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一 Master节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一Master节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;与该第二分布式集群中的第二Master节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0336] 可选地,在本发明实施例中,发送器850用于,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点的节点属性为Master节点的广播消息;接收器840用于,接收该第二Master节点发送的协商消息,该协商消息中包括用于指示该第二Master节点的权重的信息,该协商消息是该第二Master节点在检测到该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一Master节点发送的;发送器850用于,在确定该第一Master节点的权重大于或等于该第二Master节点的权重时,向该第二Master节点发送用于指示该第二Master节点降级为Slave节点的协商响应消息;在确定该第一Master节点的权重小于该第二Master节点的权重时,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一 Master节点降级为Slave节点的广播消息。
[0337] 因此,在本发明实施例中,Master节点通过备用节点发送的用于指示 Slave节点失联的心跳消息,以及自身检测到的该Slave节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Slave节点发生故障,相比于现有的处理集群中故障的方案,有效缩短了故障检测的时间,同时也能够降低在故障检测过程中Master节点的能耗。
[0338] 应理解,根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备800可对应于本发明实施例的处理至少一个分布式集群中的故障的方法中的Master节点,也可以对应于根据本发明实施例提供的用于处理至少一个分布式集群中的故障的设备
600,并且设备,800中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5(d) 中的各个方法的相应流程,为了简洁,在此不再赘述。
[0339] 图11示出了本发明实施例提供的分布式集群系统900的示意性框图,该分布式集群系统包括第一分布式集群901,该第一分布式集群中包括第一 Master节点910和第一Slave节点920,该分布式集群还包括第一参考节点 930,以及作为该第一Master节点的备份的941,该第一Master节点910、该第一备用节点940和该第一参考节点930用于彼此之间互发心跳消息,该第一参考节点930还用于向该第一Slave节点920发送心跳消息,该第一Slave 节点920用于分别向该第一Master节点910和该第一备用节点930发送心跳消息,其中,
[0340] 该第一参考节点930还用于,在检测到该第一Master节点向该第一参考节点发送的心跳消息中断的情况下,向该第一备用节点发送心跳消息,该心跳消息包括用于指示该第一参考节点与该第一Master节点处于失联状态的第一指示信息,
[0341] 该第一备用节点940包括:
[0342] 第一接收模块941,用于接收该第一参考节点发送的包括该第一指示信息的心跳消息;
[0343] 第一确定模块942,用于根据该第一接收模块接收的该第一指示信息,确定该第一参考节点与该第一Master节点处于失联状态;
[0344] 检测模块943,用于检测该第一Master节点向该第一备用节点发送的心跳消息是否中断;
[0345] 第二确定模块944,用于在该检测模块检测到该第一Master节点向该第一备用节点发送的心跳消息中断的情况下,确定该第一备用节点与该第一 Master节点也处于失联状态;
[0346] 第三确定模块945,用于根据该第一确定模块和该第二确定模块确定的结果,确定该第一Master节点发生故障。
[0347] 具体地,该第一分布式集群可对应于图1所示的分布式集群100,具体描述可参见上文,为了简洁,这里不再赘述。
[0348] 在本发明实施例中,该分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点,该备用节点根据参考节点发送的心跳消息确定Master节点与该参考节点处于失联状态,并通过检测该 Master节点向该备用节点发送的心跳消息也中断来确定该Master节点与该备用节点也处于失联状态,从而可以有效地确定与该备用节点和该参考节点均失联的该Master节点发生故障。在本发明实施例中,备用节点通过参考节点发送的用于指示Master节点失联的心跳消息,以及自身检测到的该Master 节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。
[0349] 可选地,作为一个实施例,该第一备用设备940还包括:
[0350] 发送模块946,用于在该第三确定模块确定该第一Master节点发生故障的情况下,向该第一分布式集群中所有节点发送广播消息,该广播消息用于指示该第一备用节点升级为该第一Master节点。
[0351] 可选地,作为一个实施例,该检测模块具体用于,检测在第一时刻与第二时刻之间是否接收到该第一Master节点发送的心跳消息,该第一时刻为该第一备用节点接收到该第一参考节点发送的包括有该第一指示信息的心跳消息的时刻,该第二时刻早于该第一时刻,该第一时刻与该第二时刻之间的时间间隔为该第一Master节点向该第一备用节点发送心跳消息的心跳周期的N 倍,N为正整数。
[0352] 可选地,作为一个实施例,该分布式集群系统还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该第一备用节点还包括:
[0353] 第二接收模块,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第二指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第二指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0354] 第四确定模块,用于根据该第二接收模块接收的该第二指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一备用节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一备用节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0355] 协商模块,用于与该第二分布式集群中的第二备用节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0356] 可选地,作为一个实施例,该协商模块包括:
[0357] 第一发送单元,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点的节点属性为备用节点的广播消息;
[0358] 接收单元,用于接收该第二备用节点发送的协商消息,该协商消息中包括用于指示该第二备用节点的权重的信息,该协商消息是该第二备用节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该设备发送的;
[0359] 第二发送单元,用于在确定该第一备用节点的权重大于或等于该第二备用节点的权重的情况下,向该第二备用节点发送用于指示该第二备用节点降级为Slave节点的协商响应消息;
[0360] 第三发送单元,用于在确定该第一备用节点权重小于该第二备用节点的权重的情况下,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一备用节点降级为Slave节点的广播消息。
[0361] 因此,在本发明实施例中,该分布式集群包括Master节点、Slave节点参考节点和该Master节点的备用节点,该备用节点根据参考节点发送的心跳消息确定Master节点与该参考节点处于失联状态,并通过检测该Master节点向该备用节点发送的心跳消息也中断来确定该Master节点与该备用节点也处于失联状态,从而可以有效地确定与该备用节点和该参考节点均失联的该 Master节点发生故障。在本发明实施例中,备用节点通过参考节点发送的用于指示Master节点失联的心跳消息,以及自身检测到的该Master节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Master节点发生故障,相比于现有技术,能够有效缩短Master节点的故障检测时间。
[0362] 应理解,根据本发明实施例提供的分布式集群系统900中的第一分布式集群901可对应于本发明实施例提供的用于处理分布式集群中的故障的方法中的第一分布式集群,且该分布式集群系统900中的第一备用节点940也对应于本发明实施例提供的用于处理分布式集群中的故障的设备700,并且分布式集群系统900中的各个模块的上述和其它操作和/或功能分别为了实现图 1至图5( d ) 中的各个方法的相应流程,为了简洁,在此不再赘述。
[0363] 图12示出了本发明实施例提供的分布式集群系统1000,该分布式集群系统1000包括第一分布式集群1001,该第一分布式集群中包括第一Master 节点1010和第一Slave节点1020,该分布式集群还包括第一参考节点1030,以及作为该第一Master节点的备份的第一备用节点1040,该第一Master节点1010、该第一备用节点1040和该第一参考节点1030用于彼此之间互发心跳消息,该第一参考节点1030还用于向该第一Slave节点1020发送心跳消息,该第一Slave节点1020用于分别向该第一Master节点1010和该第一备用节点1030发送心跳消息,其中,
[0364] 该第一备用节点1030还用于,在检测到该第一Slave节点向该第一备用节点发送的心跳消息中断的情况下,向该第一Master节点发送心跳消息,该心跳消息包括用于指示该第一备用节点与该第一Slave节点处于失联状态的第三指示信息,
[0365] 该第一Master节点1010包括:
[0366] 第一接收模块1011,用于接收该第一备用节点发送的包括该第三指示信息的心跳消息;
[0367] 第一确定模块1012,用于根据该第一接收模块接收的该第三指示信息,确定该第一备用节点与该第一Slave节点处于失联状态;
[0368] 第一检测模块1013,用于检测该第一Slave节点向该第一Master节点发送的心跳消息是否中断;
[0369] 第二确定模块1014,用于在该第一检测模块检测到该第一Slave节点向该第一Master节点发送的心跳消息中断的情况下,确定该第一Master节点与该第一Slave节点也处于失联状态;
[0370] 第三确定模块1015,用于根据该第一确定模块与该第二确定模块确定的结果,确定该第一Slave节点发生故障。
[0371] 在本发明实施例中,分布式集群中除了Master节点和Slave节点之外还包括参考节点和该Master节点的备用节点,该Master节点根据备用节点发送的心跳消息确定备用节点与该Slave处于失联状态,并通过检测该Slave节点向该Master节点发送的心跳消息也中断来确定该Slave节点与该Master节点也处于失联状态,从而可以有效地确定与该Master节点和该备用节点均失联的该Slave节点发生故障。
[0372] 因此,在本发明实施例提供的分布式集群系统中,Master节点通过备用节点发送的用于指示Slave节点失联的心跳消息,以及自身检测到的该Slave 节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Slave节点发生故障,相比于现有技术,能够有效缩短Slave节点的故障检测时间,同时也能够提高故障检测的准确性。
[0373] 可选地,作为一个实施例,该第一检测模块1013具体用于,检测在第三时刻与第四时刻之间是否接收到该第一Slave节点发送的心跳消息,该第三时刻为该第一Master节点接收到该第一备用节点发送的包括有该第三指示信息的心跳消息的时刻,该第四时刻早于该第三时刻,该第三时刻与该第四时刻之间的时间间隔为该第一Slave节点向该第一Master节点发送心跳消息的心跳周期的N倍,N为正整数。
[0374] 可选地,作为一个实施例,该第一Master节点1010还包括:
[0375] 第二检测模块,用于在预设检测周期内检测是否接收到该第一备用节点发送的心跳消息和该第一参考节点发送的心跳消息,该预设检测周期为发送心跳消息的心跳周期的M倍,M为正整数;
[0376] 第四确定模块,用于在该第二检测模块在该预设检测周期内既没有接收到该第一备用节点发送的心跳消息,也没有接收到该第一参考节点发送的心跳消息的情况下,确定该第一备用节点和该第一参考节点均发生故障。
[0377] 可选地,作为一个实施例,该分布式集群系统1000还包括第二分布式集群,该第二分布式集群中包括第二Master节点,第二Slave节点,第二参考节点,以及作为该第二Master节点的备份的第二备用节点,该第一Master 节点1010还包括:
[0378] 第二接收模块,用于接收该第二参考节点发送的心跳消息,该心跳消息包括用于指示该心跳消息的接收端的节点属性为Slave节点的第四指示信息,该第二参考节点用于分别向该第二Slave节点以及该第一分布式集群中的所有节点发送包括该第四指示信息的心跳消息,该第二分布式集群与该第一分布式集群具有相同的集群标识;
[0379] 第五确定模块,用于根据该第二接收模块接收的该第四指示信息,确定该第二参考节点发送的心跳消息中所指示的该心跳消息的接收端的节点属性与该第一Master节点的节点属性不相符,并确定该第二参考节点所在的第二分布式集群与该第一Master节点所在的第一分布式集群为一个网络分布式集群分裂后形成的两个子集群;
[0380] 协商模块,用于与该第二分布式集群中的第二Master节点进行协商,以便于整合该第一分布式集群和该第二分布式集群。
[0381] 可选地,作为一个实施例,该协商模块包括:
[0382] 第一发送单元,用于向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点的节点属性为Master节点的广播消息;
[0383] 接收单元,用于接收该第二Master节点发送的协商消息,该协商消息中包括用于指示该第二Master节点的权重的信息,该协商消息是该第二Master 节点在检测到该第一发送单元发送的该广播消息指示的节点属性与自身的节点属性相同的情况下向该第一Master节点发送的;
[0384] 第二发送单元,用于在确定该第一Master节点的权重大于或等于该第二 Master节点的权重时,向该第二Master节点发送用于指示该第二Master节点降级为Slave节点的协商响应消息;
[0385] 第三发送单元,用于在确定该第一Master节点的权重小于该第二Master 节点的权重时,向该第一分布式集群和该第二分布式集群内所有的节点发送用于指示该第一Master节点降级为Slave节点的广播消息。
[0386] 因此,在本发明实施例提供的分布式集群系统中,Master节点通过备用节点发送的用于指示Slave节点失联的心跳消息,以及自身检测到的该Slave 节点发送的心跳消息中断的检测结果,可以快速、有效地确定该Slave节点发生故障,相比于现有技术,能够有效缩短Slave节点的故障检测时间,同时也能够提高故障检测的准确性。
[0387] 应理解,根据本发明实施例提供的分布式集群系统1000中的第一分布式集群1001可对应于本发明实施例提供的用于处理分布式集群中的故障的方法中的第一分布式集群,且该分布式集群系统1000中的第一Master节点1010 也对应于本发明实施例提供的用于处理分布式集群中的故障的设备800,并且分布式集群系统1000中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5( d ) 中的各个方法的相应流程,为了简洁,在此不再赘述。
[0388] 应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0389] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0390] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0391] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0392] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0393] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0394] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0395] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈