一种分布式锁的控制方法及装置与流程

文档序号:19664416发布日期:2020-01-10 21:26阅读:159来源:国知局
一种分布式锁的控制方法及装置与流程

本申请涉及网络技术领域,尤指一种分布式锁的控制方法及装置。



背景技术:

在分布式服务中可以同时执行多个任务,因为存在并发,所以会出现多个服务同时操作同一个数据的情况。为了解决多个服务同时操作同一个数据的问题,现有技术中提供的解决方案是通过对数据进行加锁,锁的唯一标识是公开的,只有获取到数据的锁的服务才有执行权;但是在实际操作中,因为能够被其它服务重新获取。比如其它服务在执行任务前先释放锁再获取锁,或者直接调用重新获取锁,都会出现多个服务获取同一个锁的情况,从而导致数据的锁并不是安全。



技术实现要素:

本申请实施例提供一种分布式锁的控制方法及装置,用以解决现有分布式服务中多个任务并发,导致数据的锁不安全的问题。

第一方面,提供一种分布式锁的控制方法,包括:

锁服务接收分布式服务获取数据锁的第一请求;其中,所述第一请求包括唯一标识和第一口令;所述唯一标识与所述数据锁一一对应;所述第一口令由所述分布式服务生成并用于加密所述数据锁;

确定是否存在与所述唯一标识对应的数据锁;如果存在,则判断所述数据锁是否有对应的第二口令;如果有,则确定所述第一口令与第二口令是否相同,如果相同,则向所述分布式服务返回锁。

在一种可选的实施方式中,方法还包括:

若所述第一口令与第二口令不相同,则向所述分布式服务指示信息;其中,所述指示信息用于指示加锁失败。

在一种可选的实施方式中,方法还包括:

若所述数据锁没有对应的第二口令,所述锁服务将所述第一口令作为所述数据锁对应的第二口令,并向所述分布式服务返回锁。

在一种可选的实施方式中,方法还包括:

接收分布式服务发送的释放数据锁的第二请求;其中,所述第二请求包括唯一标识和第三口令;

根据所述唯一标识查找所述数据锁;确定查找到的数据锁对应的第四口令是否和所述第三口令相同,如果相同,删除锁,返回释放锁成功;如果不相同,返回释放锁失败。

第二方面,提供一种分布式锁的控制方法,包括:

分布式服务向锁服务请求数据锁时,随机生成与所述数据锁对应的第一口令;其中,所述第一口令由所述分布式服务生成并用于加密所述数据锁;

向锁服务发送获取所述数据锁的第一请求;其中,所述第一请求包括唯一标识和所述第一口令;所述唯一标识与所述数据锁一一对应;

接收所述锁服务反馈的信息获取所述数据锁。

在一种可选的实施方式中,该方法还包括:

分布式服务向锁服务请求释放数据锁时,将与所述数据锁对应的口令添加到请求释放数据锁的请求中。

第三方面,提供一种分布式锁的控制装置,包括:

接收单元,用于接收分布式服务获取数据锁的第一请求;其中,所述第一请求包括唯一标识和第一口令;所述唯一标识与所述数据锁一一对应;所述第一口令由所述分布式服务生成并用于加密所述数据锁;

确定单元,用于确定是否存在与所述唯一标识对应的数据锁;如果存在,则判断所述数据锁是否有对应的第二口令;如果有,则确定所述第一口令与第二口令是否相同,如果相同,则向所述分布式服务返回锁。

在一种可选的实施方式中,该装置还包括:

所述确定单元还用于若所述第一口令与第二口令不相同,则向所述分布式服务指示信息;其中,所述指示信息用于指示加锁失败。

在一种可选的实施方式中,所述确定单元还用于若所述数据锁没有对应的第二口令,将所述第一口令作为所述数据锁对应的第二口令,并向所述分布式服务返回锁。

在一种可选的实施方式中,包括:

所述接收单元还用于接收分布式服务发送的释放数据锁的第二请求;其中,所述第二请求包括唯一标识和第三口令;

释放单元,用于根据所述唯一标识查找所述数据锁;确定查找到的数据锁对应的第四口令是否和所述第三口令相同,如果相同,删除锁,返回释放锁成功;如果不相同,返回释放锁失败。

第四方面,提供一种分布式锁的控制装置,包括:

生成单元,用于向锁服务请求数据锁时,随机生成与所述数据锁对应的第一口令;其中,所述第一口令由所述分布式服务生成并用于加密所述数据锁;

发送单元,用于向锁服务发送获取所述数据锁的第一请求;其中,所述第一请求包括唯一标识和所述第一口令;所述唯一标识与所述数据锁一一对应;

接收单元,用于接收所述锁服务反馈的信息获取所述数据锁。

在一种可选的实施方式中,包括:

所述发送单元还用于向锁服务请求释放数据锁时,将与所述数据锁对应的口令添加到请求释放数据锁的请求中。

第五方面,提供一种分布式锁的控制装置,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面、第二方面以及各种可选的实施方式中所述的方法包括的步骤。

第六方面,提供一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面、第二方面以及各种可选的实施方式中所述的方法包括的步骤。

本申请有益效果如下:

本申请实施例提供的方法及装置,通过给数据的锁设置对应的口令(等同于对被使用的锁加密),在某一个服务使用锁时,则该锁当前使用的口令对其它服务是保密的,验证口令正确才允许重新获取锁或者释放锁,从而保证任务执行过程中锁是安全的,不被其它服务重新获取锁或者释放锁。

附图说明

图1为本申请实施例中分布式锁的控制方法中获取锁的流程图;

图2为本申请实施例中分布式锁的控制方法中释放锁的流程图;

图3为本申请实施例中一种分布式锁的控制装置的结构示意图;

图4为本申请实施例中一种分布式锁的控制装置的结构示意图;

图5为本申请实施例中一种分布式锁的控制装置的结构示意图;

图6为本申请实施例中一种分布式锁的控制装置的结构示意图。

具体实施方式

现有技术分布式服务中为了避免多个任务并发,所出现的多个服务同时操作同一个数据的情况,提供了对数据加锁的解决方案。但是对数据加锁后服务还是可以通过一些方式获取到锁,所以仍然存在不安全的问题。为了克服这一问题本申请实施例提供了一种分布式锁的控制方法,该方法的实现原理是:

本申请实施例中,当时一个服务请求获得某个锁(在本申请实施例中锁和数据锁为同一概念)之后,给锁加上一个特定的口令,在某一个服务获取锁后,口令对除某一服务之外的其它服务是保密的,验证口令正确才允许重新获取锁或者释放锁,从而保证任务执行过程中是安全的,不被其它服务重新获取锁或者释放锁。如果其它服务获取锁只有等待锁超时后或者释放锁后再获取锁。这种方法实现了对分布式锁的安全控制,提高了任务执行的安全性,数据的正确性。分布式服务中同时执行任务,多个服务对同一个数据操作加锁,通过对锁设置口令,验证锁的口令,实现对分布式锁的安全控制,保证在锁的到期时间内不被其它服务释放锁和加锁。

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在本申请实施例所提供的方法可以应用于包括多个分布式服务以及锁服务的应用场景中,多任务并发的时候多个分布式服务可能会请求同一个数据所对应的锁,针对该情况以下结合具体的实现方式对本申请实施例所提供的方法进行说明。本申请实施例所提供的方法可以包括请求获取锁以及释放锁两个大的部分,具体可以是:

本申请实施例提供一种分布式锁的控制方法,获取锁的过程可以包括(该方法流程如图1所示):

步骤101,分布式服务向锁服务请求数据锁时,随机生成与所述数据锁对应的第一口令;其中,所述第一口令由所述分布式服务生成并用于加密所述数据锁;

其中还生成唯一标识、超时时间。唯一标识是公开的,每一个数据都有一个唯一标识,并且该唯一标识对所有分布式服务是公开的。该超时时间是根据任务大小预估的时间,可以以毫秒为单位。该第一口令可以随机生成,该口令只有发起锁请求的分布式服务可知,对其它分布式服务是保密。所以该口令可认为是某一分布式服务获取锁后对该锁的加密。

步骤102,分布式服务向锁服务发送获取所述数据锁的第一请求;其中,所述第一请求至少包括唯一标识和所述第一口令;

步骤103,锁服务接收分布式服务获取数据锁的第一请求;

步骤104,锁服务根据所述唯一标识和所述第一口令确定是否给所述分布式服务反馈锁。

其中,具体判断是否反馈锁的判断至少包括:锁服务确定是否存在与所述唯一标识对应的数据锁;如果存在,则判断所述数据锁是否有对应的第二口令;如果有,则确定所述第一口令与第二口令是否相同,如果相同,则向所述分布式服务返回锁。

在该实施例中,如果第一请求所对应的锁不存在第二口令,即该所没有对应口令,那么则可以确定给锁还没有被分布式服务使用,则可以在将该锁返回给发送第一请求的分布式服务的同时,将第一请求中所携带的第一口令添加到锁中,即将所述第一口令用于对该锁进行加密的口令,具体实现可以是:

若所述数据锁没有对应的第二口令,所述锁服务将所述第一口令作为所述数据锁对应的第二口令,并向所述分布式服务返回锁。

在该实施例中,锁服务在接收到第一请求后,根据唯一标识去确定第一请求需要获取的锁是否存在,如果存在,则进一步的判断,锁是否过期以及锁是否被其他分布式服务占用,具体的判断过程是:

锁服务根据唯一标识查找锁。锁服务判断锁是否存在,如果锁不存在,创建锁,然后返回锁。如果锁存在,判断锁的到期时间是否超时,如果锁的到期时间不超时,判断锁对应的第二口令是否和第一请求的第一口令相同,如果相同更新到期时间,返回锁。如果锁的到期时间超时则创建锁,然后返回锁。如果锁的第二口令和第一请求的第二口令不相同,返回空用于指示获取锁失败。

分布式服务收到锁服务返回的结果,如果返回的结果为空,表示加锁失败;如果返回的结果为锁,表示加锁成功。

在创建锁时,可以根据锁服务接收到的第一请求的系统当前时间毫秒数加上第一请求的超时时间的总和作为到期时间,并把第一请求的唯一标识、到期时间和第一口令存储到锁服务中。使得后续如果有分布式服务获取锁时,可以根据创建锁时存储的唯一标识,来确定该锁是否已经有分布式服务占用。

进一步,在获取锁后,本申请实施例所提供的方法还可以实现释放锁,具体方法(方法流程如图2所示)包括:

步骤201,分布式服务向锁服务请求释放数据锁时,将与所述数据锁对应的第三口令添加到请求释放数据锁的第二请求中;

步骤202,锁服务接收分布式服务发送的释放数据锁的第二请求;其中,所述第二请求包括唯一标识和第三口令;

步骤203,锁服务根据所述唯一标识查找所述数据锁;确定查找到的数据锁对应的第四口令是否和所述第三口令相同,如果相同,删除锁,并向分布式服务返回释放锁成功;如果不相同,返回释放锁失败。

在该实施例中,锁服务接收到分布式服务释放锁请求,释放锁请求包括唯一标识和口令。锁服务根据唯一标识查找锁。锁服务判断锁是否存在,如果锁不存在,返回释放锁成功。如果锁存在,判断锁的到期时间是否超时,如果锁的到期时间不超时,判断锁的口令是否和释放锁请求的口令相同,如果相同,删除锁,返回释放锁成功。如果不相同,返回释放锁失败。如果锁的到期时间超时,删除锁,返回释放锁成功。

分布式服务收到锁服务返回的结果,如果返回的结果为释放锁失败,表示锁没有释放,其它分布式服务在锁到期时间内不可以获取锁;如果返回的结果为释放锁成功,表示锁已经释放了,所有分布式服务可以再获取锁,只能有一个分布式服务能够获取到锁,加锁成功。

如图3所示,本申请实施例还提供一种分布式锁的控制装置,包括:

接收单元301,用于接收分布式服务获取数据锁的第一请求;其中,所述第一请求包括唯一标识和第一口令;所述唯一标识与所述数据锁一一对应;所述第一口令由所述分布式服务生成并用于加密所述数据锁;

确定单元302,用于确定是否存在与所述唯一标识对应的数据锁;如果存在,则判断所述数据锁是否有对应的第二口令;如果有,则确定所述第一口令与第二口令是否相同,如果相同,则向所述分布式服务返回锁。

在一种可选的实施方式中,该装置还包括:

所述确定单元还用于若所述第一口令与第二口令不相同,则向所述分布式服务指示信息;其中,所述指示信息用于指示加锁失败。

在一种可选的实施方式中,所述确定单元还用于若所述数据锁没有对应的第二口令,将所述第一口令作为所述数据锁对应的第二口令,并向所述分布式服务返回锁。

在一种可选的实施方式中,包括:

所述接收单元还用于接收分布式服务发送的释放数据锁的第二请求;其中,所述第二请求包括唯一标识和第三口令;

释放单元,用于根据所述唯一标识查找所述数据锁;确定查找到的数据锁对应的第四口令是否和所述第三口令相同,如果相同,删除锁,返回释放锁成功;如果不相同,返回释放锁失败。

如图4所示,本申请实施例还提供另外一种分布式锁的控制装置,包括:

生成单元401,用于向锁服务请求数据锁时,随机生成与所述数据锁对应的第一口令;其中,所述第一口令由所述分布式服务生成并用于加密所述数据锁;

发送单元402,用于向锁服务发送获取所述数据锁的第一请求;其中,所述第一请求包括唯一标识和所述第一口令;所述唯一标识与所述数据锁一一对应;

接收单元403,用于接收所述锁服务反馈的信息获取所述数据锁。

在一种可选的实施方式中,包括:

所述发送单元还用于向锁服务请求释放数据锁时,将与所述数据锁对应的口令添加到请求释放数据锁的请求中。

基于同一发明构思,本申请实施例还提供了一种计算设备,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述分布式锁的控制的方法。

基于同一发明构思,本申请实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述分布式锁的控制的方法。

关于上述实施例中的分布式锁的控制装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本公开各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

图5是根据一示例性实施例示出的一种分布式锁的控制装置的结构示意图,如图5所示,本公开实施例中的电子设备包括至少一个处理器501,以及与至少一个处理器501连接的存储器502和通信接口503,本公开实施例中不限定处理器501与存储器502之间的具体连接介质,图5中是以处理器501和存储器502之间通过总线500连接为例,总线500在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线500可以分为地址总线、数据总线、控制总线等,为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

在本公开实施例中,存储器502存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,可以执行前述的分布式锁的控制方法中所包括的步骤。

其中,处理器501是电子设备的控制中心,可以利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的指令以及调用存储在存储器502内的数据,电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器501可包括一个或多个处理单元,处理器501可集成应用处理器和调制解调处理器,其中,处理器501主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。在一些实施例中,处理器501和存储器502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器501可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本公开实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本公开实施例中的存储器502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通信接口503是能够用于进行通信的传输接口,电子设备可以通过通信接口503接收数据或者发送数据,例如可以通过通信接口503将输入的待识别图像发送给图像处理服务器,并且还可以通过该通信接口503接收图像处理服务器发送的对待识别图像的识别结果。

参见图6所示的分布式锁的控制装置的进一步地的结构示意图,该电子设备还包括帮助电子设备内的各个器件之间传输信息的基本输入/输出系统(i/o系统)601、用于存储操作系统602、应用程序603和其他程序模块604的大容量存储设备605。

基本输入/输出系统601包括有用于显示信息的显示器606和用于用户输入信息的诸如鼠标、键盘之类的输入设备607。其中显示器606和输入设备607都通过连接到系统总线500的基本输入/输出系统601连接到处理器501。所述基本输入/输出系统601还可以包括输入输出控制器以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备605通过连接到系统总线500的大容量存储控制器(未示出)连接到处理器501。所述大容量存储设备605及其相关联的计算机可读介质为该服务器包提供非易失性存储。也就是说,大容量存储设备605可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

根据本公开的各种实施例,该电子设备包还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即该电子设备可以通过连接在所述系统总线500上的通信接口503连接到网络609,或者说,也可以使用通信接口503来连接到其他类型的网络或远程计算机系统(未示出)。

基于上述实施例,本公开实施例还提供了一种包括指令的存储介质,例如包括指令的存储器,该指令可以由如图5中所示的分布式锁的控制装置中的处理器执行完成上述任意一项分布式锁的控制方法或任意一项分布式锁的控制方法任一可能涉及的方法。

在一些可能的实施方式中,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

在一些可能的实施方式中,本申请实施例提供的图像识别方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文述描述的根据本公开各种示例性实施方式的图像识别方法中的步骤。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1