基于抢占锁实现一主多从的Git集群的方法技术

技术编号:34789051 阅读:19 留言:0更新日期:2022-09-03 19:52
本发明专利技术公开了基于抢占锁实现一主多从的Git集群的方法,该方法包括以下步骤:S1、集群中的节点通过抢占锁确定工作模式;S2、通过跟随者节点间隔固定时间对公共存储中的跟随者注册表进行更新,并利用集群内部所有节点间隔固定时间清理公共存储中的跟随者注册表;S3、利用领导者节点对所有的修改请求进行实际处理,并通知跟随者节点及时与领导者节点保持版本同步;S4、利用跟随者节点对外部节点发起的Git pull请求进行实际处理;其中,集群包含领导者节点和跟随者节点。本发明专利技术提出的Git分布式集群解决了高可用问题,一个节点宕机后,整个集群可以正常工作,避免出现Git文件丢失、集群不可用等问题。群不可用等问题。群不可用等问题。

【技术实现步骤摘要】
基于抢占锁实现一主多从的Git集群的方法


[0001]本专利技术涉及产品研发交付一体化(DevOps)领域,具体来说,涉及基于抢占锁实现一主多从的Git分布式集群的方法。

技术介绍

[0002]随着电信运营商数字化转型的不断发展,业务敏捷越来越依赖于应用的快速迭代,通过引入DevOps(Development和Operations的组合)理念帮助企业搭建持续交付的流水线,实现快速的价值交付。在DevOps的流程中配置管理是一个重要环节,生产和测试环境中,配置信息非常重要,要求配置管理服务器集群不能存在单点问题,要能保证部分服务器宕机时,数据不丢,服务可以快速恢复。要求可以快速频繁的配置修改,修改后需要能快速同步的到大量的业务主机,服务器集群需要快速处理高并发的拉取请求。
[0003]其中,授权公告号为CN109104333B的中国专利公开了基于GIT的分布式集群的同步方法和装置,虽然满足了Git节点的高可用需求,但也存在下面的不足之处:1、主机更新后,需要等待全部备机更新完毕,才能处理下一个更新操作;一个节点更新慢,会影响整个集群的处理速度,导致更新操作不能及时处理。
[0004]2、主机更新后,需要等待全部备机更新完毕,才开放外部机器同步;如果主机需要频繁更新,留给外部机器更新的时间窗口会非常小,不利于外部机器的及时更新。
[0005]3、备机节点只作为备机存在,不对外提供服务。这种方式资源利用效率低,集群存在性能瓶颈,不能通过增加节点的方式提升集群并发拉取处理能力。
[0006]针对相关技术中的问题,目前尚未提出有效的解决方案。

技术实现思路

[0007]针对相关技术中的问题,本专利技术提出基于抢占锁实现一主多从的Git集群的方法,以克服现有相关技术所存在的上述技术问题。
[0008]为此,本专利技术采用的具体技术方案如下:基于抢占锁实现一主多从的Git集群的方法,该方法包括以下步骤:S1、集群中的节点通过抢占锁确定工作模式;S2、通过跟随者节点间隔固定时间对公共存储中的跟随者注册表进行更新,并利用集群内部所有节点间隔固定时间清理公共存储中的跟随者注册表;S3、利用领导者节点对所有的修改请求进行实际处理,并通知跟随者节点及时与领导者节点保持版本同步;S4、利用跟随者节点对外部节点发起的Git pull请求进行实际处理;其中,集群包含领导者节点和跟随者节点。
[0009]进一步的,所述集群中的节点通过抢占锁确定工作模式包括以下步骤:S101:每隔固定时间获取分布式锁;S102:判断当前节点的工作模式,若是领导者模式,则更新领导者注册信息的有效
时间,进入S106;若是跟随者节点进入S103;S103:检测领导者的注册信息是否有效,若有效则进入S106;若无效则进入S104;S104:检测当前节点的是否有资格成为领导者,若有资格则进入S105,若没有资格进入S106;若当前节点的Git最新版本提交时间等于集群最新版本提交时间,则当前具备资格成为领导者;S105:转变当前节点为领导者模式,更新公共存储中的领导者注册信息,发送广播消息;S106:释放分布式锁。
[0010]进一步的,通过跟随者节点间隔固定时间对公共存储中的跟随者注册表进行更新包括:公共存储中的跟随者注册表的key为节点标识;注册表值包含刷新时间字段。
[0011]进一步的,所述利用集群内部所有节点间隔固定时间清理公共存储中的跟随者注册表包括:集群节点包括领导者节点和跟随者节点;集群节点间隔固定时间遍历跟随者注册表中的键值对;若键值对的刷新时间和当前日期的差值大于预设值,则从注册表中删除该键值。
[0012]进一步的,所述利用领导者节点对所有的修改请求进行实际处理,并通知跟随者节点及时与领导者节点保持版本同步包括以下步骤:领导者节点接收修改请求,根据修改请求修改工作区文件,并提交Git库、更新最新Git版本信息到公共存储及发送广播消息;跟随者节点接收广播通知,并向领导者节点发起Git pull请求;跟随者节点接收修改请求,并转发给领导者节点处理。
[0013]进一步的,所述领导者节点接收修改请求,根据修改请求修改工作区文件,并提交Git库、更新最新Git版本信息到公共存储及发送广播消息包括以下步骤:从修改请求中提取修改文件路径和文件内容;根据修改文件路径和修改内容更新Git工作区文件、执行Git Add和Git Commit操作;获取Git最新版本信息;更新版本信息到领导者注册信息;发送广播消息,通知跟随者节点;回复调用者;其中,版本信息包括Git版本号和版本提交时间。
[0014]进一步的,所述跟随者节点接收广播通知,并向领导者节点发起Git pull请求包括以下步骤:接收广播通知;从公共存储中获取当前领导者节点地址;为Git pull请求添加特定请求头,用于标识是集群内部节点转发的请求;
向领导者节点发起Git pull请求,Git pull请求拉取领导者节点的最新版本,并和领导者节点实现版本同步。
[0015]进一步的,所述跟随者节点接收修改请求,并转发给领导者节点处理包括以下步骤:接收修改请求;从公共存储中获取当前领导者节点地址;将修改请求转发给领导者节点处理;接收领导者节点的响应消息;回复修改结果。
[0016]进一步的,所述利用跟随者节点对外部节点发起的Git pull请求进行实际处理包括以下步骤:领导者节点接收Git pull请求,根据是否包含特定请求头决定处理方式;跟随者节点接收Git pull请求,直接处理,无需转发。
[0017]进一步的,所述领导者节点接收Git pull请求,根据是否包含特定请求头决定处理方式包括以下步骤:步骤一、判断是否包含特定请求头,若包含特定请求头,则来源为跟随者节点,进入步骤二,否则进入步骤三;步骤二、处理拉取请求,进入步骤六;步骤三、请求来源为外部节点,从公共存储中获取跟随者节点列表,使用负载均衡算法选取一个节点;步骤四、转发请求给选择的跟随者节点处理;步骤五、收到跟随者节点的返回;步骤六、回复调用者。
[0018]本专利技术的有益效果为:1、本专利技术提出的Git分布式集群解决了高可用问题,一个节点宕机后,整个集群可以正常工作,避免出现Git文件丢失、集群不可用等问题。
[0019]2、本专利技术提出的Git分布式集群的更新效率高,相对现有的公开的Git集群构建方法主机更新后,需要等待全部备机更新完毕,才能处理下一个更新操作;一个节点更新慢,会影响整个集群的处理速度,导致更新操作不能及时处理。本专利技术采用最终一致性思想,领导者节点更新Git库后,可以立即处理下一个更新请求,更新效率高,可以处理频繁的更新请求。
[0020]3、本专利技术提出的Git分布式集群可以随时处理外部机器的拉取请求,现有的公开的Git集群构建方法,在执行更新操作的时间窗口内,不能处理外部机器的拉取请求,本专利技术提出的Git分布式集群可以随时处理外部机器的拉取请求,处理能力更强。
[0021]4、本专利技术提出的Git分布式集群本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于抢占锁实现一主多从的Git集群的方法,其特征在于,该方法包括以下步骤:S1、集群中的节点通过抢占锁确定工作模式;S2、通过跟随者节点间隔固定时间对公共存储中的跟随者注册表进行更新,并利用集群内部所有节点间隔固定时间清理公共存储中的跟随者注册表;S3、利用领导者节点对所有的修改请求进行实际处理,并通知跟随者节点及时与领导者节点保持版本同步;S4、利用跟随者节点对外部节点发起的Git pull请求进行实际处理;其中,集群包含领导者节点和跟随者节点。2.根据权利要求1所述的基于抢占锁实现一主多从的Git集群的方法,其特征在于,所述集群中的节点通过抢占锁确定工作模式包括以下步骤:S101:每隔固定时间获取分布式锁;S102:判断当前节点的工作模式,若是领导者模式,则更新领导者注册信息的有效时间,进入S106;若是跟随者节点进入S103;S103:检测领导者的注册信息是否有效,若有效则进入S106;若无效则进入S104;S104:检测当前节点的是否有资格成为领导者,若有资格则进入S105,若没有资格进入S106;若当前节点的Git最新版本提交时间等于集群最新版本提交时间,则当前具备资格成为领导者;S105:转变当前节点为领导者模式,更新公共存储中的领导者注册信息,发送广播消息;S106:释放分布式锁。3.根据权利要求1所述的基于抢占锁实现一主多从的Git集群的方法,其特征在于,通过跟随者节点间隔固定时间对公共存储中的跟随者注册表进行更新包括:公共存储中的跟随者注册表的key为节点标识;注册表值包含刷新时间字段。4.根据权利要求1所述的基于抢占锁实现一主多从的Git集群的方法,其特征在于,所述利用集群内部所有节点间隔固定时间清理公共存储中的跟随者注册表包括:集群节点包括领导者节点和跟随者节点;集群节点间隔固定时间遍历跟随者注册表中的键值对;若键值对的刷新时间和当前日期的差值大于预设值,则从注册表中删除该键值。5.根据权利要求1所述的基于抢占锁实现一主多从的Git集群的方法,其特征在于,所述利用领导者节点对所有的修改请求进行实际处理,并通知跟随者节点及时与领导者节点保持版本同步包括以下步骤:领导者节点接收修改请求,根据修改请求修改工作区文件,并提交Git库、更新最新Git版本信息到公共存储及发送广播消息;跟随者节点接收广播通知,并向领导者节点发起Git pull...

【专利技术属性】
技术研发人员:刘启铨陈前进王玉木季恒婧董永安
申请(专利权)人:浩鲸云计算科技股份有限公司
类型:发明
国别省市:

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

1