一种基于kubernetes分布式锁选举主备节点的方法技术

技术编号:38004057 阅读:14 留言:0更新日期:2023-06-30 10:18
本发明专利技术涉及微服务技术领域,提供一种基于kubernetes分布式锁选举主备节点的方法,本发明专利技术的方法包括:在初始化启动节点时,根据时间戳为每个节点生成唯一的识别码;根据识别码从初始化启动的节点中选举一个节点作为主节点;采用分布式锁对选举的主节点进行上锁设置;实时循环检测分布式锁的状态,根据检测的状态更新主节点。根据本发明专利技术示例性实施例的基于kubernetes分布式锁选举主备节点的方法,可以提高应用程序的高可用性、负载均衡和自动化。负载均衡和自动化。负载均衡和自动化。

【技术实现步骤摘要】
一种基于kubernetes分布式锁选举主备节点的方法


[0001]本专利技术涉及微服务
,尤其涉及一种基于kubernetes分布式锁选举主备节点的方法。

技术介绍

[0002]在Kubernetes平台中,微服务之间的选举通常是根据应用程序自身的逻辑处理的,而不是由Kubernetes平台处理。例如,在Kubernetes中,使用一个包含多个副本的Deployment对象来部署一个微服务,当某个副本出现故障时,Kubernetes会自动启动新的副本以替换它。但是,如果这些副本需要进行某种形式的协调或选举,由于Kubernetes本身并不处理微服务之间的选举,而是将此任务留给应用程序自身来处理,那么这些逻辑将需要在应用程序内部实现。通常使用分布式算法来实现选举,并在Kubernetes中运行具有多个副本的容器化应用程序,但是这种方法开发量大、实现难度高。
[0003]因此,如何提供一种实现高可用主备选举的实现方法,使所有微服务都能够借助这种方式,快速实现自己的高可用功能,从而提升微服务的高可用性和可扩展性,成为亟待解决的技术问题。

技术实现思路

[0004]有鉴于此,为了克服现有技术的不足,本专利技术旨在提供一种基于kubernetes分布式锁选举主备节点的方法,用于提升微服务的高可用性和可扩展性。
[0005]本专利技术提供一种基于kubernetes分布式锁选举主备节点的方法,包括:
[0006]步骤S1:在初始化启动节点时,根据时间戳为每个节点生成唯一的识别码;<br/>[0007]步骤S2:根据识别码从初始化启动的节点中选举一个节点作为主节点;
[0008]步骤S3:采用分布式锁对选举的主节点进行上锁设置;
[0009]步骤S4:实时循环检测分布式锁的状态,根据检测的状态更新主节点。
[0010]作为本专利技术的优选,步骤S2包括:通过识别码获取每个节点的时间戳,从获取的时间戳中获取节点的创建时间,将创建时间最早的节点选举作为主节点,将其余节点作为备节点。
[0011]作为本专利技术的优选,步骤S2还包括:当存在多个创建时间最早的节点时,从多个具有相同创建时间的节点中选举一个节点作为主节点,其余所有节点作为备节点。
[0012]作为本专利技术的优选,步骤S3包括:将选举的主节点的识别码设置为分布式锁的身份识别码,将分布式锁的状态更新为上锁状态。
[0013]作为本专利技术的优选,步骤S3中的分布式锁为存储在Etcd键值存储系统中的资源对象,所述资源对象包括ConfigMap资源对象、Lease资源对象和Secret资源对象。
[0014]作为本专利技术的优选,本专利技术的步骤S4包括:
[0015]主节点以外的所有备节点实时循环检测分布式锁的状态;
[0016]当备节点检测到分布式锁的状态为上锁状态,保持所述备节点的状态;
[0017]当备节点检测到分布式锁的状态为未上锁状态,根据识别码从备节点中选举一个节点与分布式锁进行匹配,根据匹配结果判定是否更新主节点。
[0018]作为本专利技术的优选,步骤S4中,根据识别码从备节点中选举一个节点与分布式锁进行匹配,包括:通过识别码获取每个备节点的时间戳,从获取的时间戳中获取备节点的创建时间,将创建时间最早的备节点与分布式锁进行匹配。
[0019]作为本专利技术的优选,步骤S4中,根据识别码从备节点中选举一个节点与分布式锁进行匹配,还包括:当存在多个创建时间最早的备节点时,从多个具有相同创建时间的备节点中选举一个节点与分布式锁进行匹配。
[0020]作为本专利技术的优选,步骤S4中,根据匹配结果判定是否更新主节点,包括:
[0021]当选举的备节点的识别码与分布式锁的身份识别码一致,将所述备节点更新为新的主节点,采用分布式锁对新的主节点进行上锁设置;
[0022]当选举的备节点的识别码与分布式锁的身份识别码不一致,保持所述备节点的状态并实时循环检测分布式锁的状态。
[0023]最后,本专利技术还提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于kubernetes分布式锁选举主备节点的方法。
[0024]本专利技术基于kubernetes分布式锁选举主备节点的方法,具有以下有益效果:
[0025]1.保证了应用程序的高可用性,当主节点Pod失效后,能够帮助Kubernetes确定哪个已存在的Pod是最适合替代故障主Pod的。
[0026]2.可以动态地将流量分配到可用的Pod上,确保各个Pod的负载均衡,并避免某个Pod负载过重而导致性能下降。
[0027]3.可以根据事先设定的规则和策略来选择最适合的Pod,减轻了人工干预的负担,提高了系统的稳定性和可靠性。
附图说明
[0028]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0029]图1为本专利技术示例性第一实施例一种基于kubernetes分布式锁选举主备节点的方法的流程图。
[0030]图2为本专利技术示例性第四实施例的一种基于kubernetes分布式锁选举主备节点的方法的示意图。
[0031]图3为本专利技术提供的设备的结构示意图。
具体实施方式
[0032]下面结合附图对本专利技术实施例进行详细描述。
[0033]需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0034]需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
[0035]本专利技术的技术原理如下:
[0036]通过存储在Etcd键值存储系统中的资源对象实现分布式锁。具体的,可以由kubernetes上的多种资源实现,如存储在Etcd中的configmap、lease、secret,可任选其中一种。主要目的是存储上述锁身份识别码ID及锁状态两个关键信息。每个节点都可以实时拿到它们存储的所有数据。分布在不同节点的应用程序可以拿到相同的数据,解决了分布式数据差异性的问题。
[0037]各节点通过选举机制对分布式锁进行竞争,优先拿到本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于kubernetes分布式锁选举主备节点的方法,其特征在于,所述方法包括:步骤S1:在初始化启动节点时,根据时间戳为每个节点生成唯一的识别码;步骤S2:根据识别码从初始化启动的节点中选举一个节点作为主节点;步骤S3:采用分布式锁对选举的主节点进行上锁设置;步骤S4:实时循环检测分布式锁的状态,根据检测的状态更新主节点。2.根据权利要求1所述的基于kubernetes分布式锁选举主备节点的方法,其特征在于,步骤S2包括:通过识别码获取每个节点的时间戳,从获取的时间戳中获取节点的创建时间,将创建时间最早的节点选举作为主节点,将其余节点作为备节点。3.根据权利要求2所述的基于kubernetes分布式锁选举主备节点的方法,其特征在于,步骤S2还包括:当存在多个创建时间最早的节点时,从多个具有相同创建时间的节点中选举一个节点作为主节点,其余所有节点作为备节点。4.根据权利要求1所述的基于kubernetes分布式锁选举主备节点的方法,其特征在于,步骤S3包括:将选举的主节点的识别码设置为分布式锁的身份识别码,将分布式锁的状态更新为上锁状态。5.根据权利要求1所述的基于kubernetes分布式锁选举主备节点的方法,其特征在于,步骤S3中的分布式锁为存储在Etcd键值存储系统中的资源对象,所述资源对象包括ConfigMap资源对象、Lease资源对象和Secret资源对象。6.根据权利要求1所述的基于kubernetes分布式锁选举主备节点的方法,其特征在于,步骤S4包括:主节点以外的所有备节点实时循环检测分...

【专利技术属性】
技术研发人员:张凯
申请(专利权)人:中电云数智科技有限公司
类型:发明
国别省市:

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

1