一种分布式存储利用共享资源完成主备切换的方法与流程
未命名
08-05
阅读:122
评论:0

1.本发明属于分布式存储领域,尤其是涉及一种分布式存储利用共享资源完成主备切换的方法。
背景技术:
2.当前,主流的分布式存储系统往往由客户端、存储节点和管理节点组成,其中管理节点因为不在io关键路径上,其对性能要求没有那么高,所以大多数的分布式存储系统,管理节点往往采用主备而非多活的形式来保证高可用。其中,具体实现上,分布式系统往往采用类似paxos或者raft等一致性协议来实现或者使用事务来实现一致性。这两种方式实现起来往往比较复杂,而在我们的实际的环境当中,往往会已经存在了某些基于raft等协议的一些分布式软件,我们直接基于这些软件来实现高可用时,只需要实现上层调用即可,会大大减少开发的复杂度和工作量。
技术实现要素:
3.有鉴于此,本发明旨在提出一种分布式存储利用共享资源完成主备切换的方法,以解决上述现有技术中存在的问题。
4.为达到上述目的,本发明的技术方案是这样实现的:
5.一种分布式存储利用共享资源完成主备切换的方法,包括以下步骤:
6.s1、将集群主备状态在时间轴上分成三种区间类型,分别是续租期、保护期与选主期;
7.s2、在启动时,将集群置于选主期,集群中的manager节点为备节点;
8.s3、备节点访问用于选主的key,判断是否更新为主节点;
9.s4、集群进入续租期,集群的主节点处理请求;
10.s5、判断主节点在续租期内是否续租成功,是,则继续处理请求,否,则主节点将自己置为备节点,不再处理新的请求,同时清空缓存,暂定异步任务,等待一个保护期的时间后,同其他备节点一样开始定期轮询状态。
11.进一步的,在任一时刻集群中只有一个manager节点允许接收请求。
12.进一步的,在步骤s3中的key为存储集群uuid+election。
13.进一步的,在步骤s3中的备节点访问用于选主的key,判断是否更新为主节点,包括以下内容:
14.对于集群中的每个manager节点,当其刚启动时,首先会将自己设为备节点,整个集群处于选主期,此时备节点会去访问用于选主的key,如果此时这个key里面的id为空,则将自己的id和当前时间作为内容设置进去,第一个设置成功的节点则为主节点,其他节点失败后放弃,并通过后面的定期查询更新主节点信息。
15.进一步的,在步骤s4中的集群进入续租期,集群的主节点处理请求,包括以下内容:
16.集群进入续租期,续租期的时长有集群级的配置文件确定,在续租期间内,主节点对外提供服务,并周期性的更新election键值对的更新时间,备节点不对外提供服务,当收到请求时候返回主节点的信息,以便于客户端去主节点重试;备节点周期性查看主节点更新时间,以便接管主节点。
17.进一步的,在步骤s5中的主节点将自己置为备节点,不再处理新的请求时,已经提交的请求可以继续处理,主节点进保护期,涉及到的元数据更新不再缓存,保护期的时间大于请求处理的超时时间。
18.进一步的,在步骤s5中,当备节点轮询到当前时间与记录时间的间隔大于续租期加保护期的时间时候,则尝试将自己设为主,与刚启动时候一样,第一个设置成功的则为主节点,进入下一个续租期。
19.相对于现有技术,本发明所述的一种分布式存储利用共享资源完成主备切换的方法具有以下优势:
20.本发明所述的一种分布式存储利用共享资源完成主备切换的方法,实现简单,主备切换依赖于底层共享设备里面记录的特定数据条目,只需要做好该数据条目监控即可;当底层共享设备的备节点的损害时,例如硬盘故障,不会触发主备切换,上层进程不感知,无需考虑限流的方案,对业务完全没有影响。
附图说明
21.构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
22.图1为本发明实施例所述的主备切换流程示意图。
具体实施方式
23.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
24.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
25.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
26.下面将参考附图并结合实施例来详细说明本发明。
27.如图1所示,一种分布式存储利用共享资源完成主备切换的方法,此方案主要考虑如下几点因素:
28.1.在任一时刻集群中只有一个manager节点可以接收请求。
29.2.主备模式的设计使得缓存设计在确保一致性的基础上更加高效。
30.3.通过保护期尽可能避免主备访问数据冲突,如无法避免,相关接口应支持幂等性处理。
31.4.任意时刻的主备切换不影响异步任务的执行。
32.在分布式数据库中维护一个用于选举的kv型数据结构,其key为存储集群uuid+election组成,value当中记录两个属性,分别是当前主的id以及选主时候的时间。注意这个这个时间最好使用全局时间或者确保各个节点通过ntp做了时间同步。
33.整个集群主备状态在时间轴上分成三种区间类型,分别是续租期、保护期与选主期。
34.对于集群中的每个manager节点,当其刚启动时,首先会将自己设为备节点,整个集群处于选主期,此时备节点会去访问用于选主的key,如果此时这个key里面的id为空,则将自己的id和当前时间作为内容设置进去,第一个设置成功的节点则为主节点,其他节点失败后放弃,并通过后面的定期查询更新主节点信息。
35.此时集群进入续租期,续租期的时长由集群级的配置文件确定,例如10s。在这个期间内,主节点对外提供服务,并周期性的(例如3s)更新election键值对的更新时间,备节点不对外提供服务,当收到请求时候返回主节点的信息,以便于客户端去主节点重试。同时备节点周期性查看主节点更新时间,以便接管主节点。同时,为提高性能,在这个阶段,主节点维护有状态的缓存信息。
36.如果主节点在续租期内未续租成功,那么续租期结束时,主节点立刻将自己置为备节点,不再处理新的请求,同时清空缓存,暂定异步任务,等待一个保护期的时间后,同其他备节点一样开始定期轮询状态。在这个时期,已经提交的请求可以继续处理,但是涉及到的元数据更新则不再缓存,同时要确保保护期的时间大于请求处理的超时时间,使得中间请求在保护期内被处理干净。对于底层不提供取消接口的数据库,采用其已有的并发控制机制再次确保新老实例之间不会发生冲突,例如可以采用事务接口+接口幂等性处理的方式来避免冲突。
37.当备节点轮询到当前时间与记录时间的间隔大于续租期加保护期的时间时候,则尝试将自己设为主,与刚启动时候一样,第一个设置成功的则为主节点,进入下一个续租期。
38.说明,因异步任务(静默校验、集群再均衡等)对时效性要求相对不是很高,且调用链路较大,其停止时间可以超过保护期,同时可以在主节点刚启动时延时一段时间(例如2min)在启动异步任务。同样确保不会发生冲突。
39.为防止集群同时启动,在选主之前可以加一个小的随机因此,减少节点在同一时间提交触发事务冲突的概率。
40.本发明的优势:
41.通过本发明,利用现有环境中的分布式系统,例如共享硬盘或网络数据库,分布式存储的“大脑”(管理节点)实现了主备形式的高可用集群。
42.相比于直接的基于一致性协议的实现,本方案主要的优点有两个:
43.1.实现简单。主备切换依赖于底层共享设备里面记录的特定数据条目,只需要做好该数据条目监控即可。
44.2.当底层共享设备的备节点的损害时,例如硬盘故障,不会触发主备切换。上层进程不感知,无需考虑限流的方案,对业务完全没有影响。
45.实施例1
46.例如在一个集群中,设定的续租期为8s,保护期为2s,那么当一个备节点在超过10秒时间,仍没有收到心跳时,其尝试将自己设为主节点,此时其获取当前的主节点信息及时间戳,比较当前时间跟自己的时间差值是否大于10s,如果大于10s,将自己设置为主。如果小于10s,取消操作(说明自己这个节点有问题),如果设置成功,后续持续续期即可。而原来的主节点因续期失败,确保已经失去了主节点的地位。
47.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种分布式存储利用共享资源完成主备切换的方法,其特征在于:包括以下步骤:s1、将集群主备状态在时间轴上分成三种区间类型,分别是续租期、保护期与选主期;s2、在启动时,将集群置于选主期,集群中的manager节点为备节点;s3、备节点访问用于选主的key,判断是否更新为主节点;s4、集群进入续租期,集群的主节点处理请求;s5、判断主节点在续租期内是否续租成功,是,则继续处理请求,否,则主节点将自己置为备节点,不再处理新的请求,同时清空缓存,暂定异步任务,等待一个保护期的时间后,同其他备节点一样开始定期轮询状态。2.根据权利要求1所述的一种分布式存储利用共享资源完成主备切换的方法,其特征在于:在任一时刻集群中只有一个manager节点允许接收请求。3.根据权利要求1所述的一种分布式存储利用共享资源完成主备切换的方法,其特征在于:在步骤s3中的key为存储集群uuid+election。4.根据权利要求1所述的一种分布式存储利用共享资源完成主备切换的方法,其特征在于:在步骤s3中的备节点访问用于选主的key,判断是否更新为主节点,包括以下内容:对于集群中的每个manager节点,当其刚启动时,首先会将自己设为备节点,整个集群处于选主期,此时备节点会去访问用于选主的key,如果此时这个key里面的id为空,则将自己的id和当前时间作为内容设置进去,第一个设置成功的节点则为主节点,其他节点失败后放弃,并通过后面的定期查询更新主节点信息。5.根据权利要求1所述的一种分布式存储利用共享资源完成主备切换的方法,其特征在于:在步骤s4中的集群进入续租期,集群的主节点处理请求,包括以下内容:集群进入续租期,续租期的时长有集群级的配置文件确定,在续租期间内,主节点对外提供服务,并周期性的更新election键值对的更新时间,备节点不对外提供服务,当收到请求时候返回主节点的信息,以便于客户端去主节点重试;备节点周期性查看主节点更新时间,以便接管主节点。6.根据权利要求1所述的一种分布式存储利用共享资源完成主备切换的方法,其特征在于:在步骤s5中的主节点将自己置为备节点,不再处理新的请求时,已经提交的请求可以继续处理,主节点进保护期,涉及到的元数据更新不再缓存,保护期的时间大于请求处理的超时时间。7.根据权利要求1所述的一种分布式存储利用共享资源完成主备切换的方法,其特征在于:在步骤s5中,当备节点轮询到当前时间与记录时间的间隔大于续租期加保护期的时间时候,则尝试将自己设为主,与刚启动时候一样,第一个设置成功的则为主节点,进入下一个续租期。8.一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述权利要求1-7任一所述的一种分布式存储利用共享资源完成主备切换的方法。9.一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1-7任一所述的一种分布式存储利用共享资源完成主备切换的方法。
10.一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-7任一所述的一种分布式存储利用共享资源完成主备切换的方法。
技术总结
本发明提供了一种分布式存储利用共享资源完成主备切换的方法,包括以下步骤:将集群主备状态分成续租期、保护期与选主期;将集群置于选主期,集群中的manager节点为备节点;备节点访问用于选主的key,判断是否更新为主节点;集群进入续租期,集群的主节点处理请求;判断主节点在续租期内是否续租成功。本发明有益效果:实现简单,主备切换依赖于底层共享设备里面记录的特定数据条目,只需要做好该数据条目监控即可;当底层共享设备的备节点的损害时,例如硬盘故障,不会触发主备切换,上层进程不感知,无需考虑限流的方案,对业务完全没有影响。影响。影响。
技术研发人员:李韶雄
受保护的技术使用者:紫光云技术有限公司
技术研发日:2023.05.11
技术公布日:2023/8/4
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/