分布式系统中主节点的选取方法和装置与流程

文档序号:12789624阅读:726来源:国知局
分布式系统中主节点的选取方法和装置与流程

本发明涉及互联网领域,特别涉及一种分布式系统中主节点的选取方法和装置。



背景技术:

随着互联网技术的快速发展,分布式系统的应用范围越来越广。由于分布式系统是由多个自治的计算机节点作为分布式节点,通过通信网络组成的机群系统,且该分布式系统可以作为服务器侧来为客户端提供数据,因此客户端可以通过该分布式系统中的任意一个分布式节点进行数据访问。而为了保证客户端通过该分布式系统中的任意一个分布式节点访问到的数据都是一致的,一般将该分布式系统中的分布式节点分为一个主节点和多个从节点,主节点不仅可以对自身存储的数据进行修改,还可以对该多个从节点中存储的数据进行修改,从而保证该分布式系统中数据的一致性。而分布式系统中的主节点一般是通过选取得到,因此,亟需一种分布式系统中主节点的选取方法。

现有技术中,当该分布式系统创建完成之后,该分布式系统可以从包括的多个分布式节点中,随机选择一个分布式节点作为主节点,并将该分布式系统中除该主节点之外的分布式节点作为从节点。之后,为了保证该主节点和多个从节点之间的正常通信,该主节点必须按照固定周期向该多个从节点发送心跳消息,该心跳消息用于确定该主节点是否正常运行。对于该多个从节点中的任一从节点,当该从节点接收到该心跳消息时,确定该主节点正常运行。而当该从节点未接收到该心跳消息时,确定该主节点发生故障,该从节点可以向该分布式系统中除该从节点之外的其他分布式节点发送主节点选举请求,该主节点选举请求用于确定是否将用于发送该主节点选举请求的分布式节点选举为该分布式系统的主节点,当该从节点选举成功时,将该从节点确定为该分布式系统的主节点,并将该分布式系统中该主节点之外的分布式节点作为从节点,返回按照固定周期向该多个从节点发送心跳消息的步骤。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于现有技术中,该分布式系统中的主节点需要按照固定周期向该分布式系统中的所有从节点发送心跳信息,占用了大量的通信带宽,浪费资源。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种分布式系统中主节点的选取方法和装置。所述技术方案如下:

第一方面,提供了一种分布式系统中主节点的选取方法,所述方法包括:

第一分布式节点接收客户端发送的第一数据访问请求,所述第一数据访问请求为通过分布式系统的主节点进行数据访问的请求,所述第一分布式节点为所述分布式系统中任一分布式节点;

当所述第一分布式节点不为所述分布式系统的主节点时,基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点;

当确定所述第一数据访问请求无法发送至所述分布式系统的主节点时,确定所述分布式系统的主节点发生故障,并发起主节点选举请求;

如果所述第一分布式节点选举成功,则确定所述第一分布式节点为所述分布式系统的主节点。

在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。

结合第一方面,在上述第一方面的第一种可能的实现方式中,所述确定所述第一分布式节点为所述分布式系统的主节点之后,还包括:

所述第一分布式节点向所述客户端发送主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识,使所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。

第一分布式节点可以向客户端发送主节点更新消息,使该客户端将存储的主节点标识替换为第一分布式节点的标识,则该客户端在下次需要访问该分布式系统中的数据时,可以基于存储的主节点标识,直接向主节点发送数据访问请求,提高了该分布式系统的工作效率。

结合第一方面或第一方面的第一种可能的实现方式,在上述第一方面的第二种可能的实现方式中,所述确定所述分布式系统的主节点发生故障,并发起主节点选举请求之后,还包括:

如果所述第一分布式节点选举失败,则向所述客户端发送故障提示信息,所述故障提示信息用于提示所述分布式系统的主节点发生故障。

当该第一分布式节点选举失败不能被确定为主节点时,可以向客户端发送故障提示信息,使客户端可以确定该分布式系统主节点故障,不再向该主节点发送第一数据访问请求,提高了该分布式系统的工作效率。

结合第一方面至第一方面的第二种可能的实现方式中的任一种可能的实现方式,在上述第一方面的第三种可能的实现方式中,所述基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点之前,还包括:

当所述分布式系统创建完成时,所述第一分布式节点选取所述分布式系统的主节点;

当所述分布式系统的主节点选取成功时,存储所述分布式系统的主节点标识。

需要说明的是,该分布式系统创建完成时没有主节点,且此时该分布式系统中的所有的分布式节点都没有存储该分布式系统的数据,因此第一分布式节点可以选取该分布式系统的主节点。

第二方面,提供了一种分布式系统中主节点的选取方法,所述方法包括:

客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点;

所述客户端将选择的分布式节点确定为第一分布式节点;

所述客户端向所述第一分布式节点发送第一数据访问请求,使所述第一分布式节点在确定不为所述分布式系统的主节点且基于所述第一数据访问请求确定所述分布式系统的主节点发生故障时重新选取所述分布式系统的主节点,所述第一数据访问请求为通过所述分布式系统的主节点进行数据访问的请求。

该客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,向该第一分布式节点发送第一数据请求来访问该分布式系统中的数据,使该第一分布式节点在确定主节点故障时重新选取该分布式系统的主节点,该分布式系统可以在主节点故障时迅速产生一个主节点,无需通过心跳消息来确定主节点发生故障,提高了该分布式系统的工作效率。

结合第二方面,在上述第二方面的第一种可能的实现方式中,所述客户端向所述第一分布式节点发送第一数据访问请求之后,还包括:

所述客户端接收所述第一分布式节点发送的主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识;

所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。

客户端可以接收主节点更新消息,并基于该主节点更新消息,更新该客户端存储的主节点标识,当该客户端在下次需要访问该分布式系统中的数据时,可以直接向主节点发送第一数据访问请求,提高了该分布式系统的工作效率。

结合第二方面,在上述第二方面的第二种可能的实现方式中,所述客户端向所述第一分布式节点发送第一数据访问请求之后,还包括:

当所述客户端接收到所述第一分布式节点发送的故障提示信息时,确定所述分布式系统的主节点发生故障;

所述客户端将存储的主节点标识删除,并返回执行所述从分布式系统的多个分布式节点中,随机选择一个分布式节点的步骤。

当客户端收到故障提示信息时,说明该第一分布式节点无法向主节点发送该第一数据访问请求且该第一分布式节点不能被确定为主节点时,因此该客户端还可以重新随机选择一个分布式节点,并通过该分布式节点来访问该分布式系统中的数据,提高了该客户端访问该分布式系统中数据的成功率,也提高了该分布式系统的工作效率。

结合第二方面至第二方面的第二种可能的实现方式中任一种可能的实现方式,在上述第二方面的第三种可能的实现方式中,所述客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点之前,还包括:

所述客户端基于存储的主节点标识,向所述分布式系统的主节点发送所述第一数据访问请求,使所述分布式系统的主节点返回数据访问响应;

当所述客户端未接收到所述分布式系统的主节点返回的数据访问响应时, 执行所述从分布式系统的多个分布式节点中,随机选择一个分布式节点的步骤。

当该客户端直接向主节点发送第一数据访问请求,且未接收到该主节点返回的数据访问响应,该客户端可以从该分布式系统的多个分布式节点中随机选择一个分布式节点,并通过该分布式节点来访问该分布式系统中的数据。

结合第二方面至第二方面的第三种可能的实现方式中的任一种可能的实现方式,在上述第二方面的第四种可能的实现方式中,所述客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点之前,还包括:

当所述分布式系统创建完成时,所述客户端从所述分布式系统的多个分布式节点中,随机选择一个分布式节点;

所述客户端将选择的分布式节点确定为第二分布式节点;

所述客户端向所述第二分布式节点发送第二数据访问请求,使所述第二分布式节点发起主节点选举请求,所述第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求;

当所述客户端接收到所述第二分布式节点发送的第二数据访问响应时,将所述第二分布式节点的标识作为主节点标识进行存储。

需要说明的是,当该分布式系统创建完成时没有主节点,且此时该分布式系统中的所有的分布式节点都没有存储该分布式系统的数据,因此客户端可以随机选择一个分布式节点,将选择的分布式节点确定为第二分布式节点,向该第二分布式节点发送第二数据访问请求,使该第二分布式节点在确定主节点故障时选取该分布式系统的主节点,提高了该分布式系统的工作效率。

第三方面,提供了一种分布式系统中主节点的选取装置,所述装置包括:接收模块,用于接收客户端发送的第一数据访问请求,所述第一数据访问请求为通过分布式系统的主节点进行数据访问的请求;

第一发送模块,用于当不为所述分布式系统的主节点时,基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点;

选举模块,用于当确定所述第一数据访问请求无法发送至所述分布式系统的主节点时,确定所述分布式系统的主节点发生故障,并发起主节点选举请求;

确定模块,用于如果选举成功,则确定所述第一分布式节点为所述分布式系统的主节点,所述第一分布式节点为所述分布式系统中任一分布式节点。

结合第三方面,在上述第三方面的第一种可能的实现方式中,所述装置还包括:

第二发送模块,用于向所述客户端发送主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识,使所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。

结合第三方面或第三方面的第一种可能的实现方式,在上述第三方面的第二种可能的实现方式中,所述装置还包括:

第三发送模块,用于如果选举失败,则向所述客户端发送故障提示信息,所述故障提示信息用于提示所述分布式系统的主节点发生故障。

结合第三方面至第三方面的第二种可能的实现方式中的任一种可能的实现方式,在上述第三方面的第三种可能的实现方式中,所述装置还包括:

选取模块,用于当所述分布式系统创建完成时,选取所述分布式系统的主节点;

存储模块,用于当所述分布式系统的主节点选取成功时,存储所述分布式系统的主节点标识。

第四方面,提供了一种分布式系统中主节点的选取装置,所述装置包括:

第一选择模块,用于从分布式系统的多个分布式节点中,随机选择一个分布式节点;

第一确定模块,用于将选择的分布式节点确定为第一分布式节点;

第一发送模块,用于向所述第一分布式节点发送第一数据访问请求,使所述第一分布式节点在确定不为所述分布式系统的主节点且基于所述第一数据访问请求确定所述分布式系统的主节点发生故障时重新选取所述分布式系统的主节点,所述第一数据访问请求为通过所述分布式系统的主节点进行数据访问的请求。

结合第四方面,在上述第四方面的第一种可能的实现方式中,所述装置还包括:

接收模块,用于接收所述第一分布式节点发送的主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识;

替换模块,用于将存储的主节点标识替换为所述第一分布式节点的标识。

结合第四方面,在上述第四方面的第二种可能的实现方式中,所述装置还包括:

第二确定模块,用于接收到所述第一分布式节点发送的故障提示信息时,确定所述分布式系统的主节点发生故障;

删除模块,用于将存储的主节点标识删除,并返回从所述从分布式系统的多个分布式节点中,随机选择一个分布式节点。

结合第四方面至第四方面的第二种可能的实现方式中的任一种可能的实现方式,在上述第四方面的第三种可能的实现方式中,所述装置还包括:

第二发送模块,用于基于存储的主节点标识,向所述分布式系统的主节点发送所述第一数据访问请求,使所述分布式系统的主节点返回数据访问响应;

第二选择模块,用于当未接收到所述分布式系统的主节点返回的数据访问响应时,返回从所述从分布式系统的多个分布式节点中,随机选择一个分布式节点。

结合第四方面至第四方面的第三种可能的实现方式中的任一种可能的实现方式,在上述第四方面的第四种可能的实现方式中,所述装置还用于:

第三选择模块,用于当所述分布式系统创建完成时,从所述分布式系统的多个分布式节点中,随机选择一个分布式节点;

第三确定模块,用于将选择的分布式节点确定为第二分布式节点;

第三发送模块,用于向所述第二分布式节点发送第二数据访问请求,使所述第二分布式节点发起主节点选举请求,所述第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求;

存储模块,用于当接收到所述第二分布式节点发送的第二数据访问响应时,将所述第二分布式节点的标识作为主节点标识进行存储。

本发明实施例提供的技术方案带来的有益效果是:在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式 系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种分布式系统架构图;

图2是本发明实施例提供的一种分布式系统中主节点的选取方法流程图;

图3是本发明实施例提供的一种分布式系统中主节点的选取装置框图;

图4是本发明实施例提供的另一种分布式系统中主节点的选取装置框图;

图5是本发明实施例提供的又一种分布式系统中主节点的选取装置框图;

图6是本发明实施例提供的又一种分布式系统中主节点的选取装置框图;

图7是本发明实施例提供的一种分布式系统中主节点的选取装置示意图;

图8是本发明实施例提供的另一种分布式系统中主节点的选取装置示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

在对本发明实施例进行详细地解释说明之前,先对本发明实施例的系统架构进行介绍。如图1所示,该系统包括多个分布式节点和客户端,该多个分布式节点之间通过网络连接,该多个分布式节点可以是计算机,且该多个分布式节点可以组成一个分布式系统,该分布式系统可以作为服务器侧来为该客户端提供数据,该客户端可以安装在该多个分布式节点中的任一个分布式节点上,也可以安装于该多个分布式节点之外的计算机上,并且该计算机可以与该多个分布式节点通过网络连接。其中,该多个分布式节点包括一个主节点和多个从节点,当客户端访问该分布式系统中的数据时,该客户端可以向主节点或者从节点发送数据访问请求,而该客户端发送的数据访问请求有的可以直接通过从节点响应,而有的需要通过主节点才能响应,比如,读请求可以直接通过从节 点响应,而写请求需要通过主节点才能响应。对于只有主节点才可以响应的数据访问请求,该客户端可以直接基于存储的主节点标识,向该主节点发送数据访问请求,当主节点接收到该数据访问请求时,该主节点响应该数据访问请求。当然该客户端也可以在该多个分布式节点中随机选取一个分布式节点,并向该选取的分布式节点发送该数据访问请求,当该分布式节点接收到该数据访问请求且该分布式节点不为主节点时,该分布式节点将该数据访问请求发送给主节点,使主节点可以响应该数据访问请求。当该分布式节点确定无法将该数据访问请求发送给主节点时,该分布式节点确定该主节点故障,并发起主节点选举请求,当该分布式节点选举成功被确定为主节点时,该分布式节点可以响应该数据访问请求。

图2是本发明实施例提供的一种分布式系统中主节点的选取方法流程图,参见图2,该方法包括:

步骤201:客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点,将选择的分布式节点确定为第一分布式节点,向该第一分布式节点发送第一数据访问请求,该第一数据访问请求为通过该分布式系统的主节点进行数据访问的请求。

为了保持该分布式系统中数据的一致性,该分布式系统中只有主节点可以响应该第一数据访问请求,而当从节点接收到该第一数据访问请求时,可以将该第一数据访问请求发送给主节点,因此,该客户端可以从该分布式系统的多个分布式节点中,随机选取一个分布式节点,并将选择的分布式节点确定为第一分布式节点,向该第一分布式节点发送第一数据访问请求。

其中,客户端为该分布式系统对应的客户端,也即是,该分布式系统作为服务器侧来为该客户端提供数据,该客户端可以向该分布式系统中的任一个分布式节点发送第一数据访问请求,进而访问该分布式系统中的数据。

需要说明的是,该第一数据访问请求可以是写请求,也可以是只有主节点才能响应的读请求,当然,也可以为只有主节点才能响应的其他访问请求,本发明实施例对此不作具体限定。

还需要说明的是,由于该第一分布式节点是该客户端从该分布式系统的多个分布式节点中随机选取的,因此,该第一分布式节点可以是该分布式系统中 的任一个节点。

进一步地,由于该分布式系统中只有主节点可以响应该第一数据访问请求,且该客户端可以存储该分布式系统中的主节点标识,因此当该客户端需要访问该分布式系统中的数据时,可以基于存储的主节点标识,向该分布式系统的主节点发送该第一数据访问请求,使该分布式系统的主节点返回数据访问响应,当该客户端在第一响应时长内未接收到该分布式系统的主节点返回的数据访问响应时,该客户端可以从分布式系统的多个分布式节点中,随机选择一个分布式节点,将选择的分布式节点确定为第一分布式节点,向该第一分布式节点发送第一数据访问请求。

其中,主节点标识用于唯一标识该分布式系统的主节点,该主节点标识是当前作为该分布式系统主节点的分布式节点的标识,该分布式节点的标识用于唯一标识该分布式节点,该分布式节点的标识可以是该分布式节点的互联网协议(英文:Internet Protocol;简称:IP)地址、物理地址等,本发明实施例对此不作具体限定。

需要说明的是,由于该主节点响应该第一数据访问请求时,可能响应成功,也可能响应失败,当该主节点响应该第一数据访问请求成功时,返回访问成功响应,当该主节点响应该第一数据访问请求失败时,返回访问失败响应,也即是,该数据访问响应可以包括访问成功响应或访问失败响应。

另外,第一响应时长可以为该客户端事先设置,比如,第一响应时长可以为200ms(毫秒)、300ms等等,本发明实施例对此不做具体限定。

需要说明的是,当该客户端在该第一响应时长内未接收到该分布式系统的主节点返回的数据访问响应时,可能该主节点发生故障,因此该客户端可以从分布式系统的多个分布式节点中,随机选择一个分布式节点,将选择的分布式节点确定为第一分布式节点,向该第一分布式节点发送第一数据访问请求,进而通过第一分布式节点,重新选择该分布式系统的主节点,并访问该分布式系统中的数据,提高了访问该分布式系统中数据的成功率,提高了该分布式系统的稳定性。

进一步地,由于主节点接收到写请求时,需要将写请求中的数据同步到该分布式系统的从节点中,因此,当该客户端向该主节点发送的第一数据访问请求为写请求时,如果该客户端在该第一响应时长内接收到的访问失败响应时, 该客户端可以确定该主节点发生故障,进而可以从该分布式系统的多个分布式节点中,随机选择一个分布式节点,将选择的分布式节点确定为第一分布式节点,向该第一分布式节点发送第一数据访问请求。

可选地,当该客户端向该主节点发送的第一数据访问请求为写请求时,如果该客户端在该第一响应时长内接收到的访问失败响应,该客户端可以确定已完成数据访问操作,进而结束操作。

需要说明的是,当第一数据访问请求为写请求时,该主节点接收该第一数据访问请求之后,需要将该写请求中的数据同步到该分布式系统的从节点中,如果该主节点将该写请求中的数据成功同步到的从节点个数大于该分布式系统中分布式节点个数的1/2,则返回访问成功响应,如果该主节点将该写请求中的数据成功同步到的从节点个数小于或等于该分布式系统中分布式节点个数的1/2,则返回访问失败响应。而当该主节点将该写请求中的数据成功同步到的从节点个数小于或等于该分布式系统中分布式节点个数的1/2时,可能该分布式系统中的部分分布式节点被隔离或者发生故障,此时虽然该主节点正常工作,但该主节点已经不能向该分布式系统中大多数分布式节点写入数据,也即是,该主节点不能再及时更新该分布式系统中的数据,也不能再保持该分布式系统中数据的一致性,因此,当该客户端在该第一响应时长内接收到的访问失败响应时,该客户端可以确定该主节点故障。

更进一步地,在该分布式系统刚创建完成时,该分布式系统中没有主节点,因此,在该分布式系统创建完成时,该客户端可以从该分布式系统的多个分布式节点中,随机选择一个分布式节点,将选择的分布式节点确定为第二分布式节点,该客户端向该第二分布式节点发送第二数据访问请求,当该第二分布式节点接收到客户端发送的第二数据访问请求时,第二分布式节点发起主节点选举请求,该第二数据访问请求为通过该分布式系统的主节点进行数据访问的请求,当该客户端接收到该第二分布式节点发送的第二数据访问响应时,将该第二分布式节点的标识作为主节点标识进行存储。

需要说明的是,当该分布式系统创建完成时,该分布式系统没有主节点,该客户端可以通过上述方法选取该分布式系统的主节点;或者,由于在该分布式系统创建完成且该分布式系统中没有存储数据时,该客户端可以从该分布式系统中随机选择一个分布式节点,并将选择的分布式节点确定为该分布式系统 的主节点。

还需要说明的是,该第二分布式节点是由该客户端随机选取的,因此该第二分布式节点也可以是该分布式系统中的任一个分布式节点。

另外,第二分布式节点发起主节点选举请求时,该分布式系统中每个分布式节点都可以基于该主节点选举请求,进行主节点的选择,从而确定第二分布式节点是否能够成功选举成为该分布式系统的主节点,且基于该主节点选举请求,进行主节点的选择的方法可以参考相关技术,本发明实施例对此不做具体限定。

步骤202:第一分布式节点接收客户端发送的第一数据访问请求,当该第一分布式节点不为该分布式系统的主节点时,第一分布式节点基于存储的主节点标识,将该第一数据访问请求发送给该分布式系统的主节点。

由于第一分布式节点可能是主节点也可能不是主节点,而只有在该第一分布式节点为主节点时才能响应该第一数据访问请求,因此,当第一分布式节点接收到客户端发送的第一数据访问请求时,可以判断该第一分布式节点是否为该分布式系统的主节点,当该第一分布式节点不为该分布式系统的主节点时,第一分布式节点基于存储的主节点标识,将该第一数据访问请求发送给该分布式系统的主节点。

其中,该第一分布式节点判断该第一分布式节点是否为主节点的操作可以为:该第一分布式节点将第一分布式节点的标识和该主节点标识比较,如果该第一分布式节点的标识和该主节点标识相同,则该第一分布式节点为主节点,如果该第一分布式节点的标识和该主节点标识不同,则该第一分布式系统不为主节点。

另外,当该分布式系统创建完成时,该分布式系统没有主节点,则该第一分布式节点没有存储主节点标识,因此该第一分布式节点可以选取该分布式系统的主节点,当该分布式系统的主节点选取成功时,存储该分布式系统的主节点标识,之后,当第一分布式节点接收到第一数据访问请求时,可以直接通过存储的主节点标识,将第一数据访问请求发送给该分布式系统的主节点,提高了该分布式系统的工作效率。

例如,当第一分布式节点接收到第一数据访问请求时,该第一分布式节点存储的主节点标识为123.139.49.201,该第一分布式节点的标识为 123.139.43.201,该第一分布式节点的标识和存储的主节点标识不同,因此该第一分布式节点不为主节点,则该第一分布式节点基于存储的该主节点标识,将该第一数据访问请求发送给该主节点。

进一步地,当该第一分布式节点接收到客户端发送的第一数据访问请求,且该第一分布式节点为该分布式系统的主节点时,该第一分布式节点可以响应该第一数据访问请求,并向该客户端发送数据访问响应。

步骤203:当第一分布式节点确定该第一数据访问请求无法发送至该分布式系统的主节点时,确定该分布式系统的主节点发生故障,并发起主节点选举请求。

由于该分布式系统中需要存在一个主节点来保持该分布式系统中数据的一致性,并响应客户端的第一数据访问请求,因此,当第一分布式节点确定该第一数据访问请求无法发送至该分布式系统的主节点时,该第一分布式节点可以确定该分布式系统中的主节点故障,并发起主节点选举请求,使该分布式系统产生主节点。

其中,该第一分布式节点确定该第一数据访问请求无法发送至该分布式系统的主节点的操作可以为:该第一分布式节点将该第一数据访问请求发送给主节点,当该第二响应时长内没有收到该主节点发送的数据访问响应时,确定该第一数据访问请求无法发送至该分布式系统的主节点。

需要说明的是,第二响应时长可以为该客户端事先设置,且该第二响应时长小于第一响应时长,比如,当第一响应时长为300ms时,第二响应时长可以为200ms,当第一响应时长为200ms时,第二响应时长可以为100ms,本发明实施例对此不做具体限定。

进一步地,当该第一分布式节点在该第二响应时长内接收到该主节点发送的数据访问响应时,将该数据访问响应发送给客户端。具体地,当该第一分布式节点向该主节点发送的第一数据访问请求为写请求,且第一分布式节点在该第二响应时长内接收到的该主节点发送的访问失败响应时,第一分布式节点可以将该访问失败响应发送给该客户端。进而当客户端在第一响应时长接收到该第一分布式节点发送的访问失败响应时,该客户端可以确定该主节点故障,此时该客户端可以重新从分布式系统的多个分布式节点中,随机选择一个分布式节点,并返回步骤201。

进一步地,当该第一分布式节点确定该第一数据访问请求无法发送至该分布式系统的主节点,并确定该分布式系统的主节点发生故障时,可以向该客户端发送第一选举提示信息,该第一选举提示信息用于提示客户端该主节点发生故障,并且第一分布式节点正在发起主节点选举请求。

另外,当该第一分布式节点向该主节点发送的第一数据访问请求为写请求,且第一分布式节点在该第二响应时长内接收到的该主节点发送的访问失败响应时,此时,第一分布式节点可以不将该访问失败响应发送给客户端,而该第一分布式节点可以确定该主节点故障,向该客户端发送第二选举提示信息,该第二选举提示信息用于提示客户端该第一数据访问请求响应失败。

需要说明的是,当客户端向该第一分布式节点发送该第一数据访问请求之后,如果该客户端在该第一响应时长内既没有接收到该第一分布式节点发送的该第一选举提示信息或第二选举提示信息,也没有接收到该第一分布式节点发送的该数据访问响应时,可以确定该第一分布式节点故障,并确定该第一数据访问请求无法发送给该主节点,此时该客户端可以重新从分布式系统的多个分布式节点中,随机选择一个分布式节点,并返回步骤201。

另外,当该第一分布式节点发起主节点选举请求时,该第一分布式节点向该分布式系统中包括该第一分布式节点在内的所有分布式节点发送主节点选举请求,并在该主节点选举请求中携带该第一分布式节点的分布式节标识;对于所有分布式节点中的每一个分布式节点,该分布式节点基于该主节点选举请求确定是否响应该主节点选举请求,当该分布式节点确定响应该主节点选举请求时,该分布式节点存储该第一分布式节点的分布式节的点标识,并向该第一分布式节点发送选举响应消息;当该第一节点接收到的选举响应消息个数大于该分布式系统中的分布式节点个数的1/2时,该第一分布式节点选举成功。

需要说明的是,对于所有分布式节点中的每一个分布式节点,该分布式节点基于该主节点选举请求确定是否响应该主节点选举请求的操作可以参考相关技术,本发明实施例不再一一赘述。

还需要说明的是,由于在该分布式系统中可能同时有多个客户端向该分布式系统中的多个分布式节点发送第一数据访问请求,因此在步骤203中,可能会同时有多个分布式节点确定该分布式系统的主节点发生故障,并发起主节点选举请求,进而从该多个分布式节点中选取该分布式系统的主节点,提高了该 分布式系统选举主节点的效率。当然,为了确保总会有多个分布式节点可以在确定主节点故障时发起主节点选举请求,提高该分布式系统选举主节点的效率,当该客户端需要访问该分布式系统中的数据时,该客户端还可以随机选取多个分布式节点,同时向该多个分布式节点发送第一数据访问请求,从而使该多个分布式节点在确定该分布式系统中主节点故障时,同时发起主节点选举请求,从而提高该分布式系统选举主节点的效率,但这样可能会占用部分带宽,增加该分布式系统的负担。

例如,第一分布式节点在向主节点发送第一数据访问请求之前,预设第二响应时长为100ms,当该第一分布式节点向主节点发送第一数据访问请求且该第一分布式节点在该100ms内没有接收到数据访问响应时,该第一分布式节点确定该主节点故障,并发起主节点选举请求。

步骤204:如果该第一分布式节点选举成功,则确定该第一分布式节点为该分布式系统的主节点,第一分布式节点向该客户端发送主节点更新消息,该主节点更新消息中携带该第一分布式节点的标识。

当该第一分布式节点选举成功时,可以将该第一分布式节点确定为该分布式系统的主节点,此时,该第一分布式系统可以向该客户端发送主节点更新消息,使该客户端更新该客户端存储的主节点标识,当然,将该第一分布式节点确定为该分布式系统的主节点时,该第一分布式节点还可以响应该第一数据访问请求,并向客户端发送数据访问响应。

其中,该主节点更新消息可以是该第一分布式节点在被确定为该分布式系统的主节点时,将该主节点更新消息发送给该客户端,也可以是该第一分布式节点响应该第一数据访问请求,向该客户端发送该数据访问响应时,将该主节点更新消息和该数据访问响应同时发送给该客户端,本发明实施例对主节点更新消息发送的时机不作限定。

需要说明的是,当该第一分布式节点将该主节点更新消息和该数据访问响应同时发送给该客户端时,该第一分布式节点可以将该主节点更新消息携带在该数据访问响应中,也可以同时将该主节点更新消息与该数据访问响应分别发送给该客户端,本发明实施例对此不作具体限定。

另外,该分布式系统的主节点响应第一数据访问请求的方法可以参考相关技术,本发明实施例对此不做详细阐述。

进一步地,如果该第一分布式节点选举失败,该第一分布式节点向该客户端发送故障提示信息,该故障提示信息用于提示该分布式系统的主节点发生故障,当该客户端接收到该第一分布式节点发送的故障提示信息时,确定该分布式系统的主节点发生故障,该客户端将存储的主节点标识删除,并从分布式系统的多个分布式节点中,随机选择一个分布式节点,返回步骤201。

需要说明的是,由于该分布式系统的主节点故障,该第一分布式节点无法将该第一数据访问请求发送给主节点,并且当该第一分布式节点选举失败时,该第一分布式节点也不能被确定为该分布式系统的主节点,因此当该第一分布式节点选举失败时,第一分布式节点可以向该客户端发送故障提示信息,使该客户端在接收到该故障提示信息时,确定该分布式系统的主节点发生故障,该客户端将存储的主节点标识删除,并重新从分布式系统的多个分布式节点中,随机选择一个分布式节点,返回步骤201。

步骤205:客户端接收该第一分布式节点发送的主节点更新消息,将存储的主节点标识替换为该第一分布式节点的标识。

当该客户端接收该第一分布式节点发送的主节点更新消息时,将存储的主节点标识替换为该第一分布式节点的标识,在下一次该客户端需要访问该分布式系统中的数据时,可以基于存储的主节点标识,直接向主节点发送第一数据访问请求,提高了客户端访问该分布式系统中的数据的效率。

需要说明的是,在步骤204中,该第一分布式节点可以向该客户端只发送主节点更新消息,也可以将该主节点更新消息携带在数据访问响应中,因此,当该客户端接收到该第一分布式节点发送的数据访问响应时,如果该数据访问响应中携带有主节点更新消息,该客户端可以将存储的主节点标识替换为该第一分布式节点。

例如,当客户端接收该第一分布式节点发送的主节点更新消息时,从该主节点更新消息中获取到第一分布式节点的标识为123.139.49.201,因此,该客户端将存储的主节点标识替换为该第一分布式节点的标识123.139.49.201。

在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点故障时,该客户端还可以从该分布式系统中再随机选择一个分布式节点来访问该分布式系统中的数据,提高了该分布式 系统的工作效率;当该第一分布式节点不为主节点,第一分布式节点还可以将该第一数据访问请求发送给主节点,通过该主节点可以保证该分布式系统中数据的一致性;当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。

图3是本发明实施例提供的一种分布式系统中主节点的选取装置框图,参见图3,该装置包括接收模块301、第一发送模块302、选举模块303、确定模块304。

接收模块301,用于执行上述步骤202所述的接收客户端发送的第一数据访问请求的操作;

第一发送模块302,用于执行上述步骤202所述的将该第一数据访问请求发送给该分布式系统的主节点的操作;

选举模块303,用于执行上述步骤203所述的操作;

确定模块304,用于执行上述步骤204所述的如果选举成功,则确定第一分布式节点为该分布式系统的主节点的操作。

可选地,该装置还包括:

第二发送模块,用于执行上述步骤204所述的向该客户端发送主节点更新消息,该主节点更新消息中携带该第一分布式节点的标识的操作。

可选地,该装置还包括:

第三发送模块,用于执行上述步骤203之后,如果选举失败,则向该客户端发送故障提示信息,该故障提示信息用于提示该分布式系统的主节点发生故障的操作。

可选地,该装置还包括:

选取模块,用于执行上述步骤201之前,当该分布式系统创建完成时,选取该分布式系统的主节点;

存储模块,用于执行上述步骤201之前,当该分布式系统的主节点选取成功时,存储该分布式系统的主节点标识。

在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。

图4本发明实施例提供的另一种分布式系统中主节点的选取装置框图,参见图4,该装置包括第一选择模块401、第一确定模块402和第一发送模块403。

第一选择模块401,用于执行上述步骤201所述的从分布式系统的多个分布式节点中,随机选择一个分布式节点的操作;

第一确定模块402,用于执行上述步骤201所述的将选择的分布式节点确定为第一分布式节点的操作;

第一发送模块403,用于执行上述步骤201所述的向该第一分布式节点发送第一数据访问请求的操作。

可选地,参见图5,该装置还包括接收模块404和替换模块405:

接收模块404,用于执行上述步骤205所述的接收该第一分布式节点发送的主节点更新消息的操作;

替换模块405,用于执行上述步骤205所述的将存储的主节点标识替换为该第一分布式节点的标识操作。

可选地,参见图6,该装置还包括第二确定模块406和删除模块407。

第二确定模块406,用于执行上述步骤204之后,接收到该第一分布式节点发送的故障提示信息时,确定该分布式系统的主节点发生故障;

删除模块407,用于执行上述步骤204之后,将存储的主节点标识删除,并返回从该从分布式系统的多个分布式节点中,随机选择一个分布式节点。

可选地,该装置还包括:

第二发送模块,用于基于存储的主节点标识,向该分布式系统的主节点发送该第一数据访问请求,使该分布式系统的主节点返回数据访问响应;

第二选择模块,用于当未接收到该分布式系统的主节点返回的数据访问响应时,返回从该从分布式系统的多个分布式节点中,随机选择一个分布式节点。

可选地,该装置还包括:

第三选择模块,用于当该分布式系统创建完成时,从该分布式系统的多个分布式节点中,随机选择一个分布式节点;

第三确定模块,用于将选择的分布式节点确定为第二分布式节点;

第三发送模块,用于向该第二分布式节点发送第二数据访问请求,使该第二分布式节点发起主节点选举请求,该第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求;

存储模块,用于当接收到该第二分布式节点发送的第二数据访问响应时,将该第二分布式节点的标识作为主节点标识进行存储。

在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。

图7是本发明实施例提供的一种分布式系统中主节点的选取装置示意图,参见图7,该装置包括:发射机701、接收机702、处理器703、存储器704、通信总线705,包括:

存储器704,用于存储消息和数据;

接收机702,用于接收客户端发送的第一数据访问请求,该第一数据访问请求为通过分布式系统的主节点进行数据访问的请求,该第一分布式节点为该分布式系统中任一分布式节点,其中,上述接收模块301可以包含于该接收机702中;

发射机701,用于当该第一分布式节点不为该分布式系统的主节点时,基于存储的主节点标识,将该第一数据访问请求发送给该分布式系统的主节点,上 述第一发送模块302可以包含于该发射机701中;

处理器703,用于:

当确定该第一数据访问请求无法发送至该分布式系统的主节点时,确定该分布式系统的主节点发生故障,并发起主节点选举请求;

如果该第一分布式节点选举成功,则确定该第一分布式节点为该分布式系统的主节点;

其中,上述选举模块303和确定模块304可以包含于该处理器703中。

可选地,

发射机701用于向该客户端发送主节点更新消息,该主节点更新消息中携带该第一分布式节点的标识,使该客户端将存储的主节点标识替换为该第一分布式节点的标识,其中,上述第二发送模块可以包含于该发射机701中。

可选地,

发射机701用于如果选举失败,则向该客户端发送故障提示信息,该故障提示信息用于提示该分布式系统的主节点发生故障,其中,上述第三发送模块可以包含于该发射机701中。

可选地,

处理器703,还用于当该分布式系统创建完成时,选取该分布式系统的主节点,其中,上述选取模块可以包含于该处理器703中;

存储器704,还用于当该分布式系统的主节点选取成功时,存储该分布式系统的主节点标识,其中,上述存储模块可以包含于该存储器704中。

在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。

图8是本发明实施例提供的另一种分布式系统中主节点的选取装置示意图, 参见图8,该装置包括:发射机801、接收机802、处理器803、存储器804、通信总线805,包括:

存储器804,用于存储消息和数据;

处理器803,用于:

从分布式系统的多个分布式节点中,随机选择一个分布式节点;

将选择的分布式节点确定为第一分布式节点;

其中,上述第一选择模块401和第一确定模块402可以包含于该处理器803中;

发射机801,用于向该第一分布式节点发送第一数据访问请求,使该第一分布式节点在确定不为该分布式系统的主节点且基于该第一数据访问请求确定该分布式系统的主节点发生故障时重新选取该分布式系统的主节点,该第一数据访问请求为通过该分布式系统的主节点进行数据访问的请求,其中,上述第一发送模块403可以包含于该发射机801中。

可选地,

接收机802,用于接收该第一分布式节点发送的主节点更新消息,该主节点更新消息中携带该第一分布式节点的标识,其中,上述接收模块404可以包含于该接收机802中;

处理器803,用于将存储的主节点标识替换为该第一分布式节点的标识,其中上述替换模块405可以包含于该处理器803中。

可选地,处理器803还用于:

接收到该第一分布式节点发送的故障提示信息时,确定该分布式系统的主节点发生故障;

将存储的主节点标识删除,并返回从该从分布式系统的多个分布式节点中,随机选择一个分布式节点;

其中,上述第二确定模块406和删除模块407可以包含于该处理器803中。

可选地,

发射机801,还用于基于存储的主节点标识,向该分布式系统的主节点发送该第一数据访问请求,使该分布式系统的主节点返回数据访问响应,其中上述第二发送模块可以包含于该发射机801中;

处理器803,还用于当未接收到该分布式系统的主节点返回的数据访问响应 时,返回从该从分布式系统的多个分布式节点中,随机选择一个分布式节点,其中,上述第二选择模块可以包含于该处理器803中。

可选地,处理器803还用于:

当该分布式系统创建完成时,从该分布式系统的多个分布式节点中,随机选择一个分布式节点;

将选择的分布式节点确定为第二分布式节点;

其中,上述第三选择模块和第三确定模块可以包含于该处理器803中;

发射机801,还用于向该第二分布式节点发送第二数据访问请求,使该第二分布式节点发起主节点选举请求,该第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求,其中,上述第三发送模块可以包含于该发射机801中;

处理器803,还用于当该客户端接收到该第二分布式节点发送的第二数据访问响应时,将该第二分布式节点的标识作为主节点标识进行存储,其中,上述存储模块可以包含于该处理器803中。

在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。

需要说明的是:上述实施例提供的分布式系统中主节点的选取装置在选取主节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式系统中主节点的选取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1