本发明专利技术涉及大数据,提供了一种分布式锁的处理方法及装置、电子设备、存储介质,包括:通过对象存储的应用程序接口设置上传对象函数中的键值对,其中,所述键值对包括键名和键值,所述键名设置为分布式锁的锁名,所述键值设置为含有目标应用服务器的唯一主机名;根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源;若所述目标应用服务器成功抢占锁资源,则操作所述目标业务。本发明专利技术还涉及区块链技术,将所述共享数据存储于区块链中。通过本发明专利技术,解决了相关技术中现有的分布式锁实现方式存在操作复杂、抗并发性弱以及会因主节点挂掉而造成的数据不同步等技术问题。
【技术实现步骤摘要】
分布式锁的处理方法及装置、电子设备、存储介质
本专利技术涉及大数据处理,具体而言,涉及一种分布式锁的处理方法及装置、电子设备、存储介质。
技术介绍
在单Java虚拟机(JavaVirtualMachine,JVM)中,开发工具包(JavaDevelopmentKit,jdk)提供现成的应用程序接口(API),而在分布式应用(多JVM)中,jdk提供的锁API已经不能满足需求了,为了使分布式存储系统能够正确而有效的运行,必须要控制多个客户端对同一共享资源的并发访问,以便防止某些不确定性的行为不受控制、并发或者同时访问共享资源,导致数据和元数据的一致性遭到破坏,锁是实现并发访问控制的常用手段。目前,市场上实现分布式锁的方案大体有三种:其一是基于数据库实现分布式锁功能,另外两种则是基于redis或者zookeeper来实现,这三种分布式锁的实现方案可以说各有利弊。首先,基于数据库方案来实现分布式锁,实现上虽然简单,但是性能堪忧,它一般是通过表中主键唯一或者字段建立唯一索引来实现的,需要多建索引,不仅占用磁盘空格,而且还会在高并发场景下容易出现数据库死锁;使用数据库还会存在单点故障,若使用数据库集群,又存在主从数据同步的问题。其次,基于redis实现分布式锁,它主要是基于redis单线程接收请求和redis的setnx命令,但是不好控制何时删除key;使用redis实现分布式锁看起来实现性最高,但是它存在死锁的情况;虽然市场上采用了框架redisson进行了二次封装,操作简单,但是它仍解决不了哨兵模式或主从模式情况下,主节点挂掉,多个客户端同时获取锁成功的情况。最后,对于基于zookeeper实现分布式锁,它主要是基于它的临时顺序节点特性和watch监听,性能虽好,但是为了避免单点故障,还得搭建集群,zookeeper环境搭建起来较复杂,巨耗资源成本。综上,现有的分布式锁实现方案存在操作复杂、抗并发性弱,以及会因主节点挂掉而造成的数据不同步等技术问题。专利技术人发现针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
技术实现思路
本专利技术提供了一种分布式锁的处理方法及装置、电子设备、存储介质,以至少解决了相关技术中现有的分布式锁实现方式存在操作复杂、抗并发性弱以及会因主节点挂掉而造成的数据不同步等技术问题。根据本专利技术的一个方面,提供了一种分布式锁的处理方法,包括:通过对象存储的应用程序接口设置上传对象函数中的键值对,其中,所述键值对包括键名和键值,所述键名设置为分布式锁的锁名,所述键值设置为含有目标应用服务器的唯一主机名,所述锁名由当多个应用服务器并发访问共享数据时待操作目标业务的业务名决定,所述目标应用服务器为所述多个应用服务器中任一应用服务器;根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源;若所述目标应用服务器成功抢占锁资源,则操作所述目标业务。可选的,在根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源之前,所述方法还包括:通过所述应用程序接口调用所述上传对象函数;通过所述应用程序接口调用所述对象存储中的获取对象函数,以获取所述键值对。可选的,所述共享数据存储于区块链中,所述根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源,包括:判断所述锁名对应的业务名是否位于所述对象存储中;若所述业务名位于所述对象存储中,则判断所述键值中是否含有所述目标应用服务器的唯一主机名;若所述键值中含有所述目标应用服务器的唯一主机名,则所述目标应用服务器抢占锁资源成功。可选的,在所述判断所述锁名对应的业务名是否位于所述对象存储中之后还包括:若所述键名没有位于所述对象存储中,则确定没有应用服务器抢占锁资源,通过所述应用程序接口重新设置所述上传对象函数中的键值对;并执行所述判断所述锁名对应的业务名是否位于所述对象存储中的步骤。可选的,在所述判断所述键值中是否含有所述目标应用服务器的唯一主机名之后还包括:步骤a,若所述键值中没有所述目标应用服务器的唯一主机名,则所述目标应用服务器抢占锁资源失败;步骤b,更新所述上传对象函数中的键值为第一应用服务器的唯一主机名,其中,所述第一应用服务器为所述多个应用服务器中除所述目标应用服务器之外的任一应用服务器;步骤c,执行所述通过所述应用程序接口调用所述对象存储中的获取对象函数的步骤,以获取所述获取对象函数中的更新键值;步骤d,判断所述更新键值中是否含有所述第一应用服务器的唯一主机名;步骤e,若所述更新键值中含有所述第一应用服务器的主机名,则所述第一应用服务器抢占锁资源成功;否则,返回执行步骤b,步骤c,步骤d。可选的,在操作所述目标业务之后,所述方法还包括:删除所述对象存储中的锁名,以释放锁资源。可选的,若所述键值中还包含所述键值设置为含有所述目标应用服务器的唯一主机名的初始时间,在操作所述目标业务成功之前,所述方法还包括:更新所述初始时间为当前时间;基于所述初始时间和所述当前时间监测所述目标应用服务器访问共享数据的时间戳;将所述时间戳与预设时间进行比较;若所述时间戳大于或等于所述预设时间,则删除所述对象存储中的锁名,以释放锁资源。根据本专利技术的另一个方面,提供了一种分布式锁的处理装置,包括:设置模块,用于通过对象存储的应用程序接口设置上传对象函数中的键值对,其中,所述键值对包括键名和键值,所述键名设置为分布式锁的锁名,所述键值设置为含有目标应用服务器的唯一主机名,所述锁名由当多个应用服务器并发访问共享数据时待操作目标业务的业务名决定,所述目标应用服务器为所述多个应用服务器中任一应用服务器;判断模块,用于根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源;操作模块,用于若所述目标应用服务器成功抢占锁资源,则操作所述目标业务。可选的,所述装置还包括:第一调用模块,用于在根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源之前,通过所述应用程序接口调用所述上传对象函数;第二调用模块,用于通过所述应用程序接口调用所述对象存储中的获取对象函数,以获取所述键值对。可选的,所述共享数据存储于区块链中,所述判断模块包括:第一判断单元,用于判断所述锁名对应的业务名是否位于所述对象存储中;第二判断单元,用于若所述业务名位于所述对象存储中,则判断所述键值中是否含有所述目标应用服务器的唯一主机名;第一确定单元,用于若所述键值中含有所述目标应用服务器的唯一主机名,则所述目标应用服务器抢占锁资源成功。可选的,所述判断模块还包括:第二确定单元,用于在所述判断所述锁名对应的业务名是否位于所述对象存储中之后,若所述键名没有位于所述对象存储中,则确定没有应用服务器抢占锁资源,通过所述应用程序接口重新设置所述上传对象函数中的键值对;第一执行单元,用于执行所述判断所述锁名对应的业务名是否位于所述对象存储中的步骤。可选的,所述判断模块还包括:第三确定单元,用于执行步骤本文档来自技高网...
【技术保护点】
1.一种分布式锁的处理方法,其特征在于,包括:/n通过对象存储的应用程序接口设置上传对象函数中的键值对,其中,所述键值对包括键名和键值,所述键名设置为分布式锁的锁名,所述键值设置为含有目标应用服务器的唯一主机名,所述锁名由当多个应用服务器并发访问共享数据时待操作目标业务的业务名决定,所述目标应用服务器为所述多个应用服务器中任一应用服务器;/n根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源;/n若所述目标应用服务器成功抢占锁资源,则操作所述目标业务。/n
【技术特征摘要】
1.一种分布式锁的处理方法,其特征在于,包括:
通过对象存储的应用程序接口设置上传对象函数中的键值对,其中,所述键值对包括键名和键值,所述键名设置为分布式锁的锁名,所述键值设置为含有目标应用服务器的唯一主机名,所述锁名由当多个应用服务器并发访问共享数据时待操作目标业务的业务名决定,所述目标应用服务器为所述多个应用服务器中任一应用服务器;
根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源;
若所述目标应用服务器成功抢占锁资源,则操作所述目标业务。
2.根据权利要求1所述的方法,其特征在于,在根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源之前,所述方法还包括:
通过所述应用程序接口调用所述上传对象函数;
通过所述应用程序接口调用所述对象存储中的获取对象函数,以获取所述键值对。
3.根据权利要求1所述的方法,其特征在于,所述共享数据存储于区块链中,根据所述锁名和所述目标应用服务器的唯一主机名,判断所述目标应用服务器是否成功抢占锁资源,包括:
判断所述锁名对应的业务名是否位于所述对象存储中;
若所述业务名位于所述对象存储中,则判断所述键值中是否含有所述目标应用服务器的唯一主机名;
若所述键值中含有所述目标应用服务器的唯一主机名,则所述目标应用服务器抢占锁资源成功。
4.根据权利要求3所述的方法,其特征在于,在所述判断所述锁名对应的业务名是否位于所述对象存储中之后还包括:
若所述键名没有位于所述对象存储中,则确定没有应用服务器抢占锁资源,通过所述应用程序接口重新设置所述上传对象函数中的键值对;并执行所述判断所述锁名对应的业务名是否位于所述对象存储中的步骤。
5.根据权利要求3所述的方法,其特征在于,在所述判断所述键值中是否含有所述目标应用服务器的唯一主机名之后还包括:
步骤a,若所述键值中没有所述目标应用服务器的唯一主机名,则所述目标应用服务器抢占锁资源失败;
步骤b,更新所述上传对象函数中的键值为第一应用服务器的唯一主机名,其中,所述第一...
【专利技术属性】
技术研发人员:郑钦锋,
申请(专利权)人:平安科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。