分布式锁的分配方法及设备组成比例

技术编号:19933803 阅读:22 留言:0更新日期:2018-12-29 04:24
本申请的目的是提供一种分布式锁的分配方法及设备,在确保分布式锁正确性的前提下,每个分布式应用服务进程引入一个全局唯一的服务进程标识,并利用该进程标识直接管理分布式锁所有权,通过由所述服务替换进程,在所述锁文件的生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,所述继承请求包括所述服务替换进程的进程标识,从而支持在服务进程在故障切换场景下服务替换进程零等待地、主动地快速地继承原分布式锁所有权,避免现有技术中存在的不可服务的时间窗口问题,显著提升Failover场景下业务服务的连续性。

【技术实现步骤摘要】
分布式锁的分配方法及设备
本申请涉及计算机领域,尤其涉及一种分布式锁的分配方法及设备。
技术介绍
大规模云计算场景中,为了保障数据的分布式一致性,数量众多的计算节点往往依赖分布式锁服务来同步各自对某共享资源的访问,或者是协调各计算节点之间的行为动作。目前业界知名的支持分布式锁服务的产品有Google的Chubby,Yahoo的Zookeeper,以及CoreOS的Etcd等等。分布式锁服务在大规模云计算场景中被广泛使用,分布在不同计算节点上的客户端进程通常依赖分布式锁来访问服务端的共享资源,保证数据分布式一致性。典型的分布式锁服务是基于分布式一致性系统提供的Ephemeral文件(锁文件)操作接口实现的。具体来看,分布式锁的抢锁是基于创建Ephemeral文件操作接口设计的,而分布式锁释放锁则是基于删除Ephemeral文件操作接口实现的。Quorum是分布式一致性系统服务端Servers集合。每个QuorumServer均维护着分布式一致性系统的内存数据库,以及持久化存储的事务日志与快照数据。分布式一致性系统中的Ephemeral文件有所有权(Owner)概念,这确保了分布式锁的互本文档来自技高网...

【技术保护点】
1.一种客户端的分布式锁的分配方法,其中,该方法包括:为服务进程分配唯一的进程标识,由所述服务进程向服务端请求创建分布式锁的具有生命周期的锁文件后,向服务端发送在所述锁文件中写入所述进程标识的请求;当所述服务进程故障时,启动新的服务替换进程来切换所述故障的服务进程,并将所述故障的服务进程的进程标识分配给所述服务替换进程;由所述服务替换进程在所述锁文件的生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,所述继承请求包括所述服务替换进程的进程标识。

【技术特征摘要】
1.一种客户端的分布式锁的分配方法,其中,该方法包括:为服务进程分配唯一的进程标识,由所述服务进程向服务端请求创建分布式锁的具有生命周期的锁文件后,向服务端发送在所述锁文件中写入所述进程标识的请求;当所述服务进程故障时,启动新的服务替换进程来切换所述故障的服务进程,并将所述故障的服务进程的进程标识分配给所述服务替换进程;由所述服务替换进程在所述锁文件的生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,所述继承请求包括所述服务替换进程的进程标识。2.根据权利要求1所述的方法,其中,由所述服务替换进程在所述生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,包括:由所述服务替换进程,向所述服务端发送尝试重新创建同一布式锁的新的锁文件的请求,若所述服务端反馈尝试创建失败,由所述服务替换进程在所述生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,所述继承请求包括所述服务替换进程的进程标识。3.根据权利要求1或2所述的方法,其中,由所述服务替换进程在所述生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,包括:由所述服务替换进程在所述锁文件的生命周期结束前,向所述服务端发送所述服务进程所创建的锁文件的删除请求,所述删除请求包含所述服务替换进程的进程标识;由所述服务替换进程向所述服务端发送同一分布式锁的新的锁文件的创建请求。4.根据权利要求3所述的方法,其中,由所述服务替换进程在所述锁文件的生命周期结束前,向所述服务端发送所述服务进程所创建的锁文件的删除请求,向所述服务端发送同一分布式锁的新的锁文件的创建请求,包括:向服务端发送事务序号获取请求,以从服务端的锁文件中获取锁文件在创建时的事务序号;由所述服务替换进程在所述生命周期结束前,向所述服务端发送所述服务进程所创建的锁文件的删除请求,所述删除请求中还包含所述锁文件在创建时的事务序号;从服务端接收所述锁文件是否删除成功的反馈,其中,所述服务端基于删除请求中的事务序号与服务端的所述分布式锁的当前锁文件中的创建时的事务序号是否一致反馈所述锁文件是否删除成功,若删除成功,则基于从服务端接收的删除成功的反馈,向所述服务端发送同一分布式锁的新的锁文件的创建请求。5.根据权利要求4所述的方法,其中,从服务端接收所述锁文件是否删除成功的反馈之后,还包括:若删除不成功,则从所述服务接收所述服务替换进程抢占的所述锁文件失败的反馈。6.根据权利要求2所述的方法,其中,由所述服务替换进程在所述生命周期结束前,向所述服务端发送尝试重新创建同一布式锁的新的具有生命周期的锁文件的请求之后,还包括:若所述服务端尝试创建成功,则从所述服务端获取所述服务替换进程抢占所述分布式锁成功的反馈。7.一种服务端的分布式锁的分配方法,其中,该方法包括:根据从客户端的服务进程接收的锁文件的创建请求,创建对应的分布式锁的具有生命周期的锁文件;根据从所述服务进程接收的进程标识写入请求,在所述锁文件中写入所述服务进程的唯一的进程标识,其中,当所述服务进程故障时,由客户端启动新的服务替换进程来切换所述故障的服务进程,并将所述故障的服务进程的进程标识分配给所述服务替换进程;获取所述服务替换进程在所述锁文件的生命周期结束前,发送的所述分布式锁的继承请求,所述继承请求中包含所述服务替换进程的进程标识,判断所述服务替换进程的进程标识与所述锁文件中的当前进程标识是否一致,若一致,为所述服务替换进程创建同一分布式锁的新的锁文件。8.根据权利要求7所述的方法,其中,获取所述服务替换进程在所述锁文件生命周期结束前,发送的所述分布式锁的继承请求,所述继承请求中包含所述服务替换进程的进程标识,判断所述服务替换进程的进程标识与所述锁文件中的当前进程标识是否一致,若一致,创建所述服务替换进程的同一分布式锁的新的锁文件,包括:根据从所述服务替换进程接收的尝试重新创建请求,尝试创建所述服务替换进程的同一分布式锁的新的锁文件,若尝试失败,向所述服务替换进程反馈尝试创建失败;获取所述服务替换进程在所述锁文件生命周期结束前,发送的所述分布式锁的继承请求,所述继承请求中包含所述服务替换进程的进程标识,判断所述服务替换进程的进程标识与所述锁文件中的当前进程标识是否一致,若一致,创建所述服务替换进程的同一分布式锁的新的锁文件。9.根据权利要求7或8所述的方法,其中,获取所述服务替换进程在所述锁文件生命周期结束前,发送的所述分布式锁的继承请求,判断所述服务替换进程的进程标识与所述锁文件中的当前进程标识是否一致,若一致,创建所述服务替换进程的同一分布式锁的新的锁文件,包括:从服务替换进程接收在所述锁文件的生命周期结束前发送的删除锁文件的请求,所述删除锁文件的请求包含所述服务替换进程的进程标识,根据所述删除锁文件的请求判断所述服务替换进程的进程标识与所述锁文件中的当前进程标识是否一致,若一致,删除所述服务进程所创建的锁文件;根据从服务替换进程接收的创建请求,为所述替换进程创建同一分布式锁的新的锁文件。10.根据权利要求9所述的方法,其中,创建对应的分布式锁的具有生命周期的锁文件的之后,还包括:在所述锁文件中写入其创建时的事务序号;从服务替换进程接收在所述锁文件的生命周期结束前发送的删除锁文件的请求,所述删除锁文件的请求包含所述服务替换进程的进程标识,包括:根据从客户端接收的事务序号获取请求,向所述客户端发送锁文件在创建时的事务序号;从服务替换进程接收在所述锁文件的生命周期结束前发送的删除锁文件的请求,所述删除锁文件的请求包含所述服务替换进程的进程标识和所述锁文件在创建时的事务序号;删除所述服务进程所创建的锁文件,包括:判断所述删除锁文件请求中的事务序号与服务端的所述分布式锁的当前锁文件中的创建时的事务序号是否一致,若一致,删除所述服务进程所创建的锁文件,向所述服务替换进程反馈删除成功,获取所述服务替换进程发送的创建同一分布式锁的新的锁文件的请求。11.根据权利要求10所述的方法,其中,向所述服务替换进程反馈所述锁文件是否删除成功之后,还包括:若删除不成功,则向服务替换进程反馈抢占所述锁文件失败。12.根据权利要求8所述的方法,其中,尝试创建所述服务替换进程的同一分布式锁的新的锁文件之后,还包括:若尝试创建成功,则向所述服务替换进程反馈抢占所述分布式锁成功。13.一种客户端,其中,该客户端包括:创建请求装置,用于为服务进程分配唯一的进程标识,供所述服务进程向服务端请求创建分布式锁的具有生命周期的锁文件后,向服务端发送在所述锁文件中写入所述进程标识的请求;故障切换装置,用于当所述服务进程故障时,启动新的服务替换进程来切换所述故障的服务进程,并将所述故障的服务进程的进程标识分配给所述服务替换进程;继承请求装置,用于供所述服务替换进程,在所述锁文件的生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,所述继承请求包括所述服务替换进程的进程标识。14.根据权利要求13所述的客户端,其中,所述继承请求装置,用于供所述服务替换进程,向所述服务端发送尝试重新创建同一布式锁的新的锁文件的请求,若所述服务端反馈尝试创建失败,供所述服务替换进程在所述生命周期结束前,向所述服务端发送所述分布式锁的所有权的继承请求,所述继承请求包括所述服务替换进程的进程标识。15.根据权利要求13或14所述的客户端,其中,所述继承请求装置,用于供所述服务替换进程在所述锁文件的生命周期结束前,向所述服务端发送所述服务进程所创建的锁文件的删除请求,所述删除请求包含所述服务替换进程的进程标识;供所述服务替换进程向所述服务端发送同一分布式锁的新的锁文件的创建请求。16.根据权利要求15所述的客户端,其中,所述继承请求装置,用于向服务端发送事务序号获取请求,以从服务端的锁文件中获取锁文件在创建时的事务序号;供所述服务替换进程在所述生命周期结束前...

【专利技术属性】
技术研发人员:朱云锋杨皓然卢毅军
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1