CN107544850A - 用于控制分布式锁的方法和装置 - Google Patents

用于控制分布式锁的方法和装置 Download PDF

Info

Publication number
CN107544850A
CN107544850A CN201610500055.8A CN201610500055A CN107544850A CN 107544850 A CN107544850 A CN 107544850A CN 201610500055 A CN201610500055 A CN 201610500055A CN 107544850 A CN107544850 A CN 107544850A
Authority
CN
China
Prior art keywords
distributed lock
lock
locking
service end
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610500055.8A
Other languages
English (en)
Inventor
陈兴波
丁雪丰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI YOUYANG NEW MEDIA INFORMATION TECHNOLOGY Co.,Ltd.
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201610500055.8A priority Critical patent/CN107544850A/zh
Publication of CN107544850A publication Critical patent/CN107544850A/zh
Pending legal-status Critical Current

Links

Abstract

本申请公开了一种用于控制分布式锁的方法和装置。所述方法的一具体实施方式包括:向服务端发送分布式锁的加锁请求;响应于从服务端接收到加锁成功消息,执行受分布式锁保护的业务操作,其中,加锁成功消息是在所述服务端确定分布式锁未被占用的情况下返回的;响应于从服务端接收到加锁失败消息或在预设的第一时间段内未接收到服务端返回的消息,继续向服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送加锁请求:从服务端接收到加锁成功消息,自首次向服务端发送加锁请求起经过了预设的第二时间段;其中,加锁失败消息是在服务端确定分布式锁被占用的情况下返回的。该实施方式实现了简单方便的控制分布式锁。

Description

用于控制分布式锁的方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及互联网技术领域,具体涉及一种用于控制分布式锁的方法和装置。
背景技术
在多系统进行交互的情况下,有时需要对系统间相关联的操作进行协调,使得系统的操作能同步或互斥执行。
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。现有的系统一致性协调方案中,一般通过一致性协调工具(例如,Zookeeper软件、Chubby组件等)对分布式锁进行控制,其中,Zookeeper软件是一个为分布式应用提供一致性服务的软件;Chubby组件是用于解决分布式一致性问题的组件。现有的一致性协调方案要求客户端和服务端之间保持连接,客户端和服务端之间协议复杂,需要使用专用的客户端进行交互;服务端的Zookeeper集群和Chubby集群写操作只在主节点进行,使用ZAB协议(ZooKeeper Atomic Broadcast,原子消息广播协议)或Paxos算法(Leslie Lamport于1990年提出的一种基于消息传递的一致性算法)进行提交,需要集群中过半节点提交成功,整个集群的提交工作才能正常完成,即现有的一致性协调方法普遍存在对客户端和服务端的要求较多,交互复杂的问题。
发明内容
本申请的目的在于提出一种用于控制分布式锁的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于控制分布式锁的方法,所述方法包括:向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。
在一些实施例中,所述方法还包括:响应于受所述分布式锁保护的业务操作的执行完成,向所述服务端发送所述分布式锁的解锁请求,所述解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:在所述业务操作的执行期间,间隔预设第三时间段向所述服务端发送对所述分布式锁的延期解锁请求,所述延期解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:响应于从所述服务端接收到轮询消息,向所述服务端发送所述分布式锁的延期解锁请求或解锁请求。
第二方面,本申请提供一种用于控制分布式锁的方法,所述方法包括:从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断所述加锁请求指示的所述分布式锁是否被占用;响应于确定所述加锁请求指示的所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;响应于确定所述加锁请求指示的所述分布式锁被占用,向所述客户端发送加锁失败消息。
在一些实施例中,所述方法还包括:响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,所述解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述方法还包括:响应于从所述客户端接收所述分布式锁的延期解锁请求,对所述延期解锁请求指示的所述分布式锁的过期时间进行更新,所述延期解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述方法还包括:在所述分布式锁的过期时间之前,向所述客户端发送轮询消息。
在一些实施例中,所述判断所述加锁请求指示的分布式锁是否被占用,包括:查询预存的占用锁列表中是否存在所述加锁请求指示的所述分布式锁的标识,所述占用锁列表包括各个被占用的所述分布式锁的标识;响应于所述占用锁列表存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁被占用;响应于所述占用锁列表不存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁未被占用,并将所述加锁请求指示的分布式锁的标识加入所述占用锁列表中。
在一些实施例中,所述响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,包括:将所述解锁请求指示的所述分布式锁的标识从所述占用锁列表中删除。
第三方面,本申请提供一种用于控制分布式锁的装置,所述装置包括:加锁请求发送单元,配置用于向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;业务操作执行单元,配置用于响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;加锁请求循环单元,配置用于响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。
在一些实施例中,所述装置还包括:解锁请求发送单元,配置用于响应于受到所述分布式锁保护的业务操作的执行完成,向所述服务端发送所述分布式锁的解锁请求,所述解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述业务操作执行单元进一步配置用于:在所述业务操作的执行期间,间隔预设第三时间段向所述服务端发送对所述分布式锁的延期解锁请求,所述延期解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述业务操作执行单元进一步配置用于:响应于从所述服务端接收到轮询消息,向所述服务端发送所述分布式锁的延期解锁请求或解锁请求。
第四方面,本申请提供一种用于控制分布式锁的装置,所述装置包括:加锁请求接收单元,配置用于从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断单元,配置用于判断所述加锁请求指示的所述分布式锁是否被占用;成功消息发送单元,配置用于响应于确定所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;失败消息发送单元,配置用于响应于确定所述分布式锁被占用,向所述客户端发送加锁失败消息。
在一些实施例中,所述装置还包括:解锁单元,配置用于响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,所述解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述装置还包括:延期单元,配置用于响应于从所述客户端接收所述分布式锁的延期解锁请求,对所述延期解锁请求指示的所述分布式锁的过期时间进行更新,所述延期解锁请求包括:所述分布式锁的标识。
在一些实施例中,所述装置还包括:轮询单元,配置用于在所述分布式锁的过期时间之前,向所述客户端发送轮询消息。
在一些实施例中,所述判断单元包括:查询模块,配置用于查询预存的占用锁列表中是否存在所述加锁请求指示的所述分布式锁的标识,所述占用锁列表包括各个被占用的所述分布式锁的标识;第一确定模块,配置用于响应于所述占用锁列表存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁被占用;第二确定模块,配置用于响应于所述占用锁列表不存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁未被占用,并将所述加锁请求指示的分布式锁的标识加入所述占用锁列表中。
在一些实施例中,所述解锁单元进一步配置用于:将所述解锁请求指示的所述分布式锁的标识从所述占用锁列表中删除。
本申请提供的用于控制分布式锁的方法和装置,通过向服务端发送加锁请求,并根据服务端返回的加锁成功或加锁失败消息,进行下一步的操作,对分布式锁的控制方案简单,易实现。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的用于控制分布式锁的方法的一个实施例的流程图;
图3是根据本申请的用于控制分布式锁的方法的又一个实施例的流程图;
图4是根据本申请的用于控制分布式锁的方法的又一个实施例的流程图;
图5是根据本申请的用于控制分布式锁的方法的又一个实施例的流程图;
图6是根据本申请的用于控制分布式锁的装置的一个实施例的结构示意图;
图7是根据本申请的用于控制分布式锁的装置的又一个实施例的结构示意图;
图8是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于控制分布式锁的方法或用于控制分布式锁的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如分布式锁控制应用等。
终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上安装的分布式锁控制应用提供支持的分布式锁控制服务器。分布式锁控制服务器可以对接收到的终端设备发送的加锁请求、解锁请求等数据进行分析等处理,并将处理结果(例如加锁成功消息、解锁成功消息)反馈给终端设备。
需要说明的是,本申请实施例所提供的用于控制分布式锁的方法既可以由终端设备101、102、103执行,也可由服务器105执行,相应地,用于控制分布式锁的装置既可设置于终端设备101、102、103,也可设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的用于控制分布式锁的方法的一个实施例的流程200。本实施例的用于控制分布式锁的方法,包括以下步骤:
步骤201,向服务端发送分布式锁的加锁请求。
在本实施例中,用于控制分布式锁的方法运行于其上的电子设备(如图1中的终端设备101、102、103)可通过有线连接或无线连接的方式向服务端(如图1中的服务器105)发送分布式锁的加锁请求。其中,分布式锁的加锁请求包括了终端所要请求的分布式锁的标识。实践中,分布式锁的标识可以是分布式锁的编号,也可以是表示指纹信息的字符串等。上述加锁请求中还可以包括分布式锁的过期时间,分布式锁的过期时间是客户端根据业务操作预设的一个值。
需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
步骤202,响应于从服务端接收到加锁成功消息,执行受分布式锁保护的业务操作。
本实施例中,服务端接收到客户端发送的加锁请求后,根据加锁请求中包含的分布式锁的标识判断该分布式锁是否被占用。在该分布式锁未被占用时,返回给客户端加锁成功消息。客户端接收到该加锁成功消息后,执行受该分布式锁保护的业务操作。
在本实施例的一些可选的实现方式中,在执行上述业务操作期间,间隔预设第三时间段向服务端发送对分布式锁的延期解锁请求。其中,延期解锁请求包括:分布式锁的标识。间隔预设第三时间段向服务端发送延期解锁请求,实践中,客户端可以将正在占用的所有分布式锁的延期解锁请求以心跳机制向服务端发送。服务端接收到延期解锁请求后对分布式锁的过期时间进行更新。延期解锁请求中还可以包括:更新的分布式锁的过期时间,服务端在更新时根据更新的分布式锁的过期时间对分布式锁进行更新。服务端也可以在收到延期解锁请求后,将分布式锁的过期时间延迟一个预设的时间。当客户端宕机时,无法间隔预设第三时间段向服务端发送对分布式锁的延期解锁请求,服务端会在分布式锁过期时间时解除分布式锁。
在本实施例的一些可选的实现方式中,在执行上述业务操作期间,接收到服务端发送的轮询消息后,如果被分布式锁保护的业务操作执行完成,向服务端发送解锁请求;如果被分布式锁保护的业务操作执行未完成,向服务端发送延期解锁请求。
步骤202’,响应于从服务端接收到加锁失败消息或在预设的第一时间段内未接收到服务端返回的消息,继续向服务端发送加锁请求并且在满足以下条件之一的情况下停止发送加锁请求:从服务端接收到加锁成功消息,自首次向服务端发送加锁请求起经过了预设的第二时间段。
本实施例中,服务端根据加锁请求中包含的分布式锁的标识确定该分布式锁已被占用后,向客户端发送加锁失败消息。或者服务端在已确定分布式锁未被占用或已被占用后,向客户端返回加锁成功消息或加锁失败消息之前,由于网络连接断开或者网络延迟或者其它因素导致客户端在预设的第一时间段内没有接收到服务端返回的任何消息。客户端在接收到此加锁失败消息后或者在预设的第一时间段内未接收到服务端返回的任何消息后,会持续的向服务端发送加锁请求,直到获取到上述加锁请求指示的分布式锁或者加锁请求超时,才会停止向服务端发送加锁请求。需要指出的是,客户端获取到加锁请求指示的分布式锁时,即接收到服务端返回的加锁成功消息。加锁请求超时是指自客户端首次向服务端发送加锁请求的时刻起,经过预设的第二时间段后仍未获取到加锁请求指示的分布式锁。本申请的上述实施例提供的用于控制分布式锁的方法,通过向服务端发送加锁请求,并根据服务端返回的加锁成功或加锁失败消息,进行下一步的操作,对分布式锁的控制方案简单,易实现。
进一步参考图3,其示出了根据本申请的用于控制分布式锁的方法的又一个实施例的流程300。本实施例的用于控制分布式锁的方法,包括以下步骤:
步骤301,向服务端发送分布式锁的加锁请求。
在本实施例中,用于控制分布式锁的方法运行于其上的电子设备(如图1中的终端设备101、102、103)可通过有线连接或无线连接的方式向服务端(如图1中的服务器105)发送分布式锁的加锁请求。其中,分布式锁的加锁请求包括了终端所要请求的分布式锁的标识。
步骤302,从服务端接收到加锁成功消息。
本实施例中,服务端接收到客户端发送的加锁请求后,根据加锁请求中包含的分布式锁的标识判断该分布式锁是否被占用。在该分布式锁未被占用时,返回给客户端加锁成功消息。
步骤303,执行受分布式锁保护的业务操作,向服务端发送延期解锁请求。
客户端接收到该加锁成功消息后,执行受该分布式锁保护的业务操作。并且在业务操作的执行过程中,向服务端发送延期解锁请求,可以防止正在执行的业务操作占用的锁被解除,即分布式锁被“过早释放”的现象发生,从而避免客户端中本来要互斥的操作并行执行。在实践中,客户端间隔预设的第三时间段(如心跳机制)向服务端发送上述延期解锁请求。
步骤304,判断业务操作是否执行完成。
客户端根据业务操作是否执行完成确定下一步的操作,在业务操作执行完成时,进行步骤305;在业务操作未完成时,返回执行步骤303。
步骤305,向服务端发送解锁请求。
在业务操作完成时,向服务端发送解锁请求,以及时将占用的锁释放。
步骤306,结束。
步骤302’,从服务端接收加锁失败消息。
本实施例中,服务端根据加锁请求中包含的分布式锁的标识确定该分布式锁已被占用后,向客户端发送加锁失败消息。
步骤302”,在预设的第一时间段内,未接收到服务端返回的消息。
本实施例中,为客户端设置了一个“等待时间”,即向服务端发送加锁请求后,如果在预设的第一时间段内,仍然未接收到服务端返回的消息(包括加锁成功消息和加锁失败消息),则默认为服务端未接收到客户端发送的加锁请求,因此会继续向服务端发送加锁请求。
步骤303’,判断是否超时。
客户端在首次向服务端发送加锁请求时,同时预设一个第二时间段,作为加锁请求的超时时间。自客户端首次向服务端发送加锁请求开始计时,在接收到加锁失败消息后或在预设第一时间段内未接收到服务端返回的消息,每向服务端发送一次加锁请求消息之前都进行超时判断,并根据判断结果执行不同的操作。
可以理解的是,本实施例中,预设的第二时间段大于预设的第一时间段,获得的分布式锁的过期时间大于预设的第三时间段。
本实施例中,当客户端判断上述加锁请求超时后,将结束此次对分布式锁的申请,即执行步骤306;当客户端判断上述加锁请求未超时时,返回执行步骤301。
本实施例中,当客户端向服务端发送加锁请求后,服务端在确定上述加锁请求指示的分布式锁未被占用的情况下,会向客户端返回加锁成功消息。但如果在服务端返回加锁成功消息前,由于网络连接断开或网络延迟或者其它可能造成客户端无法在预设的第一时间段内接收到服务端返回的加锁成功消息时,客户端依然向服务端发送加锁请求。这样客户端实际上已获得了上述加锁请求指示的分布式锁,但是因为其未接收到服务端返回的加锁成功消息,所以一直向服务端发送加锁请求。为了解决这种情况下客户端一直占用分布式锁却未执行业务操作的情况,即避免出现“死锁”的情况出现,服务端由于一直不能接收到客户端发送的延期解锁请求,因此,会在上述分布式锁的过期时间时将上述分布式锁解除,防止由于上述分布式锁一直被占用而导致业务操作阻塞的情况。
本实施例在实践中,客户端与服务端之间以RESTful的接口进行请求及消息的传递,RESTful是指满足REST的应用程序或设计,其中,REST(Representational State Transfer)是一种软件架构风格。
本申请的上述实施例提供的用于控制分布式锁的方法,客户端与服务端之间的一致性协调方案执行简单,提高了服务端的工作效率,能够满足网络系统中客户端与服务端之间的分布式锁协调需求,且支持不同平台、不同语言的客户端和服务端之间的交互。
进一步参考图4,示出了根据本申请的用于控制分布式锁的方法的又一个实施例的流程400。本实施例的用于控制分布式锁的方法,包括以下步骤:
步骤401,从客户端接收分布式锁的加锁请求。
在本实施例中,用于控制分布式锁的方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式从客户端(如图1所示的终端101、102、103)接收分布式锁的加锁请求,其中,分布式锁的加锁请求包括了终端所要请求的分布式锁的标识。实践中,分布式锁的标识可以是分布式锁的编号,也可以是表示指纹信息的字符串等。上述加锁请求中还可以包括分布式锁的过期时间,分布式锁的过期时间是客户端根据业务操作预设的一个值。
步骤402,判断加锁请求指示的分布式锁是否被占用。
客户端根据分布式锁的标识,向服务端请求分布式锁,服务端首先判断客户端请求的分布式锁是否被占用,然后进行后续操作。在该分布式锁未被占用时,执行步骤403;在该分布式锁被占用时,执行步骤403’。
步骤403,向客户端发送加锁成功消息。
加锁请求指示的分布式锁未被占用时,将该分布式锁分配给客户端,并向客户端返回加锁成功消息,以供客户端执行受分布式锁保护的业务操作。
步骤403’,向客户端发送加锁失败消息。
加锁请求指示的分布式锁被占用时,服务端无法将上述分布式锁分配给客户端,因此,服务端向客户端返回加锁失败消息。
本申请的上述实施例提供的用于控制分布式锁的方法,通过判断客户端发送的加锁请求所指示的分布式锁是否被占用,从而完成对分布式锁的控制,交互过程简单,提高了工作效率。
进一步参考图5,示出了根据本申请的用于控制分布式锁的方法的又一个实施例的流程500。本实施例的用于控制分布式锁的方法,包括以下步骤:
步骤501,从客户端接收分布式锁的加锁请求。
在本实施例中,用于控制分布式锁的方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式从客户端(如图1所示的终端101、102、103)接收分布式锁的加锁请求,其中,分布式锁的加锁请求包括了终端所要请求的分布式锁的标识。实践中,分布式锁的标识可以是分布式锁的编号,也可以是表示指纹信息的字符串等。上述加锁请求中还可以包括分布式锁的过期时间,分布式锁的过期时间可以是客户端根据业务操作预设的一个值,也可以是默认的值。
步骤502,判断加锁请求指示的分布式锁是否被占用。
客户端根据分布式锁的标识,向服务端请求分布式锁,服务端首先判断客户端请求的分布式锁是否被占用,然后进行后续操作。在该分布式锁未被占用时,执行步骤503;在该分布式锁被占用时,执行步骤503’。
在本实施例的一些可选的实现方式中,步骤502具体包括流程500中未示出的以下子步骤:
查询预存的占用锁列表中是否存在加锁请求指示的分布式锁的标识;响应于占用锁列表存在加锁请求指示的分布式锁的标识,确定加锁请求指示的分布式锁被占用;响应于占用锁列表存在加锁请求指示的分布式锁的标识,确定加锁请求指示的分布式锁未被占用,并将加锁请求指示的分布式锁的标识加入占用锁列表中。
其中,占用锁列表包括各被占用的分布式锁的标识。
当占用锁列表中存在加锁请求指示的分布式锁的标识时,则认定加锁请求指示的分布式锁被占用。当占用锁列表中不存在加锁请求指示的分布式锁的标识时,则认定加锁请求指示的分布式锁未被占用,并将上述标识加入到占用锁列表中,以显示此分布式锁被占用。
在本实施例一个可选的实施方式中,上述预存的占用锁列表可存储在数据库中,也可以存储在Redis数据库中。
实践中,预存的占用锁列表存储在数据库时,服务端在加锁时,向占用锁列表中加入加锁请求指示的分布式锁的标识,即将分布式锁占用;服务端在解锁时,将占用锁列表中的解锁请求指示的分布式锁的标识删除,即将分布式锁解除;服务端在更新分布式锁的过期时间时,更新数据库中相应记录分布式锁过期时间字段的值,即能够将分布式锁的过期时间更新。
实践中,预存的占用锁列表存储在Redis数据库时,Redis数据库需要部署多个Replication(从机)组成Redis集群,调用Redis服务器执行指令时,需要先用一致性Hash算法选择固定的Redis Replication。服务端在加锁时,利用原子操作为指定的lock key(分布式锁的标识)设置一个value(赋值),如果赋值成功,则表示加锁成功,如果赋值失败,则表示加锁失败;服务端在解锁时,del(删除)解锁请求指示的lock key,即可解除分布式锁;服务端在更新分布式锁的过期时间时,重新指定lock key的value就实现分布式锁的过期时间更新。
步骤503,向客户端发送加锁成功消息。
加锁请求指示的分布式锁未被占用时,将该分布式锁分配给客户端,并向客户端返回加锁成功消息,以供客户端执行受分布式锁保护的业务操作。
步骤504,判断是否从客户端接收到解锁请求。
客户端在占用分布式锁的过程中,会向服务端发送两种请求:延期解锁请求和解锁请求。即,如果服务端从客户端没有收到解锁请求,那么认定服务端收到的是延期解锁请求。如果服务端从客户端收到解锁请求,则执行步骤505;如果服务端没有从客户端收到解锁请求,则执行步骤505’。
步骤505,解除解锁请求指示的分布式锁。
收到客户端发送的解锁请求后,服务端解除解锁请求指示的分布式锁,以供其它客户端或此客户端在需要时再次申请此分布式锁。
在本实施例一个可选的实施方式中,响应于从客户端接收分布式锁的解锁请求,解除解锁请求指示的分布式锁,包括:将解锁请求指示的分布式锁的标识从占用锁列表中删除。
在解除分布式锁时,将占用锁列表中对应的分布式锁标识删除,以显示此分布式锁不再被占用。
步骤505’,更新分布式锁的过期时间。
在分布式锁占用期间,从客户端接收到的不是解锁请求时,认定接收到的是延期解锁请求,服务端在接收到延期解锁请求后,会更新分布式锁的过期时间。可以理解的是,服务端可在接收到延期解锁请求后,默认的将分布式锁的过期时间延迟一个预设的固定值。延期解锁请求中可以包括更新的分布式锁的过期时间,服务端在收到上述延期解锁请求后,根据请求中指定的时间来更新分布式锁的过期时间。
在服务端更新完毕分布式锁的过期时间后,会返回执行步骤504。
步骤503’,向客户端发送加锁失败消息。
加锁请求指示的分布式锁被占用时,向客户端返回加锁成功消息。
步骤506,结束。
服务端在向客户端发送加锁失败消息后或解除分布式锁后会结束此次流程。
在本实施例的一些可选的实现方式中,服务端还可以在分布式锁过期之前,向客户端发送轮询消息,以确定客户端占用的分布式锁是否需要延期。如果此分布式锁需要延期,则服务端接收到延期解锁请求,对此分布式锁的过期时间进行更新。如果此分布式锁不需要延期,则服务端接收到解锁请求,解除此分布式锁。客户端宕机时,服务端发送完轮询消息后,接收不到客户端返回的解锁请求或延期解锁请求,则会在分布式锁过期时解除分布式锁。
本实施例在实践中,客户端与服务端之间以RESTful的接口进行请求及消息的传递,RESTful是指满足REST的应用程序或设计,其中,REST(Representational State Transfer)是一种软件架构风格。
本申请的上述实施例提供的用于控制分布式锁的方法,接收到客户端发送的请求后,对分布式锁执行相应的操作,简化了与客户端之间的交互方式,并且能够避免客户端在执行业务操作的过程中,过早的解除分布式锁。
进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种用于控制分布式锁的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种终端设备中。
如图6所示,本实施例的用于控制分布式锁的装置600,包括:加锁请求发送单元601、业务操作执行单元602和加锁请求循环单元602’。其中,加锁请求发送单元601配置用于向服务端发送分布式锁的加锁请求,加锁请求包括:分布式锁的标识;业务操作执行单元602,配置用于响应于从服务端接收到加锁成功消息,执行受分布式锁保护的业务操作,其中,加锁成功消息是在服务端确定分布式锁未被占用的情况下返回的;加锁请求循环单元602’,配置用于响应于从服务端接收到加锁失败消息或在预设的第一时间段内未接收到服务端返回的消息,继续向服务端发送加锁请求并且在满足以下条件之一的情况下停止发送加锁请求:从服务端接收到加锁成功消息,自首次向服务端发送加锁请求起经过了预设的第二时间段;其中,加锁失败消息是在服务端确定分布式锁被占用的情况下返回的。
在本实施例中,加锁请求发送单元601可以通过有线连接方式或者无线连接方式向服务端发送加锁请求,其中,上述加锁请求包括了分布式锁的标识。
在本实施例中,业务操作执行单元602在接收到服务端返回的加锁成功消息后,执行分布式锁保护的业务操作。加锁请求循环单元602’在接收到服务端返回的加锁失败消息后或在预设的第一时间段内未接收到服务端返回的消息,继续向服务端发送加锁请求,直至接收到服务端返回的加锁成功消息或加锁请求超时。需要指出的是,客户端获取到加锁请求指示的分布式锁时,即接收到服务端返回的加锁成功消息。加锁请求超时是指自客户端首次向服务端发送加锁请求的时刻起,经过预设的第二时间段后仍未获取到加锁请求指示的分布式锁。
在本实施例的一些可选的实现方式中,用于控制分布式锁的装置600还包括:解锁请求发送模块(未示出),配置用于响应于受到分布式锁保护的业务操作的执行完成,向服务端发送分布式锁的解锁请求。其中,解锁请求包括分布式锁的标识。在业务操作完成时,向服务端发送解锁请求,以及时将占用的锁释放。
在本实施例的一些可选的实现方式中,业务操作执行单元602进一步配置用于:在业务操作的执行期间,间隔预设第三时间向服务端发送对分布式锁的延期解锁请求,延期解锁请求包括:分布式锁的标识。在业务操作未完成时,向服务端发送延期解锁请求,可以防止正在执行的业务操作占用的锁被解除,即分布式锁被“过早释放”的现象发生,从而避免客户端中本来要互斥的操作并行执行。
在本实施例的一些可选的实现方式中,业务操作执行单元602进一步配置用于:响应于从服务端接收轮询消息,向服务端发送分布式锁的延期解锁请求或解锁请求。如果被分布式锁保护的业务操作执行完成,向服务端发送解锁请求;如果被分布式锁保护的业务操作执行未完成,向服务端发送延期解锁请求。
本申请的上述实施例提供的用于控制分布式锁的装置,对分布式锁的控制方案简单,易实现。
进一步参考图7,作为对上述各图所示方法的实现,本申请提供了一种用于控制分布式锁的装置的又一个实施例,该装置实施例与图4所示的方法实施例相对应,该装置具体可以应用于各种服务器中。
如图7所示,本实施的用于控制分布式锁的装置700,包括:加锁请求接收单元701、判断单元702、成功消息发送单元703及失败消息发送单元703’。其中,加锁请求接收单元701,配置用于从客户端接收分布式锁的加锁请求,加锁请求包括:分布式锁的标识;判断单元702,配置用于判断加锁请求指示的分布式锁是否被占用;成功消息发送单元703,配置用于响应于确定分布式锁未被占用,向客户端发送加锁成功消息,以供客户端执行受分布式锁保护的业务操作;失败消息发送单元703’,配置用于响应于确定分布式锁被占用,向客户端发送加锁失败消息。
本申请的上述实施例提供的用于控制分布式锁的装置,通过判断客户端发送的加锁请求所指示的分布式锁是否被占用,从而完成对分布式锁的控制,交互过程简单,提高了工作效率。
在本实施例的一些可选的实现方式中,控制装置700还包括:解锁单元(未示出),配置用于响应于从客户端接收分布式锁的解锁请求,解除解锁请求指示的分布式锁,解锁请求包括:分布式锁的标识。
在本实施例的一些可选的实现方式中,控制装置700还包括:延期单元(未示出),配置用于响应于从客户端接收分布式锁的延期解锁请求,对延期解锁请求指示的分布式锁的过期时间进行更新,延期解锁请求包括:分布式锁的标识。
在本实施例的一些可选的实现方式中,控制装置700还包括:轮询单元(未示出),配置用于在分布式锁的过期时间之前,向客户端发送轮询消息。
在本实施例的一些可选的实现方式中,判断单元702进一步包括控制装置700中未示出的以下模块:查询模块,配置用于查询预存的占用锁列表中是否存在加锁请求指示的分布式锁的标识,占用锁列表包括各个被占用的分布式锁的标识;第一确定模块,配置用于响应于占用锁列表存在加锁请求指示的分布式锁的标识,确定加锁请求指示的分布式锁被占用;第二确定模块,配置用于响应于占用锁列表不存在加锁请求指示的分布式锁的标识,确定加锁请求指示的分布式锁未被占用,并将加锁请求指示的分布式锁的标识加入占用锁列表中。
在本实施例的一些可选的实现方式中,解锁单元进一步配置用于:将解锁请求指示的分布式锁的标识从占用锁列表中删除。
本申请的上述实施例提供的用于控制分布式锁的装置,通过判断客户端发送的加锁请求所指示的分布式锁是否被占用,从而完成对分布式锁的控制,交互过程简单,提高了工作效率。
下面参考图8,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统800的结构示意图。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括加锁请求发送单元、业务操作执行单元和加锁请求循环单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,加锁请求发送单元还可以被描述为“向服务端发送分布式锁的加锁请求的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。或者从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断所述加锁请求指示的所述分布式锁是否被占用;响应于确定所述加锁请求指示的所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;响应于确定所述加锁请求指示的所述分布式锁被占用,向所述客户端发送加锁失败消息。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (20)

1.一种用于控制分布式锁的方法,其特征在于,所述方法包括:
向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;
响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;
响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。
2.根据权利要求1所述的控制方法,其特征在于,所述方法还包括:
响应于受所述分布式锁保护的业务操作的执行完成,向所述服务端发送所述分布式锁的解锁请求,所述解锁请求包括:所述分布式锁的标识。
3.根据权利要求1所述的控制方法,其特征在于,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:
在所述业务操作的执行期间,间隔预设第三时间段向所述服务端发送对所述分布式锁的延期解锁请求,所述延期解锁请求包括:所述分布式锁的标识。
4.根据权利要求1所述的控制方法,其特征在于,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:
响应于从所述服务端接收到轮询消息,向所述服务端发送所述分布式锁的延期解锁请求或解锁请求。
5.一种用于控制分布式锁的方法,其特征在于,所述方法包括:
从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;
判断所述加锁请求指示的所述分布式锁是否被占用;
响应于确定所述加锁请求指示的所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;
响应于确定所述加锁请求指示的所述分布式锁被占用,向所述客户端发送加锁失败消息。
6.根据权利要求5所述的控制方法,其特征在于,所述方法还包括:
响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,所述解锁请求包括:所述分布式锁的标识。
7.根据权利要求5所述的控制方法,其特征在于,所述方法还包括:
响应于从所述客户端接收所述分布式锁的延期解锁请求,对所述延期解锁请求指示的所述分布式锁的过期时间进行更新,所述延期解锁请求包括:所述分布式锁的标识。
8.根据权利要求5所述的控制方法,其特征在于,所述方法还包括:
在所述分布式锁的过期时间之前,向所述客户端发送轮询消息。
9.根据权利要求6所述的控制方法,其特征在于,所述判断所述加锁请求指示的分布式锁是否被占用,包括:
查询预存的占用锁列表中是否存在所述加锁请求指示的所述分布式锁的标识,所述占用锁列表包括各个被占用的所述分布式锁的标识;
响应于所述占用锁列表存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁被占用;
响应于所述占用锁列表不存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁未被占用,并将所述加锁请求指示的分布式锁的标识加入所述占用锁列表中。
10.根据权利要求9所述的控制方法,其特征在于,所述响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,包括:
将所述解锁请求指示的所述分布式锁的标识从所述占用锁列表中删除。
11.一种用于控制分布式锁的装置,其特征在于,所述装置包括:
加锁请求发送单元,配置用于向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;
业务操作执行单元,配置用于响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;
加锁请求循环单元,配置用于响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。
12.根据权利要求11所述的控制装置,其特征在于,所述装置还包括:
解锁请求发送单元,配置用于响应于受到所述分布式锁保护的业务操作的执行完成,向所述服务端发送所述分布式锁的解锁请求,所述解锁请求包括:所述分布式锁的标识。
13.根据权利要求11所述的控制装置,其特征在于,所述业务操作执行单元进一步配置用于:
在所述业务操作的执行期间,间隔预设第三时间段向所述服务端发送对所述分布式锁的延期解锁请求,所述延期解锁请求包括:所述分布式锁的标识。
14.根据权利要求11所述的控制装置,其特征在于,所述业务操作执行单元进一步配置用于:
响应于从所述服务端接收到轮询消息,向所述服务端发送所述分布式锁的延期解锁请求或解锁请求。
15.一种用于控制分布式锁的装置,其特征在于,所述装置包括:
加锁请求接收单元,配置用于从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;
判断单元,配置用于判断所述加锁请求指示的所述分布式锁是否被占用;
成功消息发送单元,配置用于响应于确定所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;
失败消息发送单元,配置用于响应于确定所述分布式锁被占用,向所述客户端发送加锁失败消息。
16.根据权利要求15所述的控制装置,其特征在于,所述装置还包括:
解锁单元,配置用于响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,所述解锁请求包括:所述分布式锁的标识。
17.根据权利要求15所述的控制装置,其特征在于,所述装置还包括:
延期单元,配置用于响应于从所述客户端接收所述分布式锁的延期解锁请求,对所述延期解锁请求指示的所述分布式锁的过期时间进行更新,所述延期解锁请求包括:所述分布式锁的标识。
18.根据权利要求15所述的控制装置,其特征在于,所述装置还包括:
轮询单元,配置用于在所述分布式锁的过期时间之前,向所述客户端发送轮询消息。
19.根据权利要求16所述的控制方法,其特征在于,所述判断单元包括:
查询模块,配置用于查询预存的占用锁列表中是否存在所述加锁请求指示的所述分布式锁的标识,所述占用锁列表包括各个被占用的所述分布式锁的标识;
第一确定模块,配置用于响应于所述占用锁列表存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁被占用;
第二确定模块,配置用于响应于所述占用锁列表不存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁未被占用,并将所述加锁请求指示的分布式锁的标识加入所述占用锁列表中。
20.根据权利要求19所述的控制装置,其特征在于,所述解锁单元进一步配置用于:
将所述解锁请求指示的所述分布式锁的标识从所述占用锁列表中删除。
CN201610500055.8A 2016-06-29 2016-06-29 用于控制分布式锁的方法和装置 Pending CN107544850A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610500055.8A CN107544850A (zh) 2016-06-29 2016-06-29 用于控制分布式锁的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610500055.8A CN107544850A (zh) 2016-06-29 2016-06-29 用于控制分布式锁的方法和装置

Publications (1)

Publication Number Publication Date
CN107544850A true CN107544850A (zh) 2018-01-05

Family

ID=60966522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610500055.8A Pending CN107544850A (zh) 2016-06-29 2016-06-29 用于控制分布式锁的方法和装置

Country Status (1)

Country Link
CN (1) CN107544850A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108540533A (zh) * 2018-03-14 2018-09-14 聚好看科技股份有限公司 一种应答请求的方法和装置
CN109324877A (zh) * 2018-08-15 2019-02-12 北京天元创新科技有限公司 数据访问的方法及服务器
CN109495202A (zh) * 2018-12-20 2019-03-19 北京明朝万达科技股份有限公司 一种时间同步方法及装置
CN109766324A (zh) * 2018-12-14 2019-05-17 东软集团股份有限公司 分布式锁的控制方法、装置、可读存储介质及电子设备
CN110097330A (zh) * 2019-03-27 2019-08-06 深圳市佰仟金融服务有限公司 一种业务请求处理方法、装置及计算机可读存储介质
CN110262898A (zh) * 2019-06-19 2019-09-20 广州华多网络科技有限公司 一种业务请求的处理方法及客户端
CN110334823A (zh) * 2019-06-17 2019-10-15 北京大米科技有限公司 预约方法、装置、电子设备及介质
CN110941496A (zh) * 2019-12-16 2020-03-31 上海米哈游天命科技有限公司 一种分布式锁实现方法、装置、计算机设备及存储介质
CN111143388A (zh) * 2019-12-27 2020-05-12 上海米哈游天命科技有限公司 一种资源处理方法、装置、设备及存储介质
CN111708793A (zh) * 2020-06-18 2020-09-25 辽宁振兴银行股份有限公司 一种分布式应用锁实现方法及装置
CN112636956A (zh) * 2020-12-11 2021-04-09 武汉飞骥永泰科技有限公司 分布式对象存储网关的优化方法、装置和电子设备
CN113268357A (zh) * 2021-07-20 2021-08-17 国网汇通金财(北京)信息科技有限公司 用于批处理的分布式锁处理方法、装置及系统
CN114221861A (zh) * 2021-03-26 2022-03-22 无锡江南计算技术研究所 一种大规模互连网络的管理包收发方法
CN115114305A (zh) * 2022-04-08 2022-09-27 腾讯科技(深圳)有限公司 分布式数据库的锁管理方法、装置、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101389075A (zh) * 2008-09-05 2009-03-18 中兴通讯股份有限公司 一种号码携带的短消息系统及其业务方法
CN102143073A (zh) * 2011-03-23 2011-08-03 深圳创维数字技术股份有限公司 一种数据传输方法及系统
CN102833872A (zh) * 2011-06-16 2012-12-19 中兴通讯股份有限公司 业务接入方法、系统及终端
US8990179B2 (en) * 2008-12-19 2015-03-24 Oracle International Corporation Time limited lock ownership
CN104486328A (zh) * 2014-12-10 2015-04-01 小米科技有限责任公司 访问控制方法和装置
US20150234857A1 (en) * 2011-03-01 2015-08-20 Vmware, Inc. Configuration-less network locking infrastructure for shared file systems
US20160055241A1 (en) * 2014-08-20 2016-02-25 International Business Machines Corporation Sharing resources among remote repositories utilizing a lock file in a shared file system or a node graph in a peer-to-peer system
CN105550052A (zh) * 2015-12-28 2016-05-04 东软集团股份有限公司 分布式锁实现方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101389075A (zh) * 2008-09-05 2009-03-18 中兴通讯股份有限公司 一种号码携带的短消息系统及其业务方法
US8990179B2 (en) * 2008-12-19 2015-03-24 Oracle International Corporation Time limited lock ownership
US20150234857A1 (en) * 2011-03-01 2015-08-20 Vmware, Inc. Configuration-less network locking infrastructure for shared file systems
CN102143073A (zh) * 2011-03-23 2011-08-03 深圳创维数字技术股份有限公司 一种数据传输方法及系统
CN102833872A (zh) * 2011-06-16 2012-12-19 中兴通讯股份有限公司 业务接入方法、系统及终端
US20160055241A1 (en) * 2014-08-20 2016-02-25 International Business Machines Corporation Sharing resources among remote repositories utilizing a lock file in a shared file system or a node graph in a peer-to-peer system
CN104486328A (zh) * 2014-12-10 2015-04-01 小米科技有限责任公司 访问控制方法和装置
CN105550052A (zh) * 2015-12-28 2016-05-04 东软集团股份有限公司 分布式锁实现方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
罗运模等: "《完全掌握SQL Server 2000》", 30 June 2001, 北京:人民邮电出版社 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108540533B (zh) * 2018-03-14 2021-01-22 聚好看科技股份有限公司 一种应答请求的方法和装置
CN108540533A (zh) * 2018-03-14 2018-09-14 聚好看科技股份有限公司 一种应答请求的方法和装置
CN109324877A (zh) * 2018-08-15 2019-02-12 北京天元创新科技有限公司 数据访问的方法及服务器
CN109766324A (zh) * 2018-12-14 2019-05-17 东软集团股份有限公司 分布式锁的控制方法、装置、可读存储介质及电子设备
CN109495202A (zh) * 2018-12-20 2019-03-19 北京明朝万达科技股份有限公司 一种时间同步方法及装置
CN110097330A (zh) * 2019-03-27 2019-08-06 深圳市佰仟金融服务有限公司 一种业务请求处理方法、装置及计算机可读存储介质
CN110334823A (zh) * 2019-06-17 2019-10-15 北京大米科技有限公司 预约方法、装置、电子设备及介质
CN110262898A (zh) * 2019-06-19 2019-09-20 广州华多网络科技有限公司 一种业务请求的处理方法及客户端
CN110262898B (zh) * 2019-06-19 2021-01-29 广州华多网络科技有限公司 一种业务请求的处理方法及客户端
CN110941496A (zh) * 2019-12-16 2020-03-31 上海米哈游天命科技有限公司 一种分布式锁实现方法、装置、计算机设备及存储介质
CN111143388A (zh) * 2019-12-27 2020-05-12 上海米哈游天命科技有限公司 一种资源处理方法、装置、设备及存储介质
CN111708793A (zh) * 2020-06-18 2020-09-25 辽宁振兴银行股份有限公司 一种分布式应用锁实现方法及装置
CN112636956A (zh) * 2020-12-11 2021-04-09 武汉飞骥永泰科技有限公司 分布式对象存储网关的优化方法、装置和电子设备
CN114221861A (zh) * 2021-03-26 2022-03-22 无锡江南计算技术研究所 一种大规模互连网络的管理包收发方法
CN114221861B (zh) * 2021-03-26 2023-07-07 无锡江南计算技术研究所 一种大规模互连网络的管理包收发方法
CN113268357A (zh) * 2021-07-20 2021-08-17 国网汇通金财(北京)信息科技有限公司 用于批处理的分布式锁处理方法、装置及系统
CN115114305A (zh) * 2022-04-08 2022-09-27 腾讯科技(深圳)有限公司 分布式数据库的锁管理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN107544850A (zh) 用于控制分布式锁的方法和装置
CN105071976B (zh) 数据传输方法和装置
CN1838594B (zh) 用于适应认证的系统和方法
CN110365752A (zh) 业务数据的处理方法、装置、电子设备和存储介质
CN107295080A (zh) 应用于分布式服务器集群的数据存储方法和服务器
EP2682863A1 (en) Installing applications remotely
CN107465548A (zh) 代码的部署方法和装置
CN107818018A (zh) 分布式锁的控制方法和装置
WO2018161807A1 (zh) 用户身份校验方法及装置
CN108628881A (zh) 数据同步方法和装置
CN107656815A (zh) 用于控制分布式锁的方法和装置
WO2020029930A1 (zh) 一种资产找回方法、设备和存储介质
CN108681777A (zh) 一种基于分布式系统的机器学习程序运行的方法和装置
CN109040122A (zh) 一种新用户注册并绑定服务设备的方法、装置及相关配件
CN109032796A (zh) 一种数据处理方法和装置
CN110502527A (zh) 后台请求防重发的方法、装置、计算机设备及存储介质
CN112468537A (zh) 基于局域网环境的区块链网络搭建结构及数据处理方法
CN107104999A (zh) 服务接口调用请求的处理方法和装置
CN111371753B (zh) 一种资源共享方法和装置
CN111158878A (zh) 资源转移请求线程控制方法、装置及存储介质
CN110933152B (zh) 一种预热方法、装置、系统及电子设备
CN108880923A (zh) 应用于应用服务器的监控操作请求的方法和装置
Shen et al. Achieving data consistency by contextualization in web-based collaborative applications
CN109685961A (zh) 虚拟车钥匙管理装置和电子设备
CN111461718A (zh) 区块链节点的接入方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20191122

Address after: 201210 room j1328, floor 3, building 8, No. 55, Huiyuan Road, Jiading District, Shanghai

Applicant after: SHANGHAI YOUYANG NEW MEDIA INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 100085 Beijing, Haidian District, No. ten on the ground floor, No. 10 Baidu building, layer three

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20180105

Assignee: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

Assignor: SHANGHAI YOUYANG NEW MEDIA INFORMATION TECHNOLOGY Co.,Ltd.

Contract record no.: X2020990000202

Denomination of invention: Method and device used for controlling distributed lock

License type: Exclusive License

Record date: 20200420

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180105