一种基于Raft协议的分布式存储系统中日志项的分发方法技术方案

技术编号:38505974 阅读:6 留言:0更新日期:2023-08-19 16:53
本发明专利技术涉及分布式存储领域,其公开了一种基于Raft协议的分布式存储系统中日志项的分发方法,解决现有基于Raft协议的日志项分发方案在集群中节点数量变多时领导者节点需要更多的时间来将日志项复制到集群中的跟随者节点,导致的集群对外界请求响应能力降低带来的性能下降的问题。本发明专利技术在每一轮日志分发前,领导者节点根据所有跟随者节点中存在的最大日志项索引,计算对各跟随者节点在本轮心跳中进行日志复制的优先级,进而确定各跟随者节点在本轮心跳周期中的日志项分发数量。在领导者每一次心跳进行日志分发过程中,委托日志同步程度较高的跟随者节点对日志同步程度较低的节点进行一次指定区间日志的复制。本发明专利技术适用于基于Raft协议的分布式存储系统。于基于Raft协议的分布式存储系统。于基于Raft协议的分布式存储系统。

【技术实现步骤摘要】
一种基于Raft协议的分布式存储系统中日志项的分发方法


[0001]本专利技术涉及分布式存储领域,具体涉及一种基于Raft协议的分布式存储系统中日志项的分发方法。

技术介绍

[0002]随着电子计算机硬件设备的不断升级,以大数据、云计算以及物联网等为代表的互联网技术得到了快速发展,全球数据量迎来了指数式爆炸增长。传统的单机存储或集中式存储系统通过纵向升级的方式提高自己的存储容量以及存取速度。纵向升级在容量上可以体现为通过增加存储设备或采用磁盘阵列的方式来提升容量,在存取速度上表现为将速度较慢的机械硬盘更换为存取速度更快的固态硬盘等,但是纵向升级总会在某个时期迎来瓶颈,长期得不到进一步的发展。因此,面对全球呈指数式增长的数据量,传统的单机存储或集中式存储在存储性能和存储容量迎来了瓶颈,难以满足在数据快速增长背景下应用对数据存储的需求。
[0003]分布式存储技术在这个背景下应运而生,相比于集中式存储,分布式存储可以通过水平扩展的方式增加系统的容量,达到存储海量数据的目的,同时也可以在用户对系统进行读写请求时将压力分散到系统中不同的节点中,提高分布式存储系统整体的性能,实现系统的负载均衡。分布式存储系统还可以通过将数据备份到不同节点上来实现对数据的异地容灾备份,预防单节点故障带来的数据丢失等问题,提高了数据的安全性、系统的可靠性以及可用性。分布式存储系统在带来上述优于传统集中式存储的优点的同时,也会存在其自身的一些缺陷,比如在实现异地容灾时将数据的多个副本保存在了不同节点上,如何保证这些副本的数据一致性是分布式存储系统的一个关键问题。
[0004]Paxos和Raft是在分布式领域解决数据一致性问题应用最广泛的两个算法。Raft在增强可理解性的同时,在性能、可靠性、可用性等方面也不输于Paxos。Raft是一种基于日志复制实现数据一致性的算法,算法中节点角色分为领导者、跟随者和候选者;具体说明如下:
[0005]领导者:数据一切以领导者为准,它也是与客户端交互的唯一角色,处理请求,管理日志的复制,同时还不断地发送心跳信息给跟随者,不断刷新跟随者节点的超时时间,以防跟随者发起新的选举。
[0006]跟随者:在不发生选举时,仅默默地处理来自领导者发送的消息,充当数据冗余的作用,当领导者心跳超时,跟随者会在经过随机超时时长后成为候选者。
[0007]候选者:成为候选者之后,就会向其它节点发送请求投票消息,以获取其它节点的投票,如果获得了半数以上选票,则当选领导者。
[0008]在Raft协议中,当一个日志项被领导者复制到系统中的一半以上节点时领导者就可以对该日志项进行提交并执行其中包含的指令。由于Raft强领导的特性,在分布式存储系统中节点数量增多时会为领导者节点带来巨大的日志分发开销,领导者节点需要更多的时间来将日志项分发到集群中的其它节点来对日志项进行提交,导致集群对外界请求响应
能力降低并带来性能下降的问题,从而限制分布式存储系统的水平扩展。

技术实现思路

[0009]本专利技术所要解决的技术问题是:提出一种基于Raft协议的分布式存储系统中日志项的分发方法,解决现有基于Raft协议的日志项分发方案在集群中节点数量变多时领导者节点需要更多的时间来将日志项复制到集群中的跟随者节点,导致的集群对外界请求响应能力降低带来的性能下降的问题。
[0010]本专利技术解决上述技术问题采用的技术方案是:
[0011]一种基于Raft协议的分布式存储系统中日志项的分发方法,用于实现基于Raft协议的分布式存储系统中的领导者节点向跟随者节点分发日志项,该方法包括以下步骤:
[0012]S1、领导者节点向系统集群中所有跟随者节点发送仅携带心跳信息的附加日志请求,以重置跟随者节点的选举超时计时器;
[0013]S2、领导者节点根据所有跟随者节点中存在的最大日志项索引,对所有跟随者节点进行排序,获得排序序列;
[0014]S3、领导者节点根据所述排序序列,为所有跟随者节点指定在本轮心跳函数中进行日志复制的优先级,获得优先级队列;
[0015]S4、领导者节点根据优先级队列中的各跟随者节点的优先级,计算各跟随者节点在本轮心跳周期中的日志项分发数量;
[0016]S5、领导者根据计算获得的各跟随者节点在本轮心跳周期中的日志项分发数量,发送携带相应数量的日志项的附加日志请求给对应跟随者节点。
[0017]进一步的,步骤S2中,所述对所有跟随者节点进行排序,包括:
[0018]对所有跟随者节点,按照节点的最大日志项索引值的大小,进行升序排序,最大日志项索引值越大,则与领导者节点的日志同步程度越高,最大日志项索引值越小,则与领导者节点的日志同步程度越低。
[0019]进一步的,步骤S3中,所述领导者节点根据所述排序序列,为所有跟随者节点指定在本轮心跳函数中进行日志复制的优先级,获得优先级队列,包括:
[0020]首先,指定排序序列中第n个跟随者节点为最高优先级;其中,N为排序序列长度,即序列中跟随者节点的个数,floor()为向下取整函数;
[0021]然后,指定从该第n个跟随者节点开始到最大日志项索引值最高的跟随者节点的优先级依次递减;
[0022]最后,指定从排序序列中与该第n个跟随者节点相邻且最大日志项索引值较低的跟随者节点到排序序列中最大日志项索引值最低的跟随者节点的优先级依次递减;
[0023]从而获得优先级从高到低的优先级队列。
[0024]进一步的,步骤S4中,所述领导者节点根据优先级队列中的各跟随者节点的优先级,计算各跟随者节点在本轮心跳周期中的日志项分发数量,包括:
[0025]S41、初始化领导者节点在本轮心跳周期剩余可进行分配的日志项数量为load,load=loadNum,loadNum为领导者节点在一轮心跳函数中可以分配给所有跟随者节点的日志项的数量;
[0026]S42、从所述优先级队列中依次取出跟随者节点进行日志项分配:
[0027]假设当前进行日志项分配的跟随者当前的索引值为index,若load≥(leaderIndex

index),则为该跟随者节点在本轮心跳中分配(leaderIndex

index)个日志项,然后更新load=load

(leaderIndex

index);leaderIndex为领导者节点当前的日志项最大索引值;
[0028]若load<(leaderIndex

index),则为该跟随者节点在本轮心跳中分配load个日志项,然后更新load=0,领导者节点结束日志项分配;
[0029]S43、判断是否满足:load>0且优先级队列不为空,若是,则返回步骤S42,否则,领导者节点结束日志项分配,进入步骤S5。
[0030]进一步的,该方法还包括步骤:
[0031]S6、本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Raft协议的分布式存储系统中日志项的分发方法,用于实现基于Raft协议的分布式存储系统中的领导者节点向跟随者节点分发日志项,该方法包括以下步骤:S1、领导者节点向系统集群中所有跟随者节点发送仅携带心跳信息的附加日志请求,以重置跟随者节点的选举超时计时器;S2、领导者节点根据所有跟随者节点中存在的最大日志项索引,对所有跟随者节点进行排序,获得排序序列;S3、领导者节点根据所述排序序列,为所有跟随者节点指定在本轮心跳函数中进行日志复制的优先级,获得优先级队列;S4、领导者节点根据优先级队列中的各跟随者节点的优先级,计算各跟随者节点在本轮心跳周期中的日志项分发数量;S5、领导者根据计算获得的各跟随者节点在本轮心跳周期中的日志项分发数量,发送携带相应数量的日志项的附加日志请求给对应跟随者节点。2.如权利要求1所述的一种基于Raft协议的分布式存储系统中日志项的分发方法,其特征在于,步骤S2中,所述对所有跟随者节点进行排序,包括:对所有跟随者节点,按照节点的最大日志项索引值的大小,进行升序排序,最大日志项索引值越大,则与领导者节点的日志同步程度越高,最大日志项索引值越小,则与领导者节点的日志同步程度越低。3.如权利要求1所述的一种基于Raft协议的分布式存储系统中日志项的分发方法,其特征在于,步骤S3中,所述领导者节点根据所述排序序列,为所有跟随者节点指定在本轮心跳函数中进行日志复制的优先级,获得优先级队列,包括:首先,指定排序序列中第n个跟随者节点为最高优先级;其中,为排序序列长度,即序列中跟随者节点的个数,floor()为向下取整函数;然后,指定从该第n个跟随者节点开始到最大日志项索引值最高的跟随者节点的优先级依次递减;最后,指定从排序序列中与该第n个跟随者节点相邻且最大日志项索引值较低的跟随者节点到排序序列中最大日志项索引值最低的跟随者节点的优先级依次递减;从而获得优先级从高到低的优先级队列。4.如权利要求3所述的一种基于Raft协议的分布式存储系统中日志项的分发方法,其特征在于,步骤S4中,所述领导者节点根据优先级队列中的各跟随者节点的优先级,计算各跟随者节点在本轮心跳周期中的日志项分发数量,包括:S41、初始化领导者节点在本轮心跳周期剩余可进行分配的日志项数量为load,load=loadNum,loadNum为领导者节点在一轮心跳函数中可以分配给所有跟随者节点的日志项的数量;S42、从所述优先级队列中依次取出跟随者节点进行日志项分配:假设当前进行日志项分配的跟随者当前的索引值为index,若load≥(leaderIndex

index),则为该跟随者节点在本轮心跳中分配(leaderIndex

index)个日志项,然后更新load=load

(leaderIndex

index);leaderIndex为领导者节点当前的日志项最大索引值;若load<(leaderIndex

index),则为该跟随者节点在本轮心跳中分配load个日志项,
然后更新load=0,领导者节点结束日志项分配;S43、判断是否满足:load>0且优先级队列不为空,若是,则返回步骤S42,否则,领导者节点结束日志项分配,进入步骤S5。5.如权利要求2所述的一种基于Raft协议的分布式存储系统中日志项的分发方法,其特征在于,该方法还包括步骤:S6、对步骤S2中获得的排序序列划分为节点数量相同的委托者分组和接收者分组;其中,委托者分组中的节点与领导者节点的同步程度较高,接收者分组中的节点与领导者节点的同步程序较低;S7、领导者节点委托所述委托者分组中的节点对所述接收者分组中处于同一对应位置的节点进行日志项复制。6.如权利要求5所述的一种基于Raft协议的分布式存储系统中日志项的分发方法,其特征在于,步骤S6中,所述对步骤S2中获得的排序序列划分为节点数量相同的委托者分组和接收者分组,包括:若排序序列中的节点数量为偶数,则直接将排序序列中排序在前一半的跟随者节点划分至接收者分组,将排序序列中排序在后一半的跟随者节点划分至委托者分组;若排序序列中的节点数量为奇数,则舍弃排序序列中最中间的节点后,再将排序在前一半的跟随者节点划分至接收者分组,将排序在后一半的跟随者节点划分至委托者分组。7.如权利要求6所述的一种基于Raft协议的分布式存储系统中日志项的分发方法,其特征在于,步骤S7中,所述领导者节点委托所述委托者分组中的节点对所述接收者分组中处于同一对应位置的节点进行日志项复制,包括:领导者节点按序从委托者分组中取出一个委托者节点,并从接收者分组中相应位置取出一个接收者节点,若该委托者节点中委托者日志项索引index
consignor
大于接收者节点中接收者日志项索引index
receiver
,则委托所述委托者节点对所述接收者节点进行日志项复制。8.如权利要求7所述的一种基于Raft协议的分布式存储系统中日志项的分发方法,其特征在于,委托所述委托者节点对所述接收者节点进行日志项复制,具体包括:领导者节点为委托者分组和接收者分组中的每一个跟随者节点设定一个委托复制窗口,每个跟随者节点的委托复制窗口中保存了领导者节点在之前的心跳周期中向其它跟随者委托复制日志项给该跟随者节点的记录;在领导者节点对委托者节点进行委托复制时,根据接收者的委托复制窗口中的记录以及委托者节点的...

【专利技术属性】
技术研发人员:闫科龚敬惠孛
申请(专利权)人:成都开源众智信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1