两节点系统分区的处理方法和节点的制作方法
【技术领域】
[0001]本发明涉及分布式系统领域,并且更具体地,涉及两节点系统分区的处理方法和节点。
【背景技术】
[0002]分布式系统是多个计算机通过通信线路互连而构成的耦合系统。一个分布式系统是若干个独立的计算机的集合,但是对该系统的用户来说,整个系统就像一台计算机一样。在分布式系统的支持下,互连的计算机可以互相协调工作,共同完成一项任务。在多节点的高可用集群中,使用仲裁策略来决定集群的工作状态。通常使用的仲裁策略是计算集群中活跃的节点个数是否超过整个集群节点总数的一半。节点之间可以通过心跳网络连接来决定各节点是否活跃。
[0003]对于一个N节点的分布式系统,系统的法定人数是N/2+1。一般地,分布式系统中节点数目为奇数。而且,分布式系统中节点数目超过法定人数时,整个系统可以正常工作。所以,基于法定人数的分布式系统,通常需要配置至少三个节点,才能使得节点数目大于法定人数。这样的分布式系统还可以容忍部分节点失效,使得有效的节点数目大于或等于法定人数。
[0004]基于法定人数的分布式系统一般不用于两个节点的情况。而且,如果分布式系统中只有两个节点,那么两个节点中只要有一个节点失效,整个系统由于无法达到法定人数而无法正常工作,导致两节点系统分区或脑裂。
【发明内容】
[0005]本发明实施例提供一种两节点系统分区的处理方法和节点,能够使得基于法定人数的分布式系统用于两节点系统并正常工作。
[0006]第一方面,提供了一种两节点系统分区的处理方法,所述方法用于基于法定人数的两节点系统,所述两节点系统中的节点包括通讯代理和分布式应用,其特征在于,所述方法包括:当所述两节点系统发生故障时,所述通讯代理确定所述通讯代理所在的节点是否有效;当所述通讯代理所在的节点有效时,所述通讯代理向所述通讯代理所在的节点的分布式应用发送指示所述分布式应用达到法定人数的正确应答消息。
[0007]结合第一方面,在第一方面的一种实现方式中,所述方法还包括:当所述通讯代理所在的节点失效时,所述通讯代理向所述分布式应用发送指示所述分布式应用未达到法定人数的错误应答消息,或者,不再向所述分布式应用发送消息。
[0008]结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:所述通讯代理向所述两节点系统中的另一节点的通讯代理发送协调消息;所述通讯代理向所述另一节点的通讯代理发送协调消息的时刻起第一时长内未收到所述另一节点的通讯代理针对所述协调消息发送的回复消息时,确定所述两节点系统发生故障。
[0009]结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述两节点系统还包括网络设备,所述通讯代理确定所述通讯代理所在的节点是否有效包括:所述通讯代理向所述网络设备发送测试数据包;所述通讯代理从向所述网络设备发送所述测试数据包的时刻起第二时长内未收到所述网络设备针对所述测试数据包发送的响应消息时,确定所述节点失效;所述通讯代理从向所述网络设备发送所述测试数据包的时刻起第二时长内收到所述网络设备针对所述测试数据包发送的响应消息时,确定所述节点有效。
[0010]结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述两节点系统还包括连接所述节点与所述两节点系统中的另一节点的串口,所述通讯代理确定所述通讯代理所在的节点是否有效包括:所述通讯代理通过所述串口向所述两节点系统中的另一节点发送检测消息;所述通讯代理从向所述另一节点发送所述检测消息的时刻起第三时长内未收到所述另一节点针对所述检测消息发送的反馈消息时,确定所述节点有效;所述通讯代理从向所述另一节点发送所述检测消息的时刻起第三时长内收到所述另一节点针对所述检测消息发送的反馈消息时,根据节点有效的优先权信息,确定所述节点是否有效。
[0011]结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述两节点系统还包括共享磁盘,所述通讯代理确定所述通讯代理所在的节点是否有效包括:所述通讯代理向所述两节点系统中的另一节点的通讯代理发送检验数据包;所述通讯代理从向所述另一节点的通讯代理发送所述检验数据包的时刻起第四时长内未收到针对所述另一节点的通讯代理发送的回复数据包时时,确定所述节点有效;所述通讯代理从向所述另一节点的通讯代理发送所述检验数据包的时刻起第四时长内收到针对所述另一节点的通讯代理发送的回复数据包时,根据节点有效的优先权信息确定所述节点是否有效。
[0012]结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述节点还包括所述两节点系统中的另一节点的分布式应用的影子进程,所述方法还包括:所述通讯代理在所述节点有效时,启动所述另一节点的分布式应用的影子进程;所述分布式应用接收客户端发送的用于请求对数据进行处理的请求消息,并通过所述通讯代理向所述另一节点的分布式应用的影子进程发送所述请求消息;所述另一节点的分布式应用的影子进程接收所述请求消息,并根据所述请求消息对所述数据进行处理。
[0013]结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述方法还包括:当所述两节点系统未发生故障时,所述通讯代理接收所述分布式应用发送的第一数据包,并向所述两节点系统中另一节点的通讯代理转发所述第一数据包;或者,当所述两节点系统未发生故障时,所述通讯代理接收所述两节点系统中另一节点的通讯代理发送的第二数据包,并向所述分布式应用转发所述第二数据包。
[0014]结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述节点为物理服务器或虚拟服务器。
[0015]第二方面,提供了一种节点,所述节点属于基于法定人数的两节点系统,其特征在于,所述节点包括分布式应用和通讯代理;所述通讯代理,用于当所述两节点系统发生故障时确定所述节点是否有效;所述通讯代理,还用于当所述节点有效时向所述分布式应用发送指示所述分布式应用达到法定人数的正确应答消息。
[0016]结合第二方面,在第二方面的一种实现方式中,所述通讯代理,还用于当所述通讯代理所在的节点失效时向所述分布式应用发送指示所述分布式应用未达到法定人数的错误应答消息,或者,不再向所述分布式应用发送消息。
[0017]结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述通讯代理,还用于从向所述两节点系统中的另一节点的通讯代理发送协调消息的时刻起第一时长内未收到所述另一节点的通讯代理针对所述协调消息发送的回复消息时,确定所述两节点系统发生故障。
[0018]结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述两节点系统还包括网络设备;所述通讯代理,用于从向所述网络设备发送测试数据包的时刻起第二时长内未收到所述网络设备针对所述测试数据包发送的响应消息时,确定所述节点失效;所述通讯代理,用于从向所述网络设备发送测试数据包的时刻起第二时长内收到所述网络设备针对所述测试数据包发送的响应消息时,确定所述节点有效。
[0019]结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述两节点系统还包括连接所述节点与所述两节点系统中的另一节点的串口 ;所述通讯代理,用于通过所述串口向所述两节点系统中的另一节点发送检测消息;所述通讯代理,用于从向所述另一节点发送所述检测消息的时刻起第三时长内未收到所述另一节点针对所述检测消息发送的反馈消息时,确定所述节点有效;所述通讯代理,用于从向所述另一节点发送所述检测消息的时刻起第三时长内收到所述另一节点针对所述检测消息发送的反馈消息时,根据节点有效的优先权信息,确定所述节点是否有效。
[0020]结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述两节点系统还包括共享磁盘;所述通讯代理,用于向所述两节点系统中的另一节点的通讯代理发送检验数据包;所述通讯代理,用于从向所述另一节点的通讯代理发送所述检验数据包的时刻起第四时长内未收到针对所述另一节点的通讯代理发送的回复数据包时,确定所述节点有效;所述通讯代理,用于从向所述另一节点的通讯代理发送所述检验数据包的时刻起第四时长内收到所述另一节点的通讯代理发送的回复数据包时,根据节点有效的优先权信息确定所述节点是否有效。
[0021]结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述节点还包括所述两节点系统中的另一节点的分布式应用的影子进程;所述通讯代理,用于在所述节点有效时,启动所述另一节点的分布式应用的影子进程;所述分布式应用,用于接收客户端发送的用于请求对数据进行处理的请求消息,并通过所述通讯代理向所述另一节点的分布式应用的影子进程发送所述请求消息;所述另一节点的分布式应用的影子进程,用于接收所述请求消息,并根据所述请求消息对所述数据进行处理。
[0022]结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述通讯代理,用于当所述两节点系统未发生故障时,接收所述分布式应用发送的第一数据包,并向所述两节点系统中另一节点的通讯代理转发所述第一数据包;或者,所述通讯代理,用于当所述两节点系统未发生故障时,接收所述两节点系统中另一节点的通讯代理发送的第二数据包,并向所述分布式应用转发所述第二数据包。
[0023]结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述节点为物理服务器或虚拟服务器。
[0024]本发明实施例通过在两节点系统中的节点上增加通讯代理,以在两节点系统故障时通过通讯代理可以使得一个节点的分布式应用达到法定人数,从而使得基于法定人数的分布式系统能够用于两节点系统,并且可以正常工作。
【附图说明】
[0025]为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026]图1是可应用本发明实施例的通信系统场景的示意图。
[0027]图2是本发明一个实施例的两节点系统分区的处理方法的示意性流程图。
[0028]图3是本发明一个实施例的两节点系统分区的处理方法的示意图。
[0029]图4是本发明另一实施例的两节点系统分区的处理方法的示意图。
[0030]图5是本发明一个实施例的节点的框图。
[0031]图6是本发明另一实施例的节点的框图。
【具体实施方式】
[0032]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0033]图1是可应用本发明实施例的通信系统场景的示意图。如图1所示,本发明实施例的两节点系统包括节点一 101、节点二 102和网络设备103。
[0034]两节点系统中包括两个节点。节点为服务器时,服务器中可以运行操作系统,例如,可以运行Windows、Iinux等操作系统,并且服务器中包括网卡设备,能够和其它服务器联网。应理解,本发明实施例