CN106911728A - 分布式系统中主节点的选取方法和装置 - Google Patents

分布式系统中主节点的选取方法和装置 Download PDF

Info

Publication number
CN106911728A
CN106911728A CN201510967204.7A CN201510967204A CN106911728A CN 106911728 A CN106911728 A CN 106911728A CN 201510967204 A CN201510967204 A CN 201510967204A CN 106911728 A CN106911728 A CN 106911728A
Authority
CN
China
Prior art keywords
node
distributed
host node
distributed system
data access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510967204.7A
Other languages
English (en)
Other versions
CN106911728B (zh
Inventor
关键
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Huawei Technologies Service Co Ltd
Original Assignee
Huawei Technologies Service Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Service Co Ltd filed Critical Huawei Technologies Service Co Ltd
Priority to CN201510967204.7A priority Critical patent/CN106911728B/zh
Publication of CN106911728A publication Critical patent/CN106911728A/zh
Application granted granted Critical
Publication of CN106911728B publication Critical patent/CN106911728B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0677Localisation of faults
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种分布式系统中主节点的选取方法和装置,属于互联网领域。所述方法包括:第一分布式节点接收客户端发送的第一数据访问请求,第一数据访问请求为通过分布式系统的主节点进行数据访问的请求,第一分布式节点为分布式系统中任一分布式节点,当第一分布式节点不为分布式系统的主节点时,基于存储的主节点标识,将第一数据访问请求发送给分布式系统的主节点,当确定第一数据访问请求无法发送至分布式系统的主节点时,确定分布式系统的主节点发生故障,并发起主节点选举请求,如果第一分布式节点选举成功,则确定第一分布式节点为分布式系统的主节点。本发明极大地节省了通信带宽,提高了分布式系统的工作效率。

Description

分布式系统中主节点的选取方法和装置
技术领域
本发明涉及互联网领域,特别涉及一种分布式系统中主节点的选取方法和装置。
背景技术
随着互联网技术的快速发展,分布式系统的应用范围越来越广。由于分布式系统是由多个自治的计算机节点作为分布式节点,通过通信网络组成的机群系统,且该分布式系统可以作为服务器侧来为客户端提供数据,因此客户端可以通过该分布式系统中的任意一个分布式节点进行数据访问。而为了保证客户端通过该分布式系统中的任意一个分布式节点访问到的数据都是一致的,一般将该分布式系统中的分布式节点分为一个主节点和多个从节点,主节点不仅可以对自身存储的数据进行修改,还可以对该多个从节点中存储的数据进行修改,从而保证该分布式系统中数据的一致性。而分布式系统中的主节点一般是通过选取得到,因此,亟需一种分布式系统中主节点的选取方法。
现有技术中,当该分布式系统创建完成之后,该分布式系统可以从包括的多个分布式节点中,随机选择一个分布式节点作为主节点,并将该分布式系统中除该主节点之外的分布式节点作为从节点。之后,为了保证该主节点和多个从节点之间的正常通信,该主节点必须按照固定周期向该多个从节点发送心跳消息,该心跳消息用于确定该主节点是否正常运行。对于该多个从节点中的任一从节点,当该从节点接收到该心跳消息时,确定该主节点正常运行。而当该从节点未接收到该心跳消息时,确定该主节点发生故障,该从节点可以向该分布式系统中除该从节点之外的其他分布式节点发送主节点选举请求,该主节点选举请求用于确定是否将用于发送该主节点选举请求的分布式节点选举为该分布式系统的主节点,当该从节点选举成功时,将该从节点确定为该分布式系统的主节点,并将该分布式系统中该主节点之外的分布式节点作为从节点,返回按照固定周期向该多个从节点发送心跳消息的步骤。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于现有技术中,该分布式系统中的主节点需要按照固定周期向该分布式系统中的所有从节点发送心跳信息,占用了大量的通信带宽,浪费资源。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种分布式系统中主节点的选取方法和装置。所述技术方案如下:
第一方面,提供了一种分布式系统中主节点的选取方法,所述方法包括:
第一分布式节点接收客户端发送的第一数据访问请求,所述第一数据访问请求为通过分布式系统的主节点进行数据访问的请求,所述第一分布式节点为所述分布式系统中任一分布式节点;
当所述第一分布式节点不为所述分布式系统的主节点时,基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点;
当确定所述第一数据访问请求无法发送至所述分布式系统的主节点时,确定所述分布式系统的主节点发生故障,并发起主节点选举请求;
如果所述第一分布式节点选举成功,则确定所述第一分布式节点为所述分布式系统的主节点。
在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。
结合第一方面,在上述第一方面的第一种可能的实现方式中,所述确定所述第一分布式节点为所述分布式系统的主节点之后,还包括:
所述第一分布式节点向所述客户端发送主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识,使所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。
第一分布式节点可以向客户端发送主节点更新消息,使该客户端将存储的主节点标识替换为第一分布式节点的标识,则该客户端在下次需要访问该分布式系统中的数据时,可以基于存储的主节点标识,直接向主节点发送数据访问请求,提高了该分布式系统的工作效率。
结合第一方面或第一方面的第一种可能的实现方式,在上述第一方面的第二种可能的实现方式中,所述确定所述分布式系统的主节点发生故障,并发起主节点选举请求之后,还包括:
如果所述第一分布式节点选举失败,则向所述客户端发送故障提示信息,所述故障提示信息用于提示所述分布式系统的主节点发生故障。
当该第一分布式节点选举失败不能被确定为主节点时,可以向客户端发送故障提示信息,使客户端可以确定该分布式系统主节点故障,不再向该主节点发送第一数据访问请求,提高了该分布式系统的工作效率。
结合第一方面至第一方面的第二种可能的实现方式中的任一种可能的实现方式,在上述第一方面的第三种可能的实现方式中,所述基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点之前,还包括:
当所述分布式系统创建完成时,所述第一分布式节点选取所述分布式系统的主节点;
当所述分布式系统的主节点选取成功时,存储所述分布式系统的主节点标识。
需要说明的是,该分布式系统创建完成时没有主节点,且此时该分布式系统中的所有的分布式节点都没有存储该分布式系统的数据,因此第一分布式节点可以选取该分布式系统的主节点。
第二方面,提供了一种分布式系统中主节点的选取方法,所述方法包括:
客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点;
所述客户端将选择的分布式节点确定为第一分布式节点;
所述客户端向所述第一分布式节点发送第一数据访问请求,使所述第一分布式节点在确定不为所述分布式系统的主节点且基于所述第一数据访问请求确定所述分布式系统的主节点发生故障时重新选取所述分布式系统的主节点,所述第一数据访问请求为通过所述分布式系统的主节点进行数据访问的请求。
该客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,向该第一分布式节点发送第一数据请求来访问该分布式系统中的数据,使该第一分布式节点在确定主节点故障时重新选取该分布式系统的主节点,该分布式系统可以在主节点故障时迅速产生一个主节点,无需通过心跳消息来确定主节点发生故障,提高了该分布式系统的工作效率。
结合第二方面,在上述第二方面的第一种可能的实现方式中,所述客户端向所述第一分布式节点发送第一数据访问请求之后,还包括:
所述客户端接收所述第一分布式节点发送的主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识;
所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。
客户端可以接收主节点更新消息,并基于该主节点更新消息,更新该客户端存储的主节点标识,当该客户端在下次需要访问该分布式系统中的数据时,可以直接向主节点发送第一数据访问请求,提高了该分布式系统的工作效率。
结合第二方面,在上述第二方面的第二种可能的实现方式中,所述客户端向所述第一分布式节点发送第一数据访问请求之后,还包括:
当所述客户端接收到所述第一分布式节点发送的故障提示信息时,确定所述分布式系统的主节点发生故障;
所述客户端将存储的主节点标识删除,并返回执行所述从分布式系统的多个分布式节点中,随机选择一个分布式节点的步骤。
当客户端收到故障提示信息时,说明该第一分布式节点无法向主节点发送该第一数据访问请求且该第一分布式节点不能被确定为主节点时,因此该客户端还可以重新随机选择一个分布式节点,并通过该分布式节点来访问该分布式系统中的数据,提高了该客户端访问该分布式系统中数据的成功率,也提高了该分布式系统的工作效率。
结合第二方面至第二方面的第二种可能的实现方式中任一种可能的实现方式,在上述第二方面的第三种可能的实现方式中,所述客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点之前,还包括:
所述客户端基于存储的主节点标识,向所述分布式系统的主节点发送所述第一数据访问请求,使所述分布式系统的主节点返回数据访问响应;
当所述客户端未接收到所述分布式系统的主节点返回的数据访问响应时,执行所述从分布式系统的多个分布式节点中,随机选择一个分布式节点的步骤。
当该客户端直接向主节点发送第一数据访问请求,且未接收到该主节点返回的数据访问响应,该客户端可以从该分布式系统的多个分布式节点中随机选择一个分布式节点,并通过该分布式节点来访问该分布式系统中的数据。
结合第二方面至第二方面的第三种可能的实现方式中的任一种可能的实现方式,在上述第二方面的第四种可能的实现方式中,所述客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点之前,还包括:
当所述分布式系统创建完成时,所述客户端从所述分布式系统的多个分布式节点中,随机选择一个分布式节点;
所述客户端将选择的分布式节点确定为第二分布式节点;
所述客户端向所述第二分布式节点发送第二数据访问请求,使所述第二分布式节点发起主节点选举请求,所述第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求;
当所述客户端接收到所述第二分布式节点发送的第二数据访问响应时,将所述第二分布式节点的标识作为主节点标识进行存储。
需要说明的是,当该分布式系统创建完成时没有主节点,且此时该分布式系统中的所有的分布式节点都没有存储该分布式系统的数据,因此客户端可以随机选择一个分布式节点,将选择的分布式节点确定为第二分布式节点,向该第二分布式节点发送第二数据访问请求,使该第二分布式节点在确定主节点故障时选取该分布式系统的主节点,提高了该分布式系统的工作效率。
第三方面,提供了一种分布式系统中主节点的选取装置,所述装置包括:接收模块,用于接收客户端发送的第一数据访问请求,所述第一数据访问请求为通过分布式系统的主节点进行数据访问的请求;
第一发送模块,用于当不为所述分布式系统的主节点时,基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点;
选举模块,用于当确定所述第一数据访问请求无法发送至所述分布式系统的主节点时,确定所述分布式系统的主节点发生故障,并发起主节点选举请求;
确定模块,用于如果选举成功,则确定所述第一分布式节点为所述分布式系统的主节点,所述第一分布式节点为所述分布式系统中任一分布式节点。
结合第三方面,在上述第三方面的第一种可能的实现方式中,所述装置还包括:
第二发送模块,用于向所述客户端发送主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识,使所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。
结合第三方面或第三方面的第一种可能的实现方式,在上述第三方面的第二种可能的实现方式中,所述装置还包括:
第三发送模块,用于如果选举失败,则向所述客户端发送故障提示信息,所述故障提示信息用于提示所述分布式系统的主节点发生故障。
结合第三方面至第三方面的第二种可能的实现方式中的任一种可能的实现方式,在上述第三方面的第三种可能的实现方式中,所述装置还包括:
选取模块,用于当所述分布式系统创建完成时,选取所述分布式系统的主节点;
存储模块,用于当所述分布式系统的主节点选取成功时,存储所述分布式系统的主节点标识。
第四方面,提供了一种分布式系统中主节点的选取装置,所述装置包括:
第一选择模块,用于从分布式系统的多个分布式节点中,随机选择一个分布式节点;
第一确定模块,用于将选择的分布式节点确定为第一分布式节点;
第一发送模块,用于向所述第一分布式节点发送第一数据访问请求,使所述第一分布式节点在确定不为所述分布式系统的主节点且基于所述第一数据访问请求确定所述分布式系统的主节点发生故障时重新选取所述分布式系统的主节点,所述第一数据访问请求为通过所述分布式系统的主节点进行数据访问的请求。
结合第四方面,在上述第四方面的第一种可能的实现方式中,所述装置还包括:
接收模块,用于接收所述第一分布式节点发送的主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识;
替换模块,用于将存储的主节点标识替换为所述第一分布式节点的标识。
结合第四方面,在上述第四方面的第二种可能的实现方式中,所述装置还包括:
第二确定模块,用于接收到所述第一分布式节点发送的故障提示信息时,确定所述分布式系统的主节点发生故障;
删除模块,用于将存储的主节点标识删除,并返回从所述从分布式系统的多个分布式节点中,随机选择一个分布式节点。
结合第四方面至第四方面的第二种可能的实现方式中的任一种可能的实现方式,在上述第四方面的第三种可能的实现方式中,所述装置还包括:
第二发送模块,用于基于存储的主节点标识,向所述分布式系统的主节点发送所述第一数据访问请求,使所述分布式系统的主节点返回数据访问响应;
第二选择模块,用于当未接收到所述分布式系统的主节点返回的数据访问响应时,返回从所述从分布式系统的多个分布式节点中,随机选择一个分布式节点。
结合第四方面至第四方面的第三种可能的实现方式中的任一种可能的实现方式,在上述第四方面的第四种可能的实现方式中,所述装置还用于:
第三选择模块,用于当所述分布式系统创建完成时,从所述分布式系统的多个分布式节点中,随机选择一个分布式节点;
第三确定模块,用于将选择的分布式节点确定为第二分布式节点;
第三发送模块,用于向所述第二分布式节点发送第二数据访问请求,使所述第二分布式节点发起主节点选举请求,所述第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求;
存储模块,用于当接收到所述第二分布式节点发送的第二数据访问响应时,将所述第二分布式节点的标识作为主节点标识进行存储。
本发明实施例提供的技术方案带来的有益效果是:在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图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中。
在本发明实施例中,客户端可以从该分布式系统中随机选取一个分布式节点,将该分布式节点确定为第一分布式节点,并向该第一分布式节点发送第一数据访问请求,当该第一分布式节点不为主节点,将该第一数据访问请求发送给主节点,当该第一分布式节点确定该第一数据访问请求无法发送至主节点时,该第一分布式节点可以确定主节点故障,并发起主节点选举请求,从而不需要依靠心跳消息来判断该主节点是否故障,因此该分布式系统中的主节点不需要按照固定周期向该分布式系统中的其他分布式节点发送心跳消息,极大地节省了通信带宽,进一步提高了该分布式系统的工作效率。
需要说明的是:上述实施例提供的分布式系统中主节点的选取装置在选取主节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式系统中主节点的选取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (18)

1.一种分布式系统中主节点的选取方法,其特征在于,所述方法包括:
第一分布式节点接收客户端发送的第一数据访问请求,所述第一数据访问请求为通过分布式系统的主节点进行数据访问的请求,所述第一分布式节点为所述分布式系统中任一分布式节点;
当所述第一分布式节点不为所述分布式系统的主节点时,基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点;
当确定所述第一数据访问请求无法发送至所述分布式系统的主节点时,确定所述分布式系统的主节点发生故障,并发起主节点选举请求;
如果所述第一分布式节点选举成功,则确定所述第一分布式节点为所述分布式系统的主节点。
2.如权利要求1所述的方法,其特征在于,所述确定所述第一分布式节点为所述分布式系统的主节点之后,还包括:
所述第一分布式节点向所述客户端发送主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识,使所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。
3.如权利要求1或2所述的方法,其特征在于,所述确定所述分布式系统的主节点发生故障,并发起主节点选举请求之后,还包括:
如果所述第一分布式节点选举失败,则向所述客户端发送故障提示信息,所述故障提示信息用于提示所述分布式系统的主节点发生故障。
4.如权利要求1-3任一权利要求所述的方法,其特征在于,所述基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点之前,还包括:
当所述分布式系统创建完成时,所述第一分布式节点选取所述分布式系统的主节点;
当所述分布式系统的主节点选取成功时,存储所述分布式系统的主节点标识。
5.一种分布式系统中主节点的选取方法,其特征在于,所述方法包括:
客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点;
所述客户端将选择的分布式节点确定为第一分布式节点;
所述客户端向所述第一分布式节点发送第一数据访问请求,使所述第一分布式节点在确定不为所述分布式系统的主节点且基于所述第一数据访问请求确定所述分布式系统的主节点发生故障时重新选取所述分布式系统的主节点,所述第一数据访问请求为通过所述分布式系统的主节点进行数据访问的请求。
6.如权利要求5所述的方法,其特征在于,所述客户端向所述第一分布式节点发送第一数据访问请求之后,还包括:
所述客户端接收所述第一分布式节点发送的主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识;
所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。
7.如权利要求5所述的方法,其特征在于,所述客户端向所述第一分布式节点发送第一数据访问请求之后,还包括:
当所述客户端接收到所述第一分布式节点发送的故障提示信息时,确定所述分布式系统的主节点发生故障;
所述客户端将存储的主节点标识删除,并返回执行所述从分布式系统的多个分布式节点中,随机选择一个分布式节点的步骤。
8.如权利要求5-7任一权利要求所述的方法,其特征在于,所述客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点之前,还包括:
所述客户端基于存储的主节点标识,向所述分布式系统的主节点发送所述第一数据访问请求,使所述分布式系统的主节点返回数据访问响应;
当所述客户端未接收到所述分布式系统的主节点返回的数据访问响应时,执行所述从分布式系统的多个分布式节点中,随机选择一个分布式节点的步骤。
9.如权利要求5-8任一权利要求所述的方法,其特征在于,所述客户端从分布式系统的多个分布式节点中,随机选择一个分布式节点之前,还包括:
当所述分布式系统创建完成时,所述客户端从所述分布式系统的多个分布式节点中,随机选择一个分布式节点;
所述客户端将选择的分布式节点确定为第二分布式节点;
所述客户端向所述第二分布式节点发送第二数据访问请求,使所述第二分布式节点发起主节点选举请求,所述第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求;
当所述客户端接收到所述第二分布式节点发送的第二数据访问响应时,将所述第二分布式节点的标识作为主节点标识进行存储。
10.一种分布式系统中主节点的选取装置,其特征在于,所述装置包括:
接收模块,用于接收客户端发送的第一数据访问请求,所述第一数据访问请求为通过分布式系统的主节点进行数据访问的请求;
第一发送模块,用于当不为所述分布式系统的主节点时,基于存储的主节点标识,将所述第一数据访问请求发送给所述分布式系统的主节点;
选举模块,用于当确定所述第一数据访问请求无法发送至所述分布式系统的主节点时,确定所述分布式系统的主节点发生故障,并发起主节点选举请求;
确定模块,用于如果选举成功,则确定第一分布式节点为所述分布式系统的主节点,所述第一分布式节点为所述分布式系统中任一分布式节点。
11.如权利要求10所述的装置,其特征在于,所述装置还包括:
第二发送模块,用于向所述客户端发送主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识,使所述客户端将存储的主节点标识替换为所述第一分布式节点的标识。
12.如权利要求10或11所述的装置,其特征在于,所述装置还包括:
第三发送模块,用于如果选举失败,则向所述客户端发送故障提示信息,所述故障提示信息用于提示所述分布式系统的主节点发生故障。
13.如权利要求10-12任一权利要求所述的装置,其特征在于,所述装置还包括:
选取模块,用于当所述分布式系统创建完成时,选取所述分布式系统的主节点;
存储模块,用于当所述分布式系统的主节点选取成功时,存储所述分布式系统的主节点标识。
14.一种分布式系统中主节点的选取装置,其特征在于,所述装置包括:
第一选择模块,用于从分布式系统的多个分布式节点中,随机选择一个分布式节点;
第一确定模块,用于将选择的分布式节点确定为第一分布式节点;
第一发送模块,用于向所述第一分布式节点发送第一数据访问请求,使所述第一分布式节点在确定不为所述分布式系统的主节点且基于所述第一数据访问请求确定所述分布式系统的主节点发生故障时重新选取所述分布式系统的主节点,所述第一数据访问请求为通过所述分布式系统的主节点进行数据访问的请求。
15.如权利要求14所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收所述第一分布式节点发送的主节点更新消息,所述主节点更新消息中携带所述第一分布式节点的标识;
替换模块,用于将存储的主节点标识替换为所述第一分布式节点的标识。
16.如权利要求14所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于接收到所述第一分布式节点发送的故障提示信息时,确定所述分布式系统的主节点发生故障;
删除模块,用于将存储的主节点标识删除,并返回从所述从分布式系统的多个分布式节点中,随机选择一个分布式节点。
17.如权利要求14-16任一权利要求所述的装置,其特征在于,所述装置还包括:
第二发送模块,用于基于存储的主节点标识,向所述分布式系统的主节点发送所述第一数据访问请求,使所述分布式系统的主节点返回数据访问响应;
第二选择模块,用于当未接收到所述分布式系统的主节点返回的数据访问响应时,返回从所述分布式系统的多个分布式节点中,随机选择一个分布式节点。
18.如权利要求14-17任一权利要求所述的装置,其特征在于,所述装置还包括:
第三选择模块,用于当所述分布式系统创建完成时,从所述分布式系统的多个分布式节点中,随机选择一个分布式节点;
第三确定模块,用于将选择的分布式节点确定为第二分布式节点;
第三发送模块,用于向所述第二分布式节点发送第二数据访问请求,使所述第二分布式节点发起主节点选举请求,所述第二数据访问请求为通过所述分布式系统的主节点进行数据访问的请求;
存储模块,用于当接收到所述第二分布式节点发送的第二数据访问响应时,将所述第二分布式节点的标识作为主节点标识进行存储。
CN201510967204.7A 2015-12-22 2015-12-22 分布式系统中主节点的选取方法和装置 Active CN106911728B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510967204.7A CN106911728B (zh) 2015-12-22 2015-12-22 分布式系统中主节点的选取方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510967204.7A CN106911728B (zh) 2015-12-22 2015-12-22 分布式系统中主节点的选取方法和装置

Publications (2)

Publication Number Publication Date
CN106911728A true CN106911728A (zh) 2017-06-30
CN106911728B CN106911728B (zh) 2019-11-29

Family

ID=59200412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510967204.7A Active CN106911728B (zh) 2015-12-22 2015-12-22 分布式系统中主节点的选取方法和装置

Country Status (1)

Country Link
CN (1) CN106911728B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107590284A (zh) * 2017-09-30 2018-01-16 麦格创科技(深圳)有限公司 分布式爬虫系统中任务管理器的选举方法及系统
CN108206834A (zh) * 2018-04-04 2018-06-26 深圳怡化电脑股份有限公司 中心服务请求的处理方法、装置和系统
CN108769118A (zh) * 2018-04-23 2018-11-06 网宿科技股份有限公司 一种分布式系统中主节点的选取方法及装置
CN108984349A (zh) * 2018-08-17 2018-12-11 杭州朗和科技有限公司 主节点选举方法及装置、介质和计算设备
CN109101196A (zh) * 2018-08-14 2018-12-28 北京奇虎科技有限公司 主节点切换方法、装置、电子设备及计算机存储介质
CN109150662A (zh) * 2018-08-30 2019-01-04 百度在线网络技术(北京)有限公司 消息传输方法、分布式系统、设备、介质和无人车
CN109379238A (zh) * 2018-12-14 2019-02-22 郑州云海信息技术有限公司 一种分布式集群的ctdb主节点选举方法、装置及系统
CN109450711A (zh) * 2018-12-21 2019-03-08 广州华多网络科技有限公司 分布式系统中主节点的选取方法、装置、系统及存储介质
WO2019127915A1 (zh) * 2017-12-29 2019-07-04 北京奇虎科技有限公司 基于分布式一致性协议实现的数据读取方法及装置
CN110661637A (zh) * 2018-06-30 2020-01-07 华为技术有限公司 分布式系统成员变更方法和分布式系统
CN110661841A (zh) * 2019-08-06 2020-01-07 江阴逐日信息科技有限公司 微服务架构中分布式服务发现集群的数据一致性方法
CN111147274A (zh) * 2018-11-01 2020-05-12 戴尔产品有限公司 为集群解决方案创建高度可用的仲裁集的系统和方法
CN111327447A (zh) * 2018-12-17 2020-06-23 华为技术有限公司 一种分布式系统、仲裁方法、节点设备及存储介质
CN111342986A (zh) * 2018-12-19 2020-06-26 杭州海康威视系统技术有限公司 分布式节点管理方法及装置、分布式系统、存储介质
CN111737104A (zh) * 2019-10-25 2020-10-02 北京沃东天骏信息技术有限公司 区块链网络服务平台及其测试用例共享方法、存储介质
CN112214466A (zh) * 2019-07-12 2021-01-12 海能达通信股份有限公司 分布式集群系统及数据写入方法、电子设备、存储装置
CN112865995A (zh) * 2019-11-27 2021-05-28 上海哔哩哔哩科技有限公司 分布式主从系统
WO2022033290A1 (zh) * 2020-08-12 2022-02-17 百果园技术(新加坡)有限公司 强一致存储系统、数据强一致存储方法、服务器及介质
CN114625489A (zh) * 2022-03-24 2022-06-14 阿里巴巴(中国)有限公司 访问请求响应方法、装置以及分布式系统
WO2022134877A1 (zh) * 2020-12-22 2022-06-30 中兴通讯股份有限公司 节点切换方法、电子设备和计算机可读存储介质
CN114780442A (zh) * 2022-06-22 2022-07-22 杭州悦数科技有限公司 分布式系统的测试方法和装置
CN115333944A (zh) * 2022-07-20 2022-11-11 苏州浪潮智能科技有限公司 虚拟机集群ip资源配置方法、系统、设备和存储介质
CN115514689A (zh) * 2022-09-22 2022-12-23 成都中航信虹科技股份有限公司 一种应用程序守护方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025630A (zh) * 2010-12-14 2011-04-20 成都市华为赛门铁克科技有限公司 负载均衡方法及负载均衡系统
US20130070636A1 (en) * 2011-09-15 2013-03-21 Qualcomm Incorporated Tracking management systems and methods
CN104468163A (zh) * 2013-09-18 2015-03-25 腾讯科技(北京)有限公司 容灾网络组网的方法、装置及容灾网络
CN104811325A (zh) * 2014-01-24 2015-07-29 华为技术有限公司 一种集群节点控制器监控方法、相关装置以及控制器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025630A (zh) * 2010-12-14 2011-04-20 成都市华为赛门铁克科技有限公司 负载均衡方法及负载均衡系统
US20130070636A1 (en) * 2011-09-15 2013-03-21 Qualcomm Incorporated Tracking management systems and methods
CN104468163A (zh) * 2013-09-18 2015-03-25 腾讯科技(北京)有限公司 容灾网络组网的方法、装置及容灾网络
CN104811325A (zh) * 2014-01-24 2015-07-29 华为技术有限公司 一种集群节点控制器监控方法、相关装置以及控制器

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107590284A (zh) * 2017-09-30 2018-01-16 麦格创科技(深圳)有限公司 分布式爬虫系统中任务管理器的选举方法及系统
WO2019127915A1 (zh) * 2017-12-29 2019-07-04 北京奇虎科技有限公司 基于分布式一致性协议实现的数据读取方法及装置
CN108206834A (zh) * 2018-04-04 2018-06-26 深圳怡化电脑股份有限公司 中心服务请求的处理方法、装置和系统
CN108206834B (zh) * 2018-04-04 2021-04-13 深圳怡化电脑股份有限公司 中心服务请求的处理方法、装置和系统
CN108769118A (zh) * 2018-04-23 2018-11-06 网宿科技股份有限公司 一种分布式系统中主节点的选取方法及装置
CN108769118B (zh) * 2018-04-23 2022-01-21 网宿科技股份有限公司 一种分布式系统中主节点的选取方法及装置
CN110661637A (zh) * 2018-06-30 2020-01-07 华为技术有限公司 分布式系统成员变更方法和分布式系统
US11445013B2 (en) 2018-06-30 2022-09-13 Huawei Technologies Co., Ltd. Method for changing member in distributed system and distributed system
CN109101196A (zh) * 2018-08-14 2018-12-28 北京奇虎科技有限公司 主节点切换方法、装置、电子设备及计算机存储介质
CN108984349B (zh) * 2018-08-17 2021-10-08 杭州朗和科技有限公司 主节点选举方法及装置、介质和计算设备
CN108984349A (zh) * 2018-08-17 2018-12-11 杭州朗和科技有限公司 主节点选举方法及装置、介质和计算设备
CN109150662A (zh) * 2018-08-30 2019-01-04 百度在线网络技术(北京)有限公司 消息传输方法、分布式系统、设备、介质和无人车
CN109150662B (zh) * 2018-08-30 2020-08-21 百度在线网络技术(北京)有限公司 消息传输方法、分布式系统、设备、介质和无人车
CN111147274B (zh) * 2018-11-01 2022-09-23 戴尔产品有限公司 为集群解决方案创建高度可用的仲裁集的系统和方法
CN111147274A (zh) * 2018-11-01 2020-05-12 戴尔产品有限公司 为集群解决方案创建高度可用的仲裁集的系统和方法
CN109379238A (zh) * 2018-12-14 2019-02-22 郑州云海信息技术有限公司 一种分布式集群的ctdb主节点选举方法、装置及系统
CN109379238B (zh) * 2018-12-14 2022-06-17 郑州云海信息技术有限公司 一种分布式集群的ctdb主节点选举方法、装置及系统
CN111327447A (zh) * 2018-12-17 2020-06-23 华为技术有限公司 一种分布式系统、仲裁方法、节点设备及存储介质
CN111342986A (zh) * 2018-12-19 2020-06-26 杭州海康威视系统技术有限公司 分布式节点管理方法及装置、分布式系统、存储介质
CN109450711B (zh) * 2018-12-21 2022-05-20 广州方硅信息技术有限公司 分布式系统中主节点的选取方法、装置、系统及存储介质
CN109450711A (zh) * 2018-12-21 2019-03-08 广州华多网络科技有限公司 分布式系统中主节点的选取方法、装置、系统及存储介质
CN112214466A (zh) * 2019-07-12 2021-01-12 海能达通信股份有限公司 分布式集群系统及数据写入方法、电子设备、存储装置
CN112214466B (zh) * 2019-07-12 2024-05-14 海能达通信股份有限公司 分布式集群系统及数据写入方法、电子设备、存储装置
CN110661841A (zh) * 2019-08-06 2020-01-07 江阴逐日信息科技有限公司 微服务架构中分布式服务发现集群的数据一致性方法
CN110661841B (zh) * 2019-08-06 2022-05-20 江阴逐日信息科技有限公司 微服务架构中分布式服务发现集群的数据一致性方法
CN111737104A (zh) * 2019-10-25 2020-10-02 北京沃东天骏信息技术有限公司 区块链网络服务平台及其测试用例共享方法、存储介质
CN112865995A (zh) * 2019-11-27 2021-05-28 上海哔哩哔哩科技有限公司 分布式主从系统
CN112865995B (zh) * 2019-11-27 2022-10-14 上海哔哩哔哩科技有限公司 分布式主从系统
WO2022033290A1 (zh) * 2020-08-12 2022-02-17 百果园技术(新加坡)有限公司 强一致存储系统、数据强一致存储方法、服务器及介质
WO2022134877A1 (zh) * 2020-12-22 2022-06-30 中兴通讯股份有限公司 节点切换方法、电子设备和计算机可读存储介质
CN114625489A (zh) * 2022-03-24 2022-06-14 阿里巴巴(中国)有限公司 访问请求响应方法、装置以及分布式系统
CN114780442A (zh) * 2022-06-22 2022-07-22 杭州悦数科技有限公司 分布式系统的测试方法和装置
CN115333944A (zh) * 2022-07-20 2022-11-11 苏州浪潮智能科技有限公司 虚拟机集群ip资源配置方法、系统、设备和存储介质
CN115333944B (zh) * 2022-07-20 2023-08-11 苏州浪潮智能科技有限公司 虚拟机集群ip资源配置方法、系统、设备和存储介质
CN115514689A (zh) * 2022-09-22 2022-12-23 成都中航信虹科技股份有限公司 一种应用程序守护方法、装置及存储介质
CN115514689B (zh) * 2022-09-22 2024-04-02 成都中航信虹科技股份有限公司 一种应用程序守护方法、装置及存储介质

Also Published As

Publication number Publication date
CN106911728B (zh) 2019-11-29

Similar Documents

Publication Publication Date Title
CN106911728A (zh) 分布式系统中主节点的选取方法和装置
JP6362119B2 (ja) クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム
CN109842651B (zh) 一种业务不间断的负载均衡方法和系统
CN103581276B (zh) 集群管理装置、系统、业务客户端及相应方法
CN113328894B (zh) 基于cu分离的双机热备的方法及设备
CN111651291A (zh) 一种共享存储集群防脑裂的方法、系统、计算机存储介质
CN111176888B (zh) 云存储的容灾方法、装置及系统
US10917289B2 (en) Handling network failures in networks with redundant servers
US20060184672A1 (en) Communication channels in a storage network
CN106331081B (zh) 一种信息同步方法及装置
CN107920101B (zh) 一种文件访问方法、装置、系统及电子设备
US11153173B1 (en) Dynamically updating compute node location information in a distributed computing environment
CN109189854B (zh) 提供持续业务的方法及节点设备
CN108509296B (zh) 一种处理设备故障的方法和系统
CN107547674A (zh) 地址分配方法和装置
CN109412940B (zh) 路由器管理方法及路由器管理系统
CN111817953A (zh) 基于虚拟路由器冗余协议vrrp的主设备选举方法及装置
US10841163B2 (en) Autoinitialization of clustered storage
CN111314500A (zh) 一种确定访问地址的方法及装置
CN112787918B (zh) 一种基于服务路由树的数据中心寻址与主备切换方法
CN110572290B (zh) 主设备确定方法、装置、电子设备、存储介质及网络系统
CN110502460B (zh) 数据处理的方法和节点
CN113301086A (zh) Dns数据管理系统和管理方法
CN108540324B (zh) 登录游戏系统的方法、装置和系统
CN109756543B (zh) 程序关联关系的解耦系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant