CN112799867B - 一种基于分布式存储系统的选举方法及分布式存储系统 - Google Patents

一种基于分布式存储系统的选举方法及分布式存储系统 Download PDF

Info

Publication number
CN112799867B
CN112799867B CN202110149588.7A CN202110149588A CN112799867B CN 112799867 B CN112799867 B CN 112799867B CN 202110149588 A CN202110149588 A CN 202110149588A CN 112799867 B CN112799867 B CN 112799867B
Authority
CN
China
Prior art keywords
election
monitoring node
monitoring
request
state
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.)
Active
Application number
CN202110149588.7A
Other languages
English (en)
Other versions
CN112799867A (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.)
Baike Data Technology Shenzhen Co ltd
Original Assignee
Baike Data Technology Shenzhen 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 Baike Data Technology Shenzhen Co ltd filed Critical Baike Data Technology Shenzhen Co ltd
Priority to CN202110149588.7A priority Critical patent/CN112799867B/zh
Publication of CN112799867A publication Critical patent/CN112799867A/zh
Application granted granted Critical
Publication of CN112799867B publication Critical patent/CN112799867B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种基于分布式存储系统的选举方法及分布式存储系统,所述方法包括:当第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向各第二监视节点发送选举请求;第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量;当所述同意投票数量大于预设数量时,所述第一监视节点将其自身配置的选举状态修改为leader选举状态。本申请为各监视节点配置选举周期,并使用连续递增的选举周期编号进行识别以起到了逻辑时钟的作用,明确了各监视节点的最新选举状态信息,这样在保证分布式存储系统稳定性的前提下,简化了leader监视节点的选举流程。

Description

一种基于分布式存储系统的选举方法及分布式存储系统
技术领域
本申请涉及分布式数据存储技术领域,特别涉及一种基于分布式存储系统的选举方法及分布式存储系统。
背景技术
分布式存储系统通过在部分节点运行称为Monitor的组件,用于管理和维护集群信息,简称为监视节点mon,并且分布式存储系统普遍会配置多个监视节点以避免单点故障和平衡性能。然而,为了保证分布式存储系统的正常运行,所有监视节点之间需要保证数据的一致性,从而需要选出一个监视节点作为leader节点,通过leader节点负责同步各监视节点之间的数据。目前分布式存储系统(例如,ceph(赛弗)集群等)普遍采用类似paxos的算法进行监视节点选举,然而类似paxos的算法比较复杂,当出现监视节点选举故障时,无法快速分析和解决故障。
发明内容
本申请要解决的技术问题在于,针对现有技术的不足,提供一种基于分布式存储系统的选举方法及分布式存储系统。
为了解决上述技术问题,本申请实施例第一方面提供了一种基于分布式存储系统的选举方法,所述分布式存储系统包括若干监视节点,若干监视节点中每个监视节点均配置有选举周期以及选举周期编号;所述方法包括:
当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除其自身外的各第二监视节点发送选举请求,其中,所述目标选举请求为处于leader选举状态的监视节点发送的,第一监视节点处于candidate选举状态;
第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量;
当所述同意投票数量大于预设数量时,所述第一监视节点将其自身配置的选举状态修改为leader选举状态。
所述基于分布式存储系统的选举方法,其中,所述若干监视节点中的每个监视节点均配置有选举状态,每个监视节点配置的选举状态均为leader选举状态、candidate选举状态或者follow选举状态中一种,并且若干监视节点中的每个监视节点在启动时均配置follow选举状态。
所述基于分布式存储系统的选举方法,其中,对于若干监视节点中的每个监视节点,该监视节点配置的选举周期的周期时长为在预设时间范围内随机选取得到的。
所述基于分布式存储系统的选举方法,其中,所述第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量具体包括:
第一监视节点接收各第二监视节点发送的投票信息;
当投票信息携带同意时,第一监视节点将其自身存储的投票数量增加一以得到同意投票数量。
所述基于分布式存储系统的选举方法,其中,所述方法还包括:
当第一监视节点在其自身配置的第一选举周期内接收到目标选举请求时,将自身配置的第一选举周期编号与目标投票请求对应的监视节点配置的目标选举周期编号进行比较;
若第一选举周期编号大于或者等于目标选举周期编号,第一监视节点将自身配置的选举状态设置为candidate选举状态;
若第一选举周期编号小于目标选举周期编号,第一监视节点将自身配置的选举状态修改为follow选举状态。
第一监视节点将其自身配置的第一选举周期编号重置为0,并第一监视节点将自身配置的选举状态修改为follow选举状态。
所述基于分布式存储系统的选举方法,其中,所述方法还包括:
当第一监视节点在其自身配置的第一选举周期内接收到参考选举请求时,第一监视节点获取所述参考选举请求携带的第二选举周期编号,其中,所述参考选举请求为处于candidate选举状态的监视节点发送的;
若第一选举周期编号小于第二选举周期编号,第一监视节点基于所述参考选举请求形成携带同意的投票信息,并将自身配置的选举状态修改为follow选举状态;
若第一选举周期编号大于或者等于第二选举周期编号,第一监视节点基于所述参考选举请求形成携带拒绝的投票信息,并保持其自身配置的选举状态不变。
所述基于分布式存储系统的选举方法,其中,所述方法还包括:
当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且接收到参考选举请求时,第三监视节点获取所述参考选举请求携带的第二选举周期编号,其中,所述参考选举请求为处于candidate选举状态的监视节点发送的,所述第三监视节点处于follow选举状态;
当第三监视节点自身配置的第三选举周期编号小于或者等于第二选举周期编号,并且第三监视节点在其自身配置的第二选举周期内未发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带同意的投票信息,并采用第二选举周期编号替换其自身配置的第三选举周期编号;
当第三监视节点自身配置的第三选举周期编号大于第二选举周期编号,或者第三监视节点在其自身配置的第二选举周期内发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带拒绝的投票信息。
所述基于分布式存储系统的选举方法,其中,所述方法还包括:
当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且未接收到参考选举请求时,第三监视节点将其自身配置的第三选举周期编号增加一,并将其自身配置的选举状态修改为candidate选举状态。
所述基于分布式存储系统的选举方法,其中,所述方法还包括:
当所述同意投票数量小于或者等于预设数量时,所述第一监视节点将其自身配置的第一选举周期编号增加一,重置其自身配置的第一选举周期以及同意投票数量,并继续执行当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求的操作,直至接收到目标选举请求或者同意投票数量大于预设数量。
本申请实施例第二方面提供了一种分布式存储系统,所述分布式存储系统包括若干所述分布式存储系统包括若干监视节点,若干监视节点中每个监视节点均配置有选举周期以及选举周期编号;并且所述分布式存储系统配置通过如上所述的基于分布式存储系统的选举方法进行领导节点选举。
有益效果:与现有技术相比,本申请提供了一种基于分布式存储系统的选举方法及分布式存储系统,所述方法包括:当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求;第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量;当所述同意投票数量大于预设数量时,所述第一监视节点将其自身配置的选举状态修改为leader选举状态。本申请为每个监视节点配置选举周期,并使用连续递增的选举周期编号进行识别以起到了逻辑时钟的作用,明确了各监视节点的最新选举状态信息,这样在保证分布式存储系统稳定性的前提下,简化了leader监视节点的选举流程,从而当选举出现故障时,可以快速定位并解决故障。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的基于分布式存储系统的选举方法的流程图。
图2为分布式存储系统的一个示例图。
图3为分布式存储系统中的监视节点1进入candidate选举状态的流程示例图。
图4为分布式存储系统中的监视节点2和监视节点3分别向监视节点1发送投票信息的流程示例图。
图5为分布式存储系统中的监视节点1进入leader选举状态的流程示例图。
图6为分布式存储系统中的监视节点1发生故障,监视节点2发起投票请求的流程示例图。
图7为分布式存储系统中的监视节点3分别向监视节点2发送投票信息的流程示例图。
图8为分布式存储系统的监视节点2进入leader选举状态的流程示例图。
具体实施方式
本申请提供一种基于分布式存储系统的选举方法及分布式存储系统,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。此外应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
发明人经过研究发现,分布式存储系统通过在部分节点运行称为Monitor的组件,用于管理和维护集群信息,简称为监视节点mon,并且分布式存储系统普遍会配置多个监视节点以避免单点故障和平衡性能。然而,为了保证分布式存储系统的正常运行,所有监视节点之间需要保证数据的一致性,从而需要选出一个监视节点作为leader节点,通过leader节点负责同步各监视节点之间的数据。目前分布式存储系统(例如,ceph(赛弗)集群等)普遍采用类似paxos的算法进行监视节点选举,然而类似paxos的算法比较复杂,当出现监视节点选举故障时,无法快速分析和解决故障。
为了解决上述问题,在本申请实施例中,一种基于分布式存储系统的选举方法及分布式存储系统,所述方法包括:当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求;第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量;当所述同意投票数量大于预设数量时,所述第一监视节点将其自身配置的选举状态修改为leader选举状态。本申请为每个监视节点配置选举周期,并使用连续递增的选举周期编号进行识别以起到了逻辑时钟的作用,明确了各监视节点的最新选举状态信息,这样在保证分布式存储系统稳定性的前提下,简化了leader监视节点的选举流程,从而当选举出现故障时,可以快速定位并解决故障。
下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
本实施提供了一种基于分布式存储系统的选举方法,所述选举方法应用于分布式存储系统,该分布式存储系统包括若干监视节点,每个监视节点均用于管理和维护集群信息,若干监视节点中的各监视节点之间可以相同通讯,并且若干监视节点中的各监视节点均配置有选举周期、选举周期编号以及选举状态,并且每个监视节点在向若干监视节点中的各监视节点发送选举请求时,均携带有该监视节点自身配置的选举状态以及选举周期编号。
本实施例提供的基于分布式存储系统的选举方法,如图1所示,所述基于分布式存储系统的选举方法具体包括:
S10、当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除其自身外的各第二监视节点发送选举请求。
具体地,若干监视节点中的每个监视节点均配置有选举状态,并且各每个监视节点配置的选举状态均为leader选举状态、candidate选举状态或者follow选举状态中一种,若干监视节点中的每个监视节点在启动时均默认配置follow选举状态,并且通过monmap获取分布式存储系统中所有监视节点的ip地址,以便于基于ip地址向各监视节点发送选举请求。此外,选举状态为follow选举状态的监视节点仅用于接收其它监视节点发送的选取请求;选举状态为candidate选举状态的监视节点可以向若干监视节点中的监视节点发送选举请求,以及接收其它监视节点发送的选取请求;选举状态为leader选举状态的监视节点会每间隔预设时间向若干监视节点中的监视节点发送选举请求,直至选举状态为leader选举状态的监视节点故障。此外,每个选举状态处于follower选举状态或candidate选举状态的监视节点,均以其自身配置的投票周期为超时时间,若在投票周期内收到来自选举状态为leader选举状态的监视节点发来的投票请求时,重置其自身配置的投票周期,若在投票周期内(即达到超时时间)没有收到选举状态为leader选举状态的监视节点发来的投票请求,则进入candidate状态,将自身配置的选举周期编号加一且向自己投同意票以使得自身配置的投票数量为1,同时向若干监视节点中除自身外的其他监视节点发送投票请求。
在本实施例中,所述第一监视节点为若干监视节点中的一个监视节点,并且第一监视节点自身配置的选举状态为candidate选举状态,换句话说,第一监视节点为选举状态为candidate选举状态的监视节点。由此,第一监视节点可以向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求,其中,选举请求携带有第一监视节点的选举状态以及第一选举周期编号,第一选举周期编号为不小于0的正整数。
所述目标选举请求为处于leader选举状态的监视节点发送的,第一监视节点处于candidate选举状态,其中,选举状态为leader选举状态的监视节点会每间隔预设时间向若干监视节点中的监视节点发送选举请求,直至选举状态为leader选举状态的监视节点故障。此外,选举状态为leader选举状态的监视节点发送选举请求的间隔时间小于若干监视节点中除该监视节点外的任一监视节点自身配置的选举周期的周期时长。例如,若干监视节点包括监视节点A、监视节点B、监视节点C以及监视节点D,其中,监视节点A自身配置的选举状态为leader选举状态,监视节点B、监视节点C以及监视节点D自身配置的选举状态均不为leader选举状态,那么监视节点A每间隔预设时间向监视节点B、监视节点C以及监视节点D发送选举请求,并且该预设时间小于监视节点B自身配置的选举周期B、监视节点C自身配置的选举周期C以及监视节点D自身配置的选举周期D。这样可以保证若干监视节点中除选举状态为leader选举状态的监视节点外的各监视节点,在各自配置的选举周期内均会接收到选举状态为leader选举状态的监视节点发送的选举请求。
在本实施例的一个实现方式中,若干监视节点中的每个监视节点均配置选举周期以及选举周期编号,其中,选举周期编号用于反映在分布式存储系统中的各监视节点进行交流时判断监视节点自身的选举信息是否过期,选举周期编号为是一个递增的非负整数,其初始为0。选举周期的周期时长均在预设时间范围内随机选取得到的,并且若干监视节点中可以存在部分监视节点配置的选举周期的周期时长不同。在一个具体实现方式中,若干监视节点中的每个监视节点配置的选举周期可以互不相同。此外,在实际工作中,每个监视节点的每个选举周期的时长也可以不同,换句话说,对于每个监视节点,当该监视节点配置的选举周期完成后,会在预设时间范围重新随机选举一个时长作为新的选举周期的周期时长。例如,预设时间范围为300毫秒-500毫秒,若干监视节点包括监视节点A、监视节点B以及监视节点C,监视节点A的选举周期的周期时长、监视节点B的选举周期的周期时长以及监视节点C的选举周期的周期时长均为300毫秒-500毫秒的数值,如,监视节点A的选举周期的周期时长为350毫秒,监视节点B的选举周期的周期时长为360毫秒,监视节点C的选举周期的周期时长为380毫秒;并且当监视节点A的当前选举周期完成后,可以在300毫秒-500毫秒中随机选取一个数值作为下一选举周期的周期时长,如,400毫秒等。
第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求指的是在第一监视节点配置的第一选举周期内,第一监视节点未接收到选举状态处于leader选举状态的监视节点发送的选取目标选举请求。此时,可以认为选举状态处于leader选举状态的监视节点发生故障,由此,第一监视节点向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求。此外,第一监视节点在其自身配置的第一选举周期内也可以接收到目标选举请求,当第一监视节点在其自身配置的第一选举周期内接收到目标选举请求时,为了满足最大选举周期编号信任规则,第一监视节点在接收到目标投票请求时,会将自身配置的第一选举周期编号与目标投票请求对应的监视节点配置的目标选举周期编号进行比较;若第一选举周期编号大于或者等于目标选举周期编号,第一监视节点将自身配置的选举状态设置为candidate选举状态,若第一选举周期编号小于目标选举周期编号,第一监视节点将自身配置的选举状态修改为follow选举状态,同时还可以将自身配置的第一选举周期编号重置为0。
S20、第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量。
具体地,所述投票信息为各第二监视节点基于第一监视节点发送的选举请求所形成,所述投票信息携带有第二监视节点对第一监视节点发送的选取请求的投票结果,其中,投票结果包括同意或拒绝。可以累积的是,第一监视节点将选举请求发送给各第二监视节点后,会节点到各第二监视节点发送的携带同意或者拒绝的投票信息,从而第一监视节点可以根据接收到各第二监视节点发送的投票信息确定同意投票数量,其中,同意投票数量用于反映第一监视节点接到的投票结果为同意的监视节点的数量。此外,值得说明的是,当第一监视节点向各第二监视节点发送选举请求时,第一监视节点会为自己投同意票,从而当第一监视节点向各第二监视节点发送选举请求时,第一监视节点对应的投票数量为1。
在本实施例的一个实现方式中,所述第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量具体包括:
第一监视节点接收各第二监视节点发送的投票信息;
当投票信息携带同意时,第一监视节点将其自身存储的投票数量增加一以得到同意投票数量。
具体地,所述同意投票数量为在第一监视节点接收到所有第二监视节点发送的投票信息后,确定得到的投票结果为同意的投票数量,其中,第一监视节点将其自身存储的投票数量的初始值为1,并且当第一监视节点接收到一个携带同意的投票信息时,第一监视节点将其自身存储的投票数量增加一,直至第一监视节点接收到所有第二监视节点的投票信息后,将增加得到的投票数量作为同意投票数量。
S30、当所述同意投票数量大于预设数量时,所述第一监视节点将其自身配置的选举状态修改为leader选举状态。
具体地,所述预设数量可以为预先设置的,用于衡量第一监视节点是否可以成为leader监视节点的依据,当同意投票数量大于预设数量时,表示第一监视节点可以成为leader监视节点,反之,当同意投票数量小于或者等于预设数量时,表示第一监视节点不可以成为leader监视节点。在本实施例的一个实现方式中,所述预设数量可以为若干监视节点的节点数量的一半,这样当超过半数的监视节点同意第一监视节点的投票请求时,第一监视节点可以作为leader监视节点,从而第一监视节点可以将其自身配置选举状态修改为leader选举状态。
在本实施例的一个实现方式中,所述方法还包括:
当所述同意投票数量小于或者等于预设数量时,所述第一监视节点将其自身配置的第一选举周期编号增加一,重置其自身配置的第一选举周期以及同意投票数量,并继续执行当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求的操作,直至接收到目标选举请求或者同意投票数量大于预设数量。
具体地,所述同意投票数量小于或者等于预设数量说明第一监视节点不能成为leader监视节点,此时,第一监视节点会将其自身配置选举周期编号增加1,同时重新在预设时间范围内随机选取一个数值作为其自身配置的选举周期以重置选举周期计时器,同时,将其自身配置的投票数量归为0,并继续执行当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求的操作,直至接收到目标选举请求或者同意投票数量大于预设数量。可以理解的是,第一监视节点在选举周期内为成为leader监视节点且没有解释到leader监视节点发送的目标选举请求,会重新执行向各第二监视节点发送选举请求的操作,这样可以保证会选举到leader监视节点,同时通过选举周期作为计时器,来控制第一监视节点循环发送选举请求,可以使得监视节点根据该计时器来更新自身的状态信息,以使得若干监视节点可以确定各监视节点的最新状态信息,这样在每个监视节点均可以获取到选举周期编号值最大的监视节点,并且信任选举周期编号值最大的监视节点,从而可以避免了冲突的发生。同时,在本实施例中,每个监视节点对应的选举周期在预设时间范围内随机选取的,从而监视节点对应的选举周期可以不相同,而每个监视节点的选举周期编号是根据其选举周期更新次数确定,从而各监视节点各自对应的选举周期编号可以不同,以使得若干监视节点中可以存在选举周期编号值最大的监视节点。
在本实施例的一个实现方式中,由于每个处于candidate选举状态的第一监视节点均会向其它监视节点发送投票请求,从而每个处于candidate选举状态的第一监视节点也会接收到投票请求。相应的,所述方法还可以包括:
当第一监视节点在其自身配置的第一选举周期内接收到参考选举请求时,第一监视节点获取所述参考选举请求携带的第二选举周期编号;
若第一选举周期编号小于第二选举周期编号,第一监视节点基于所述参考选举请求形成携带同意的投票信息,并将自身配置的选举状态修改为follow选举状态;
若第一选举周期编号大于或者等于第二选举周期编号,第一监视节点基于所述参考选举请求形成携带拒绝的投票信息,并保持其自身配置的选举状态不变。
具体地,所述参考选举请求为处于candidate选举状态的监视节点发送的,并且参考选举请求携带有发送该参考选举的监视节点的第二选举周期编号以及选举状态,以使得第一监视节点可以基于选举请求写的选举状态确定该选举请求是否为参考选举请求。在获取到参考选举请求后,第一监视节点将其自身配置的第一选举周期编号与参考选举的监视节点的第二选举周期编号进行比较,并基于最大选举周期编号信任原则来执行相应操作。在本实施例中,基于最大选举周期编号信任原则来执行相应操作具体为:当第一选举周期编号大于或者等于第二选举周期编号时,拒绝所述参考选举请求;当第一选举周期编号小于第二选举周期编号时,同意所述参考选举请求,其中,当拒绝所述参考选举请求时,第一监视节点基于所述参考选举请求形成携带拒绝的投票信息,并保持其自身配置的选举状态不变;当同意所述参考选举请求时,第一监视节点基于所述参考选举请求形成携带同意的投票信息,并将自身配置的选举状态修改为follow选举状态。
在本实施例的一个实现方式中,若干监视节点可以包括处于follow选举状态的监视节点,处于follow选举状态的监视节点会接收其他监视节点发送的投票请求,然而处于follow选举状态的监视节点在其自身配置的选举周期内也可以未接收到选举请求,那么处于follow选举状态的监视节点需要修改自身的选举状态,以使得若干监视节点之间会发起投票请求,同时处于follow选举状态的监视节点也会验证接收到的投票请求对应的监视节点的选取周期编号,以保证处于follow选举状态的监视节点所相信的监视节点相对于自身而言是最大选取周期编号对应的监视节点。相应的,所述方法还包括:
当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且接收到参考选举请求时,第三监视节点获取所述参考选举请求携带的第二选举周期编号;
当第三监视节点自身配置的第三选举周期编号小于或者等于第二选举周期编号,并且第三监视节点在其自身配置的第二选举周期内未发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带同意的投票信息,并采用第三选举周期编号替换其自身配置的第二选举周期;
当第三监视节点自身配置的第三选举周期编号大于第三选举周期编号,或者第三监视节点在其自身配置的第二选举周期内发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带拒绝的投票信息;
当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且未接收到参考选举请求时,第三监视节点将其自身配置的第三选举周期编号增加一,并将其自身配置的选举状态修改为candidate选举状态。
具体地,每个处于follower选举状态的监视节点均会收到来自其他监视节点的投票请求,其中,投票请求可以是处于leader选举状态的监视节点发送的,也可以是处于candidate选举状态的监视节点发送的。当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且接收到参考选举请求时,说明第三监视节点在其自身配置的选举周期内未接收到处于leader选举状态的监视节点发送的投票请求,接收到处于candidate选举状态的监视节点发送的投票请求,其中,第三监视节点为处于follower选举状态的监视节点。此时,第三监视节点会获取所述参考选举请求携带的第三选举周期编号,并将自身配置的第三选举周期与第二选举周期编号进行比较,当第三监视节点自身配置的第三选举周期编号小于或者等于第二选举周期编号,并且第三监视节点在其自身配置的第二选举周期内未发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带同意的投票信息,并采用第二选举周期编号替换其自身配置的第三选举周期编号;当第三监视节点自身配置的第三选举周期编号大于第二选举周期编号,或者第三监视节点在其自身配置的第二选举周期内发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带拒绝的投票信息。
当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且未接收到参考选举请求时,说明第三监视节点在其自身配置的选举周期内未接收到选举请求,此时,第三监视节点会将其自身的选举状态修改为candidate选举状态(即进入candidate选举状态),将自身配置的第三选举周期编号加一,投自己同意票并向其他监视节点发送投票请求,以使得第三监视节点转换为第一监视节点,并执行向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求的操作。当然,在实际应用中,当第三监视节点接收到处于leader选举状态发送的目标选举请求时,重置其自身配置的第二选举周期并继续保持follower选举状态。
此外,为了进一步说明本实施例提供的基于分布式存储系统的选举方法,下面结合一个具体实现方式进行说明。
如图2所示,假设分布式存储系统包括三个监视节点,分别记为监视节点1、监视节点2以及监视节点3;各监视节点启动时均处于follower状态,监视节点1的选举周期term随机为350ms,监视节点2的选举周期term随机为400ms,监视节点3的选举周期term随机为450ms;监视节点1、监视节点2以及监视节点3均等待处于leader选举状态的监视节点发送的目标投票请求(例如,心跳包等)。
由于此时分布式存储系统中没有处于leader选举状态的监视节点,监视节点1的选举周期小于监视节点2的选举周期以及监视节点3的选举周期,从而如图3所示,监视节点1的选举周期最先超时以使得监视节点1将自身的选举状态修改为candidate选举状态,将自身的选举周期编号(term编号)加一并投自己同意票,并向监视节点2以及监视节点3发送投票请求。
如图4所示,20ms(其为投票请求传输时长)后,监视节点2以及监视节点3均收到来自监视节点1的投票请求,由于监视节点1发来的选举周期编号(term编号)大于监视节点2选举周期编号(term编号)以及监视节点3选举周期编号(term编号),且当前选举周期内监视节点2和监视节点3均为没有给其监视节点投过同意票,从而于监视节点2和监视节点3均向监视节点1号回复同意投票的投票信息,将各自选举周期编号与监视节点1的选举周期编号同步,并重置各各自的选举周期。
如图5所示,20ms后监视节点1收到了来自监视节点2和监视节点3同意投票的投票信息,投票数量变化为3,从而目标投票数量为3>3/2,从而监视节点1成为了leader监视节点,开始监视节点2和监视节点3号定期发送心跳包,选举完成。
如图6所示,假设一段时间后监视节点1号出现故障,无法继续发送心跳包,那么监视节点2会首先达到选举周期,将其自身的选举周期编号加一,进入candidate状态,向监视节点1和监视节点3发起投票请求。如图7所示,监视节点3在20ms后收到了监视节点2的投票请求,并回复同意,1由于已经崩溃,无法回复。此时,如图8所示,监视节点2在监视节点3回复的同意后已经拥有2票,大于集群成员数3的一半,于是成为新的leader监视节点。
综上所述,本实施例提供了一种基于分布式存储系统的选举方法,所述方法包括:当第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向各第二监视节点发送选举请求;第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量;当所述同意投票数量大于预设数量时,所述第一监视节点将其自身配置的选举状态修改为leader选举状态。本申请为各监视节点配置选举周期,并使用连续递增的选举周期编号进行识别以起到了逻辑时钟的作用,明确了各监视节点的最新选举状态信息,这样在保证分布式存储系统稳定性的前提下,简化了leader监视节点的选举流程,从而当选举出现故障时,可以快速定位并解决故障。
基于上述基于分布式存储系统的选举方法,本实施例提供了一种分布式存储系统,所述分布式存储系统包括若干所述分布式存储系统包括若干监视节点,若干监视节点中每个监视节点均配置有选举周期以及选举周期编号;并且所述分布式存储系统配置通过如上所述的基于分布式存储系统的选举方法进行领导节点选举。
此外,上述分布式存储系统的具体选举过程在上述方法中已经详细说明,在这里就不再一一陈述。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (8)

1.一种基于分布式存储系统的选举方法,其特征在于,所述分布式存储系统包括若干监视节点,若干监视节点中每个监视节点均配置有选举周期以及选举周期编号;所述方法包括:
当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除其自身外的各第二监视节点发送选举请求,其中,所述目标选举请求为处于leader选举状态的监视节点发送的,第一监视节点处于candidate选举状态;
第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量;
当所述同意投票数量大于预设数量时,所述第一监视节点将其自身配置的选举状态修改为leader选举状态;
若干监视节点包括处于follow选举状态的监视节点,处于follow选举状态的监视节点接收其他监视节点发送的投票请求;
当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且接收到参考选举请求时,第三监视节点获取所述参考选举请求携带的第二选举周期编号,其中,所述参考选举请求为处于candidate选举状态的监视节点发送的,所述第三监视节点处于follow选举状态;
当第三监视节点自身配置的第三选举周期编号小于或者等于第二选举周期编号,并且第三监视节点在其自身配置的第二选举周期内未发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带同意的投票信息,并采用第二选举周期编号替换其自身配置的第三选举周期编号;
当第三监视节点自身配置的第三选举周期编号大于第二选举周期编号,或者第三监视节点在其自身配置的第二选举周期内发送过携带同意的投票信息时,第三监视节点基于所述参考选举请求形成携带拒绝的投票信息;
当若干监视节点中的第三监视节点在其自身配置的第二选举周期内未接收到目标选举请求且未接收到参考选举请求时,第三监视节点将其自身配置的第三选举周期编号增加一;第三监视节点投自己同意票并向其他监视节点发送投票请求,并执行向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求的操作,并将其自身配置的选举状态修改为candidate选举状态。
2.根据权利要求1所述基于分布式存储系统的选举方法,其特征在于,所述若干监视节点中的每个监视节点均配置有选举状态,每个监视节点配置的选举状态均为leader选举状态、candidate选举状态或者follow选举状态中一种,并且若干监视节点中的每个监视节点在启动时均配置follow选举状态。
3.根据权利要求1所述基于分布式存储系统的选举方法,其特征在于,对于若干监视节点中的每个监视节点,该监视节点配置的选举周期的周期时长为在预设时间范围内随机选取得到的。
4.根据权利要求1所述基于分布式存储系统的选举方法,其特征在于,所述第一监视节点接收各第二监视节点发送的投票信息,并基于接收到的投票信息确定第一监视节点对应的同意投票数量具体包括:
第一监视节点接收各第二监视节点发送的投票信息;
当投票信息携带同意时,第一监视节点将其自身存储的投票数量增加一以得到同意投票数量。
5.根据权利要求1所述基于分布式存储系统的选举方法,其特征在于,所述方法还包括:
当第一监视节点在其自身配置的第一选举周期内接收到目标选举请求时,将自身配置的第一选举周期编号与目标投票请求对应的监视节点配置的目标选举周期编号进行比较;
若第一选举周期编号大于或者等于目标选举周期编号,第一监视节点将自身配置的选举状态设置为candidate选举状态;
若第一选举周期编号小于目标选举周期编号,第一监视节点将自身配置的选举状态修改为follow选举状态。
6.根据权利要求1所述基于分布式存储系统的选举方法,其特征在于,所述方法还包括:
当第一监视节点在其自身配置的第一选举周期内接收到参考选举请求时,第一监视节点获取所述参考选举请求携带的第二选举周期编号,其中,所述参考选举请求为处于candidate选举状态的监视节点发送的;
若第一选举周期编号小于第二选举周期编号,第一监视节点基于所述参考选举请求形成携带同意的投票信息,并将自身配置的选举状态修改为follow选举状态;
若第一选举周期编号大于或者等于第二选举周期编号,第一监视节点基于所述参考选举请求形成携带拒绝的投票信息,并保持其自身配置的选举状态不变。
7.根据权利要求1所述基于分布式存储系统的选举方法,其特征在于,所述方法还包括:
当所述同意投票数量小于或者等于预设数量时,所述第一监视节点将其自身配置的第一选举周期编号增加一,重置其自身配置的第一选举周期以及同意投票数量,并继续执行当若干监视节点中的第一监视节点在其自身配置的第一选举周期内未接收到目标选举请求时,第一监视节点向若干监视节点中除所述第一监视节点外的各第二监视节点发送选举请求的操作,直至接收到目标选举请求或者同意投票数量大于预设数量。
8.一种分布式存储系统,其特征在于,所述分布式存储系统包括若干监视节点,若干监视节点中每个监视节点均配置有选举周期以及选举周期编号;并且所述分布式存储系统配置通过如权利要求1-7任意一项所述的基于分布式存储系统的选举方法进行领导节点选举。
CN202110149588.7A 2021-02-03 2021-02-03 一种基于分布式存储系统的选举方法及分布式存储系统 Active CN112799867B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110149588.7A CN112799867B (zh) 2021-02-03 2021-02-03 一种基于分布式存储系统的选举方法及分布式存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110149588.7A CN112799867B (zh) 2021-02-03 2021-02-03 一种基于分布式存储系统的选举方法及分布式存储系统

Publications (2)

Publication Number Publication Date
CN112799867A CN112799867A (zh) 2021-05-14
CN112799867B true CN112799867B (zh) 2022-02-18

Family

ID=75814057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110149588.7A Active CN112799867B (zh) 2021-02-03 2021-02-03 一种基于分布式存储系统的选举方法及分布式存储系统

Country Status (1)

Country Link
CN (1) CN112799867B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113470340B (zh) * 2021-06-30 2022-08-02 高新兴科技集团股份有限公司 一种车辆编队方法及系统
CN114448769B (zh) * 2022-04-02 2022-07-01 支付宝(杭州)信息技术有限公司 一种基于共识系统的节点竞选投票方法及装置
CN114866554B (zh) * 2022-05-20 2023-07-07 东风商用车有限公司 一种免选举分布式协议的方法、装置、设备及存储介质
CN115102839B (zh) * 2022-06-17 2024-02-09 济南浪潮数据技术有限公司 一种主从节点选举方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360025A (zh) * 2017-07-07 2017-11-17 郑州云海信息技术有限公司 一种分布式存储系统集群监控方法及设备
CN109698753A (zh) * 2018-12-17 2019-04-30 成都四方伟业软件股份有限公司 基于区块链的上链共识算法匹配方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10341168B2 (en) * 2017-04-18 2019-07-02 Sap Se Topology manager for failure detection in a distributed computing system
CN109426567B (zh) * 2017-08-22 2021-05-04 汇链丰(北京)科技有限公司 一种区块链的节点部署和选举方法
CN109379238B (zh) * 2018-12-14 2022-06-17 郑州云海信息技术有限公司 一种分布式集群的ctdb主节点选举方法、装置及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360025A (zh) * 2017-07-07 2017-11-17 郑州云海信息技术有限公司 一种分布式存储系统集群监控方法及设备
CN109698753A (zh) * 2018-12-17 2019-04-30 成都四方伟业软件股份有限公司 基于区块链的上链共识算法匹配方法及装置

Also Published As

Publication number Publication date
CN112799867A (zh) 2021-05-14

Similar Documents

Publication Publication Date Title
CN112799867B (zh) 一种基于分布式存储系统的选举方法及分布式存储系统
US7039694B2 (en) Cluster membership monitor
CN110933137B (zh) 一种数据同步方法、系统、设备及可读存储介质
CN109173270B (zh) 一种游戏服务系统和实现方法
CN109040184B (zh) 一种主节点的选举方法及服务器
CN114268532B (zh) 一种基于Raft协议的竞选方法、分布式系统及存储介质
CN105554142B (zh) 消息推送的方法、装置及系统
CN115102839B (zh) 一种主从节点选举方法、装置、设备及介质
CN103475742B (zh) 云计算环境中主控节点确定的方法及系统
CN113259188A (zh) 一种构建大规模redis集群的方法
CN112437454A (zh) 数据传输方法及装置、存储介质、电子装置
CN102624634A (zh) 一种在客户端控制网络带宽的方法及装置
CN109560903B (zh) 一种完全容灾的车载指挥通信系统
US6412002B1 (en) Method and apparatus for selecting nodes in configuring massively parallel systems
CN116569523A (zh) 用于以太网网络中传感器和控制设备的动态配置方法
CN112491951B (zh) 对等网络中的请求处理方法、服务器及存储介质
US6745240B1 (en) Method and apparatus for configuring massively parallel systems
CN111083016B (zh) 一种轮询表处理方法及装置、存储介质和设备
US6519697B1 (en) Method and apparatus for coordinating the configuration of massively parallel systems
CN111092956A (zh) 资源同步方法、装置、存储介质及设备
US6418526B1 (en) Method and apparatus for synchronizing nodes in massively parallel systems
CN209134427U (zh) 一种完全容灾的车载指挥通信系统
CN109586978B (zh) 总线拓扑网络自组网方法
CN112954133A (zh) 同步节点时间的方法、装置、电子装置和存储介质
JP3759708B2 (ja) コンピュータネットワークにおけるスタベーションを回避する方法及び装置

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