分布式锁的实现方法、相关设备及系统技术方案

技术编号:15795012 阅读:113 留言:0更新日期:2017-07-10 10:48
本申请实施例提供了一种分布式锁的实现方法、相关设备及系统。方法包括:主网络节点接收锁处理消息,对所述锁处理消息进行缓存,然后获取当前缓存的至少两个锁处理消息,并根据当前缓存的所述至少两个锁处理消息生成一条日志信息,向从属于该主网络节点的至少两个从网络节点同步所述日志信息,当确定所述日志信息同步成功后,对所述日志信息中的所述至少两个锁处理消息进行处理。采用本申请,主网络节点可以对锁处理消息进行批量处理,避免主网络节点频繁地同步锁处理消息和接收确认消息所造成的分布式锁性能的急剧下降。

【技术实现步骤摘要】
分布式锁的实现方法、相关设备及系统
本专利技术涉及电子
,尤其涉及一种分布式锁的实现方法、相关设备及系统。
技术介绍
随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,提出了分布式系统的概念。简单来说,分布式系统就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。而在分布式系统中,不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么用户在访问这些资源的时候,往往需要互斥来防止彼此干扰,在这种情况下,便需要使用到分布式锁。分布式锁是分布式系统的核心组件,是用来控制分布式系统之间同步访问共享资源的一种方式。具体来说,分布式锁的原理就是在操作目标资源之前先获取操作许可,然后再执行操作,如果其他用户同时尝试操作该目标资源将被阻止,直到前一个用户释放许可后,其他用户才能够操作目标资源。可以看出,分布式锁是保证分布式系统可靠、有序地被操作和运行的重要机制。因此,保证分布式锁的可靠性对于分布式系统的实现有着重要的意义。目前,为了提供可靠的分布式锁,现有技术通常在多个网络节点中存储相同的锁信息,其中一个网络节点作为主网络节点完成分布式锁的业务,其他多个网络节点作为冗余网络节点,当主网络节点出现宕机等故障时,其他冗余网络节点可以代替主网络节点继续完成分布式锁的业务。因此,如何保证实现分布式锁的多个网络节点之间的一致性就显得尤为重要。当前业界使用的主要是基于zookeeper分布式服务框架或者chubby分布式系统构建的分布式锁,而其受限于zookeeper和chubby系统功能和实现的特点,导致分布式锁的性能较低且较难提升,成为分布式系统业务运行的瓶颈。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种分布式锁的实现方法、相关设备及系统,提升分布式锁的性能。本申请第一方面提供了一种分布式锁的实现方法。主网络节点接收锁处理消息,对所述锁处理消息进行缓存,然后获取当前缓存的至少两个锁处理消息,并根据当前缓存的所述至少两个锁处理消息生成一条日志信息,向从属于该主网络节点的至少一个从网络节点同步所述日志信息,当确定所述日志信息同步成功后,对所述日志信息中的所述至少两个锁处理消息进行处理。在该技术方案中,主网络节点可以对锁处理消息进行批量处理,避免主网络节点频繁地同步锁处理消息和接收确认消息所造成的分布式锁性能的急剧下降。在第一方面的第一种可能的实现方式中,主网络节点接收所述至少一个从网络节点存储成功所述日志信息后发送的确认消息,根据接收到的所述确认消息的数量,确定所述日志消息是否同步成功。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,主网络节点将所述锁处理消息缓存在消息缓存队列中,所述消息缓存队列中锁处理消息的排序由各个锁处理消息的接收先后顺序确定,当主网络节点确定所述日志信息同步成功后,按照所述消息缓存队列中各锁处理消息的排序依次对所述消息缓存队列中的锁处理消息进行处理。在该技术方案中,主网络节点可以对锁处理消息进行批量处理的同时,仍然保证对多个锁处理消息的处理顺序不变。结合第一方面或第一方面的第一种至第二种中任一可能的实现方式,在第一方面的第三种可能的实现方式中,锁处理消息携带目标资源的资源标识;主网络节点确定本身所属的分布式锁节点集合,然后向所述分布式锁节点集合中的至少一个从网络节点同步所述日志信息,其中,所述分布式锁节点集合与所述目标资源的资源标识对应,所述分布式锁节点集合中包括所述主网络节点以及至少一个从网络节点。在该技术方案中,锁处理消息可以分配给指定的分布式锁节点集合进行处理,并且还对锁处理消息进行批量处理,既能提升处理效率,又能避免主网络节点频繁地同步锁处理消息和接收确认消息所造成的分布式锁性能的急剧下降,从而可以更好地提升分布式锁的性能。结合第一方面或第一方面的第一种至第三种中任一可能的实现方式,在第一方面的第四种可能的实现方式中,所述锁处理消息为锁请求消息或锁释放消息。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述锁处理消息为锁请求消息,所述锁请求消息携带目标资源的资源标识;主网络节点对所述日志信息中的所述至少两个锁处理消息进行处理时,获取所述日志信息中目标锁请求消息携带的目标资源的资源标识,然后检测资源占用队列中是否存在所述目标资源的资源标识,当检测到当前的资源占用队列中不存在所述目标资源的资源标识时,主网络节点获取针对所述目标资源的锁信息并发送给所述目标锁请求消息对应的客户端,将所述目标资源的资源标识加入资源占用队列中。结合第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述锁处理消息为锁释放消息,所述锁释放消息携带目标资源的资源标识;主网络节点对所述日志信息中的所述至少两个锁处理消息进行处理时,获取所述日志信息中目标锁释放消息携带的目标资源的资源标识,检测当前的资源占用队列中是否存在所述目标资源的资源标识,当检测到当前的资源占用队列中存在所述目标资源的资源标识时,所述主网络节点从所述资源占用队列中删除所述目标资源的资源标识。结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,主网络节点在当前的资源等待队列中查询是否存在携带所述目标资源的资源标识的目标锁请求消息,当检测到存在目标锁请求消息时,获取针对所述目标资源的锁信息并发送给所述目标锁请求消息对应的客户端,将所述目标资源的资源标识加入资源占用队列中。本申请第二方面提供了一种分布式锁的实现方法。分发节点获取锁处理消息,所述锁处理消息包括目标资源的资源标识,然后确定所述资源标识对应的分布式锁节点集合,所述分布式锁节点集合包括主网络节点和至少一个从网络节点,再向所述分布式锁节点集合中的主网络节点发送所述锁处理消息,所述锁处理消息用于指示所述分布式锁节点集合对所述锁处理消息进行同步和处理。在该技术方案中,分发节点可以将针对不同资源的锁处理消息分配给指定的分布式锁节点集合进行处理,从而可以使分布式锁节点集合中的各个网络节点处理的业务更有针对性,提升处理效率,进而提升分布式锁的性能。在第二方面的第一种可能的实现方式中,分发节点根据预设的资源节点映射表,获取所述资源标识对应的分布式锁节点集合,所述资源节点映射表包括至少一个资源标识以及各资源标识对应的分布式锁节点集合。结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,分发节点接收客户端发送的锁处理消息。结合第二方面或第二方面的第一种至第二种中任一可能的实现方式,在第二方面的第三种可能的实现方式中,所述锁处理消息为锁请求消息或锁释放消息。本申请第三方面提供了一种分布式锁的实现方法。主网络节点接收锁处理消息,所述锁处理消息包括目标资源的资源标识,所述资源标识与所述主网络节点所属的分布式锁节点集合对应,所述分布式锁节点集合包括所述主网络节点以及至少一个从网络节点,主网络节点向所述分布式锁节点集合中的从网络节点同步所述锁处理消息,当确定所述锁处理消息同步成功后,对所述锁处理消息进行处理。在该技术方案中,主网络节点将本文档来自技高网
...
分布式锁的实现方法、相关设备及系统

【技术保护点】
一种分布式锁的实现方法,其特征在于,所述方法包括:主网络节点接收锁处理消息;所述主网络节点对所述锁处理消息进行缓存;所述主网络节点获取当前缓存的至少两个锁处理消息,并根据当前缓存的所述至少两个锁处理消息生成一条日志信息;所述主网络节点向从属于该主网络节点的至少一个从网络节点同步所述日志信息;当所述主网络节点确定所述日志信息同步成功后,对所述日志信息中的所述至少两个锁处理消息进行处理。

【技术特征摘要】
1.一种分布式锁的实现方法,其特征在于,所述方法包括:主网络节点接收锁处理消息;所述主网络节点对所述锁处理消息进行缓存;所述主网络节点获取当前缓存的至少两个锁处理消息,并根据当前缓存的所述至少两个锁处理消息生成一条日志信息;所述主网络节点向从属于该主网络节点的至少一个从网络节点同步所述日志信息;当所述主网络节点确定所述日志信息同步成功后,对所述日志信息中的所述至少两个锁处理消息进行处理。2.如权利要求1所述的方法,其特征在于,所述当所述主网络节点确定所述日志信息同步成功包括:所述主网络节点接收所述至少一个从网络节点存储成功所述日志信息后发送的确认消息;所述主网络节点根据接收到的所述确认消息的数量,确定所述日志消息是否同步成功。3.如权利要求1或2所述的方法,其特征在于,所述主网络节点对所述锁处理消息进行缓存包括:所述主网络节点将所述锁处理消息缓存在消息缓存队列中,所述消息缓存队列中锁处理消息的排序由各个锁处理消息的接收先后顺序确定;所述当所述主网络节点确定所述日志信息同步成功后,对所述日志信息中的所述至少两个锁处理消息进行处理包括:当所述主网络节点确定所述日志信息同步成功后,按照所述消息缓存队列中各锁处理消息的排序依次对所述消息缓存队列中的锁处理消息进行处理。4.如权利要求1-3任一项所述的方法,其特征在于,所述锁处理消息携带目标资源的资源标识;所述主网络节点向从属于该主网络节点的至少一个从网络节点同步所述日志信息包括:所述主网络节点确定本身所属的分布式锁节点集合,所述分布式锁节点集合与所述目标资源的资源标识对应,所述分布式锁节点集合中包括所述主网络节点以及至少一个从网络节点;所述主网络节点向所述分布式锁节点集合中的至少一个从网络节点同步所述日志信息。5.如权利要求1-4任一项所述的方法,其特征在于,所述锁处理消息为锁请求消息或锁释放消息。6.一种分布式锁的实现方法,其特征在于,所述方法包括:分发节点获取锁处理消息,所述锁处理消息包括目标资源的资源标识;所述分发节点确定所述资源标识对应的分布式锁节点集合,所述分布式锁节点集合包括主网络节点和至少一个从网络节点;所述分发节点向所述分布式锁节点集合中的主网络节点发送所述锁处理消息,所述锁处理消息用于指示所述分布式锁节点集合对所述锁处理消息进行同步和处理。7.如权利要求6所述的方法,其特征在于,所述分发节点确定所述资源标识对应的分布式锁节点集合包括:所述分发节点根据预设的资源节点映射表,获取所述资源标识对应的分布式锁节点集合,所述资源节点映射表包括至少一个资源标识以及各资源标识对应的分布式锁节点集合。8.如权利要求6或7所述的方法,其特征在于,所述分发节点获取锁处理消息包括:所述分发节点接收客户端发送的锁处理消息。9.如权利要求6-8任一项所述的方法,其特征在于,所述锁处理消息为锁请求消息或锁释放消息。10.一种分布式锁的实现方法,其特征在于,所述方法包括:主网络节点接收锁处理消息,所述锁处理消息包括目标资源的资源标识,所述资源标识与所述主网络节点所属的分布式锁节点集合对应,所述分布式锁节点集合包括所述主网络节点以及至少一个从网络节点;所述主网络节点向所述分布式锁节点集合中的从网络节点同步所述锁处理消息;当所述主网络节点确定所述锁处理消息同步成功后,对所述锁处理消息进行处理。11.如权利要求10所述的方法,其特征在于,所述主网络节点向所述分布式锁节点集合中的从网络节点同步所述锁处理消息之前,还包括:所述主网络节点对所述锁处理消息进行缓存;所述主网络节点获取当前缓存的至少两个锁处理消息,并根据当前缓存的所述至少两个锁处理消息生成一条日志信息;所述主网络节点向所述分布式锁节点集合中的从网络节点同步所述锁处理消息包括:所述主网络节点向所述分布式锁节点集合中的从网络节点同步所述日志信息;所述当所述主网络节点确定所述锁处理消息同步成功后,对所述锁处理消息进行处理包括:当所述主网络节点确定所述日志信息同步成功后,对所述日志信息中的所述至少两个锁处理消息进行处理。12.如权利要求11所述的方法,其特征在于,所述当所述主网络节点确定所述日志信息同步成功包括:所述主网络节点接收所述分布式锁节点集合中的至少一个从网络节点存储成功所述日志信息后发送的确认消息;所述主网络节点根据接收到的所述确认消息的数量,确定所述日志消息是否同步成功。13.如权利要求11或12所述的方法,其特征在于,所述主网络节点对所述锁处理消息进行缓存包括:所述主网络节点将所述锁处理消息缓存在消息缓存队列中,所述消息缓存队列中锁处理消息的排序由各个锁处理消息的接收先后顺序确定;所述当所述主网络节点确定所述日志信息同步成功后,对所述日志信息中的所述至少两个锁处理消息进行处理包括:当所述主网络...

【专利技术属性】
技术研发人员:宋跃忠侯杰林程勇戴龙飞
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1