CN109828847A - 基于区块链的锁处理方法、装置、计算机设备及存储介质 - Google Patents
基于区块链的锁处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109828847A CN109828847A CN201910072940.4A CN201910072940A CN109828847A CN 109828847 A CN109828847 A CN 109828847A CN 201910072940 A CN201910072940 A CN 201910072940A CN 109828847 A CN109828847 A CN 109828847A
- Authority
- CN
- China
- Prior art keywords
- lock
- block
- data
- block chain
- locking
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种基于区块链的锁处理方法、装置、计算机设备及存储介质,有效地保证能实行分布式锁的功能,从而提高分布式锁实行的成功率。方法部分包括:获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;生成所述目标事项唯一对应的锁数据;根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;将所述锁区块广播至所述区块链中;通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
Description
技术领域
本发明涉及区块链领域,尤其涉及一种基于区块链的锁处理方法、装置、计算机设备及存储介质。
背景技术
为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步代码块取消标记后再去尝试设置标记。这个标记可以理解为锁。在分布式系统的许多的应用场景中,为了保证一个方法或数据或变量在同一时间内只能被同一个线程执行,需要利用锁的技术控制某一时刻修改数据的进程数。传统的分布式锁方案通常是基于集中式的redis或数据库来统一管理,具体是通redis服务器或数据库管理用于实现锁功能的锁数据,然而,当集中式的redis服务器或数据库出现宕机等情况时,用于实现锁功能的锁数据无法被控制,基于redis或数据库的分布式锁方案无法进行,从而无法有效地保证能实行上述锁方案的功能。
发明内容
本发明实施例提供一种基于区块链的锁处理方法、装置、计算机设备及存储介质,有效地保证能实行分布式锁的功能,从而提高分布式锁实行的成功率。
一种基于区块链的锁处理方法,应用于锁处理系统中的区块链处理装置中,所述锁处理系统还包括分布式节点服务器集群,所述分布式节点服务器集群的每个节点服务器保存有所述区块链,所述方法包括:
获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;
生成所述目标事项唯一对应的锁数据;
根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;
将所述锁区块广播至所述区块链中;
通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
一种基于区块链的锁处理装置,所述锁处理装置应用于锁处理系统中,所述锁处理系统还包括分布式节点服务器集群,所述分布式节点服务器集群的每个节点服务器保存有所述区块链,所述锁处理装置包括:
获取模块,用于获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;
第一生成模块,用于生成所述目标事项唯一对应的锁数据;
第二生成模块,用于根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;
广播模块,用于将所述锁区块广播至所述区块链中;
控制模块,用于通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于区块链的锁处理方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于区块链的锁处理方法。
上述基于区块链的锁处理方法、装置、计算机设备及存储介质所实现的方案中,可以理解,由于区块链中数据不可篡改性以及去中心化的特点,当其中一台节点服务器宕机时,其他节点服务器存储的区块链中任然有上述锁数据,也就是说,区块链以及锁数据任然可控制目标事项的锁状态,包括加锁状态,因此,通过本发明实施,可有效地避免集中式的redis服务器或数据库出现宕机等情况时,基于redis或数据库的分布式锁的功能无法进行的情况,有效地保证能实行分布式锁的功能,从而提高分布式锁实行的成功率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中基于区块链的锁处理方法的一应用环境示意图;
图2是本发明一实施例中基于区块链的锁处理方法的一流程示意图;
图3是本发明一实施例中基于区块链的锁处理方法的一流程示意图;
图4是本发明一实施例中基于区块链的锁处理方法的一流程示意图;
图5是本发明一实施例中基于区块链的锁处理方法的一流程示意图;
图6是本发明一实施例中基于区块链的锁处理装置的一结构示意图;
图7是本发明一实施例中计算机设备的一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在对本发明实施例进行描述之前,先对本发明实施例涉及到的术语、应用场景进行简单的介绍:
请参阅图1所示的基于区块链的分布式锁处理系统,该分布式锁处理系统包括分布式节点服务器集群以及区块链处理装置,上述分布式节点服务器集群组成分布式系统,示例性的,上述分布式系统可以是指网站分布式系统,具体这里不做限定。上述分布式节点服务器集群的每个节点服务器均可以正常工作,且每个节点服务器之间能进行通信。本发明实施例提供的基于区块链的锁处理方法中,可应用在如图1的所示的系统架构中的区块链处理装置中,区块链处理装置与分布式系统中的各个节点服务器连接。需要说明的是,在具体应用中,上述各个节点服务器,可以用独立的服务器或者是多个服务器组成的服务器集群来实现,本发明实施例也不做限定。
对于分布式节点服务器集群的每个节点服务器均设有对应的节点标识,另外,分布式节点服务器集群的每个节点服务器均存储有锁处理系统的其他节点服务器的节点标识,以便后续根据其他节点服务器的节点标识,将生成的区块广播至锁处理系统的其他节点服务器中。示例性的,每个节点服务器可维护一张节点标识列表,将锁处理系统中各个节点服务器的节点标识和节点名称对应保存在该节点标识列表中,示例性的,可用每个节点服务器的硬件地址或网络地址或其他可唯一标识节点服务器的标识信息作为上述节点标识,在本发明实施例不做具体限定。
需要说明的是,该分布式锁处理系统中的每个节点服务器均存储一条相同的区块链,其中,每个区块链由多个区块组成,创始区块中包括区块头和区块体,区块头中存储有区块头特征值、版本号等区块基础信息,区块体中存储有区块数据,而创始区块的下一区块以创始区块作为父区块,下一区块同样包括区块头和区块体,而下一区块的区块头中存储有当前区块的区块头特征值、父区块的区块头特征值、版本号等区块基础信息,并以此类推,使得区块链中的每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证区块中区块数据的不可篡改性和延续性。
本发明在于通过上述区块链处理装置实现分布式锁的功能,其中,锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调分布式系统中不同系统或同个系统不同主机(节点服务器)之间的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源(示例性的,该资源可以是指某个调用方法、数据、或变量)或者其他互斥的执行某种任务的情形,那么访问这些资源或互斥的执行某种任务的情形的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
在本发明中,提出了一种基于区块链的锁处理方法,应用于锁处理系统中的区块链处理装置中,通过区块链处理装置以及区块链实现分布式锁的功能,获取锁请求,其中,所述锁请求用于请求对目标事项进行所述锁请求对应的锁操作;获取所述锁请求对应的锁数据;并通过所述锁数据以及所述区块链控制所述目标事项的锁状态。下面对本发明进行详细的描述:
请参阅图2,图2为本发明一种基于区块链的锁处理方法一个实施流程示意图,该方法应用于锁处理系统中的区块链处理装置中,所述锁处理系统还包括分布式节点服务器集群,所述分布式节点服务器集群的每个节点服务器存储有所述区块链,包括如下步骤:
S10:获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求。
可以理解,在软件领域,例如大数据计算领域,经常会有分布式系统的部署,以便并行高效的进行大数据量的计算、运行。在分布式系统中,经常会有进程间互斥的访问某种资源(示例性的,该资源可以是指某个调用方法或数据或变量)或者互斥的执行某种任务的情形,在本发明实施例中,将进程需要访问某种资源或者执行某种任务称为事项,本发明实施例中的目标事项指的是上述事项中的其中任意一个,在进程需要访问某种资源或者执行某种任务称为事项时会生成加锁请求,该加锁请求用于请求对目标事项进行加锁操作,需要说明的是,上述进程具体可以是客户端触发的进程、也可以是指集群服务器中的节点服务器触发的进程,具体这里不做限定。值得注意的是,在实际应用中,对于分布式系统而言,通常会存在多个进程并存的情况,当上述多个进程均是用于互斥访问某种资源或者执行某种任务时,均可生成各自的加锁请求,用于请求对进程对应的事项进行加锁操作。
例如对于某个消息,只能被集群服务器中一台节点服务器处理即可,多台节点服务器处理则会造成严重问题,例如机器崩溃。又例如对于某个文件,同一时间只允许单个进程读写,如果被多个进程读写,也会造成严重问题,因此需要锁功能。在本发明实施例中,当有进程需有进程间互斥的访问某种资源或者互斥的执行某种任务时,会生成加锁请求,并向区块链处理装置发送该加锁请求,对于区块链处理装置而言,区块链处理装置可以获取到上述加锁请求,具体地,在本发明实施例中,当有进程需有进程间互斥的第一次访问某种资源或者互斥的执行某种任务且为时,会生成上述首次加锁请求,用于请求对目标事项进行第一次加锁操作的请求。并向区块链处理装置发送该首次加锁请求,对于区块链处理装置而言,区块链处理装置可以获取到上述首次加锁请求。
S20:生成所述目标事项唯一对应的锁数据。
在区块链处理装置接收到上述首次加锁请求时,生成所述目标事项唯一对应的锁数据。需要说明的是,区块链处理装置可以利用常规的随机数生成算法随机生成上述锁数据,并用标识唯一标识该锁数据与目标事项的对应关系。例如,上述随机数生成算法具体可以是指数值概率算法、蒙特卡洛算法、舍伍德算法等,具体本发明实施例不做限定,具体的生成锁数据的过程这里也不展开描述。
S30:根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据。
在区块链处理装置生成锁数据后,根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据。具体地,在实现中,可根据预设特征值算法计算所述锁数据的特征值作为当前区块头的区块头特征值,利用锁数据以及区块链中锁区块的上一区块生成上述锁区块,也就是说,当前生成锁区块的区块头中存储有当前锁区块的区块头特征值、父区块的区块头特征值、版本号等区块基础信息,使得区块链中的当前生成的锁区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证区块中区块数据的不可篡改性和延续性,具体地关于生成区块的过程这里不展开描述。
S40:将所述锁区块广播至所述区块链中。
在生成上述锁区块后,将所述锁区块广播至所述区块链中。
S50:通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
其中,通过锁数据以及区块链控制目标事项处于加锁状态指的是,将锁数据以区块的形式存储至区块链中,通过存储在区块链中的锁数据来控制目标事项处于加锁状态。可以理解,由于区块链中数据不可篡改性以及去中心化的特点,当其中一台节点服务器宕机时,其他节点服务器存储的区块链中任然有上述锁数据,也就是说,区块链以及锁数据任然可控制目标事项的锁状态,包括加锁状态,因此,通过本发明实施,可有效地避免集中式的redis服务器或数据库出现宕机等情况时,基于redis或数据库的分布式锁的功能无法进行的情况,有效地保证能实行分布式锁的功能,从而提高分布式锁实行的成功率。
在一实施例中,步骤S50中,也即所述通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态,具体通过以下方式控制所述目标事项处于加锁状态:通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态,其中,当所述加锁数据为可用状态时所述目标事项处于所述加锁状态。
在一实施例中,上述区块链可以采用Hyperledger Fabri的区块链结构,Hyperledger Fabri是一个提供分布式账本解决方案的平台,该HyperledgerFabri作为开发模块化体系结构的区块链应用程序的基础,有助于诸如共识和会员服务等组件实现即插即用,使用容器技术来托管构成系统应用逻辑的智能合约。需要说明的是,区块链上的智能合约是一套以数字形式定义的承诺(promises),包括智能合约参与方可以在上面执行这些承诺的协议,是区块链上满足触发条件会自动执行的自动化脚本或代码。本实施例中,示例性的,可以使用Go(The Go Programming Language,Golang)语言开发智能合约,当需要对区块链进行查询或写入区块数据(也即)时,可以智能合约的接口,也就是区块链的接口,以完成对该区块链上区块数据的查询和读写,基于Hyperledger Fabri的共识机制,可以预先搭建区块链的共识,并部署智能合约。具体地,在本发明实施例中,可通过部署预设智能合约,该预设智能合约定义了目标事项对应的锁数据的状态,包括可用状态以及不可用状态,可通过调用预设智能合约接口的方式改变锁数据的状态是处于可用状态还是不可用状态。值得注意的是,锁数据的状态处于可用状态时,可查询到该锁数据,锁数据的状态为不可用状态时,查询不到上述锁数据,但锁数据无法被删除或篡改。
其中,当所述锁数据为可用状态时所述目标事项处于所述加锁状态,此时说明该目标事项已经被锁定,其他进程无法执行上述目标事项,直至该目标事项被解锁。将锁区块广播至区块链之后,锁区块作为区块链中新增的区块,锁区块对应的锁数据也存储在区块链上。可用理解的是,区块链中的区块数据不可删除,也不可修改,但可以控制区块数据的状态,在本发明实施例中,通过在区块链中部署预设智能合约控制各个区块的状态,该预设智能合约用于控制区块的区块数据的状态是否可用,具体地,区块链处理装置可调用上述预设智能合约的接口,向区块链发送状态控制信息,当区块链当接收到将使得锁区块的锁数据为可用状态时的状态信息时,将所述区块链中的所述锁数据置为可用状态。
结合上述实施例,在一实施例中,如图3所示,S50之后,也即所述通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,具体包括如下步骤:
S60:生成针对所述加锁状态的解锁定时器,并启动所述解锁定时器。
S70:当所述解锁定时器的定时时长超过预设阈值时,将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态。
其中,解锁定时器的定时时长可以预先配置,具体这里不做限定。当所述解锁定时器的定时时长超过预设阈值时,将所述区块链中的所述锁数据置为不可用状态。本发明实施例中,通过在区块链中部署智能合约控制各个区块的状态,该智能合约用于控制区块的区块数据的状态是否可用,具体地,区块链处理装置可调用上述预设智能合约的接口,向区块链发送状态控制信息,当区块链当接收到将使得锁区块的锁数据为不可用状态时的状态信息时,将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态,此时说明目标事项被解锁。通过设置解锁定时器的目的是在于带来造成死锁,造成其他进程无法执行上述目标事项。
在一实施例中,也即所述通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,还可以通过以下方式控制所述目标事项处于解锁状态:当接收到用于对所述目标事项进行解锁操作的解锁请求时,通过调用所述区块链的预设智能合约接口将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态,所述解锁请求与所述首次加锁请求为同一请求方发起的请求。可用理解,在本发明实施例中,请求方针对某个事项的进行加锁操作时,只有相同的请求方才可以对该某个事项进行解锁操作。因此对目标事项进行加锁后,当该进程不需要再占用该目标事项时(示例性的,当不需要再调用某个方法、数据、变量)会生成解锁请求,并向区块链处理装置发送该解锁请求,对于区块链处理装置而言,可以接收到解锁请求,当接收到用于对所述目标事项进行解锁操作的解锁请求时,将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态。具体地,区块链处理装置可调用上述智能合约的接口,向区块链发送状态控制信息,当区块链当接收到将使得锁区块的锁数据为不可用状态时的状态信息时,将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态,此时说明目标事项被解锁。通过设置解锁定时器的目的是在于带来造成死锁,造成其他进程无法执行上述目标事项。
在一实施例中,如图4所示,步骤S50之后,也即所述通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,还包括如下步骤:
S80:获取非首次加锁请求,所述非首次加锁请求用于对所述目标事项进行加锁操作。
可以理解,由于各个进程间存在竞争关系,当进程在针对目标事项发起首次加锁请求进行加锁且该目标事项被解锁后,该进程可继续发起加锁请求,此时的加锁请求为针对目标事项的非首次请求;另外,当进程在针对目标事项发起首次加锁请求进行加锁之后,其他进程也可有可能会发起用于对所述目标事项进行加锁操作的加锁请求,此时的加锁请求也是针对目标事项的非首次请求,对于区块链处理装置而言,可获取到上述非首次加锁请求。
S90:确定所述区块数据中的所述锁数据是否为可用状态。
当接收到用于对所述目标事项进行加锁操作的非首次加锁请求时,可以获取所述区块链中的区块数据,需要说明的是,在前述描述中已经提到,若区块链处理装置曾根据首次加锁请求对目标事项进行加锁操作过,则区块链中的区块数据已经包含上述与目标事项唯一对应的锁数据,具体地,可通过字段对比的方式将目标事项唯一的锁数据与从区块链中获取的区块数据进行查询对比,以确定区块链中的区块数据是否包含上述与目标事项唯一对应的锁数据。若区块链中的区块数据未包含上述与目标事项唯一对应的锁数据,则说明未曾对所述目标事项进行加锁操作过,该目标事项的锁状态未被处理过,此时可按照上述步骤S1-S50的方式对目标事项进行加锁操作,具体这里不再重复赘述。在本发明实施例中,由于为针对目标事项的非首次加锁请求,因此区块数据中肯定包含有针对目标事项的锁数据,因此,当获取非首次加锁请求之后,可确定所述区块数据中的所述锁数据是否为可用状态。
S100:若确定所述区块数据中的所述锁数据为可用状态,则确定所述目标事项处于所述加锁状态,并针对所述非首次加锁请求反馈用于指示所述目标事项已被锁的指示信息。
可以理解,锁数据的状态为用于体现该锁数据对应的目标事项的锁情况的状态,具体地,可通过查询区块链中的区块数据,以确定是否能查询到上述锁数据,若查询不到,说明目标事项对应的锁数据处于不可用状态,也就是说明目标事项处于锁状态,若查询得到,说明目标事项对应的锁数据处于可用状态,也就是说了目标事项处于加锁状态。若确定所述区块数据中的所述锁数据为可用状态,则确定所述目标事项处于加锁状态,并针对所述非首次加锁请求反馈用于指示所述目标事项已被锁的指示信息,此时,发起非首次加锁请求的进程则进行等待,直至目标事项被解锁。
S110:若确定区块数据中的锁数据为不可用状态,则通过调用所述预设智能合约接口将所述锁数据置为可用状态,以控制所述目标事项处于加锁状态。
若确定区块数据中的锁数据为不可用状态,则将所述锁数据置为可用状态以对所述目标事项进行加锁,此时,说明该目标事项被发起非首次加锁请求的进程所锁定,其他进程无法占用。
在一实施例中,如图5所示,步骤S40中,将所述锁区块广播至所述区块链中,具体包括如下步骤:
S41:获取所述节点服务器集群中各个节点服务器的节点标识。
S42:根据所述节点标识将所述锁区块广播至所述节点标识对应的节点服务器的区块链中。
对于步骤S41-S42,如前面所述,对于基于区块链的锁处理系统的每个节点服务器均有对应的节点标识,另外,每个节点服务器均存储有基于区块链的锁处理系统的其他节点服务器的节点标识,因此,可以获取所述区块链中的各个节点服务器的节点标识。也就是说,根据基于区块链的锁处理系统中其他节点服务器的节点标识,将新生成的锁区块广播至基于区块链的会话数据处理系统的其他节点服务器中,以使得其他节点服务器将该新生成的锁区块加入存储的区块链中,实现区块链数据(也即每个目标事项对应的锁数据)在基会话数据处理系统的共享。由此可见,当基于区块链的锁系统的任意一个节点服务器出现宕机时,锁数据并不会消失从而影响到锁功能的进行,有效地保证了各个节点服务器的锁数据的有效性,也就有效地保证了锁功能的实现。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种基于区块链的锁处理装置,所述锁处理装置应用于锁处理系统中,所述锁处理系统还包括分布式节点服务器集群,所述分布式节点服务器集群的每个节点服务器保存有所述区块链,该基于区块链的锁处理装置与上述实施例中基于区块链的锁处理方法一一对应。如图6所示,该基于区块链的锁处理装置10包括获取模块101、第一生成模块102、第二生成模块103、广播模块104和控制模块105。各功能模块详细说明如下:
获取模块101,用于获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;
第一生成模块102,用于生成所述目标事项唯一对应的锁数据;
第二生成模块103,用于根据所述第一生成模块102生成的所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;
广播模块104,用于将所述第二生成模块103生成的所述锁区块广播至所述区块链中;
控制模块105,用于通过所述广播模块104广播至所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
在一实施例中,所述控制模块具体用于:
通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态,其中,当所述加锁数据为可用状态时所述目标事项处于所述加锁状态。
在一实施例中,所述基于区块链的锁处理装置还包括第三生成模块;
所述第三生成模块,用于所述控制模块通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,生成针对所述加锁状态的解锁定时器,并启动所述解锁定时器;
所述控制模块还用于:当所述解锁定时器的定时时长超过预设阈值时,将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态。
在一实施例中,所述控制模块,还用于通过过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,当接收到用于对所述目标事项进行解锁操作的解锁请求时,通过调用所述区块链的预设智能合约接口将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态,所述解锁请求与所述首次加锁请求为同一请求方发起的请求。
在一实施例中,所述获取模块还用于:所述控制模块通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,获取非首次加锁请求,所述非首次加锁请求用于对所述目标事项进行加锁操作;
所述控制模块还用于:确定所述区块数据中的所述锁数据是否为可用状态;若确定所述区块数据中的所述锁数据为可用状态,则确定所述目标事项处于所述加锁状态,并针对所述非首次加锁请求反馈用于指示所述目标事项已被锁的指示信息;若确定区块数据中的锁数据为不可用状态,则通过调用所述预设智能合约接口将所述锁数据置为可用状态,以控制所述目标事项处于加锁状态。
在一实施例中,所述广播模块具体用于:获取所述节点服务器集群中各个节点服务器的节点标识;根据所述节点标识将所述锁区块广播至所述节点标识对应的节点服务器的区块链中。
关于基于区块链的锁处理装置的具体限定可以参见上文中对于基于区块链的锁处理方法的限定,在此不再赘述。上述基于区块链的锁处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是用于实现上述基于区块链的锁处理装置的功能,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于临时存储锁数据并建立对应锁数据与事项的对应关系。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链的锁处理方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;
生成所述目标事项唯一对应的锁数据;
根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;
将所述锁区块广播至所述区块链中;
通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;
生成所述目标事项唯一对应的锁数据;
根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;
将所述锁区块广播至所述区块链中;
通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于区块链的锁处理方法,应用于锁处理系统中的区块链处理装置中,其特征在于,所述锁处理系统还包括分布式节点服务器集群,所述分布式节点服务器集群的每个节点服务器保存有所述区块链,所述方法包括:
获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;
生成所述目标事项唯一对应的锁数据;
根据所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;
将所述锁区块广播至所述区块链中;
通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
2.如权利要求1所述的基于区块链的锁处理方法,其特征在于,所述通过所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态,包括:
通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态,其中,当所述加锁数据为可用状态时所述目标事项处于所述加锁状态。
3.如权利要求2所述的基于区块链的锁处理方法,其特征在于,所述通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,所述方法还包括:
生成针对所述加锁状态的解锁定时器,并启动所述解锁定时器;
当所述解锁定时器的定时时长超过预设阈值时,将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态。
4.如权利要求2所述的基于区块链的锁处理方法,其特征在于,所述通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,所述方法还包括:
当接收到用于对所述目标事项进行解锁操作的解锁请求时,通过调用所述区块链的预设智能合约接口将所述区块链中的所述锁数据置为不可用状态,其中,当所述锁数据为不可用状态时所述目标事项处于所述解锁状态,所述解锁请求与所述首次加锁请求为同一请求方发起的请求。
5.如权利要求1-4任一项所述的基于区块链的锁处理方法,其特征在于,所述通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态之后,所述方法还包括:
获取非首次加锁请求,所述非首次加锁请求用于对所述目标事项进行加锁操作;
确定所述区块数据中的所述锁数据是否为可用状态;
若确定所述区块数据中的所述锁数据为可用状态,则确定所述目标事项处于所述加锁状态,并针对所述非首次加锁请求反馈用于指示所述目标事项已被锁的指示信息;
若确定区块数据中的锁数据为不可用状态,则通过调用所述预设智能合约接口将所述锁数据置为可用状态,以控制所述目标事项处于加锁状态。
6.如权利要求1-4任一项所述的基于区块链的锁处理方法,其特征在于,所述将所述锁区块广播至所述区块链中,包括:
获取所述节点服务器集群中各个节点服务器的节点标识;
根据所述节点标识将所述锁区块广播至所述节点标识对应的节点服务器的区块链中。
7.一种基于区块链的锁处理装置,所述锁处理装置应用于锁处理系统中,其特征在于,所述锁处理系统还包括分布式节点服务器集群,所述分布式节点服务器集群的每个节点服务器保存有所述区块链,所述锁处理装置包括:
获取模块,用于获取首次加锁请求,其中,所述首次加锁请求为用于请求对目标事项进行第一次加锁操作的请求;
第一生成模块,用于生成所述目标事项唯一对应的锁数据;
第二生成模块,用于根据所述第一生成模块生成的所述锁数据生成锁区块,所述锁区块的区块体中包含所述锁数据;
广播模块,用于将所述第二生成模块生成的所述锁区块广播至所述区块链中;
控制模块,用于通过所述广播模块广播至所述区块链中所述锁区块的所述锁数据控制所述目标事项处于加锁状态。
8.如权利要求7所述的基于区块链的锁处理装置,其特征在于,所述控制模块具体用于:
通过调用所述区块链的预设智能合约接口将所述锁区块的所述加锁数据置为可用状态,其中,当所述加锁数据为可用状态时所述目标事项处于所述加锁状态。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述基于区块链的锁处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述基于区块链的锁处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910072940.4A CN109828847B (zh) | 2019-01-25 | 2019-01-25 | 基于区块链的锁处理方法、装置、计算机设备及存储介质 |
PCT/CN2019/117300 WO2020151313A1 (zh) | 2019-01-25 | 2019-11-12 | 基于区块链的锁处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910072940.4A CN109828847B (zh) | 2019-01-25 | 2019-01-25 | 基于区块链的锁处理方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109828847A true CN109828847A (zh) | 2019-05-31 |
CN109828847B CN109828847B (zh) | 2023-09-01 |
Family
ID=66862546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910072940.4A Active CN109828847B (zh) | 2019-01-25 | 2019-01-25 | 基于区块链的锁处理方法、装置、计算机设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109828847B (zh) |
WO (1) | WO2020151313A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190913A (zh) * | 2019-12-30 | 2020-05-22 | 联动优势(北京)数字科技有限公司 | 一种分布式锁实现方法及系统 |
CN111209593A (zh) * | 2020-01-10 | 2020-05-29 | 杭州溪塔科技有限公司 | 基于区块链的分布式锁处理方法及相关装置和电子设备 |
WO2020151313A1 (zh) * | 2019-01-25 | 2020-07-30 | 平安科技(深圳)有限公司 | 基于区块链的锁处理方法、装置、计算机设备及存储介质 |
CN111522829A (zh) * | 2020-04-14 | 2020-08-11 | 深圳市启迪网络科技有限公司 | 一种区块链上分布式锁实现方法 |
CN111597527A (zh) * | 2020-07-24 | 2020-08-28 | 江苏荣泽信息科技股份有限公司 | 一种基于redis协议的智能合约系统 |
CN111639309A (zh) * | 2020-05-26 | 2020-09-08 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、节点设备及存储介质 |
WO2020258954A1 (zh) * | 2019-06-25 | 2020-12-30 | 北京京东振世信息技术有限公司 | 物流信息处理方法、装置及设备 |
CN112365630A (zh) * | 2019-07-24 | 2021-02-12 | 华为技术有限公司 | 锁具控制方法、通信装置、通信设备及存储介质 |
US20210182841A1 (en) * | 2019-12-11 | 2021-06-17 | Intuit Inc. | Shareable and nested transactions on hash chains |
CN113918654A (zh) * | 2021-12-07 | 2022-01-11 | 深圳前海微众银行股份有限公司 | 一种区块数据提交的方法及装置 |
CN114745571A (zh) * | 2022-04-15 | 2022-07-12 | 网易(杭州)网络有限公司 | 直播状态信息同步方法、装置、电子设备和可读存储介质 |
CN114896080A (zh) * | 2022-06-13 | 2022-08-12 | 深圳信息职业技术学院 | 基于区块链技术的分布式系统避免死锁处理方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117151712B (zh) * | 2023-10-26 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 区块链交易处理方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573828A (zh) * | 2015-12-17 | 2016-05-11 | 布比(北京)网络技术有限公司 | 一种操作处理方法及装置 |
WO2018039722A1 (en) * | 2016-08-30 | 2018-03-08 | Commonwealth Scientific And Industrial Research Organisation | Dynamic access control on blockchain |
CN108664420A (zh) * | 2017-03-28 | 2018-10-16 | 慧与发展有限责任合伙企业 | 共享式永久存储器的基于容量的锁定和访问 |
CN108769150A (zh) * | 2018-05-14 | 2018-11-06 | 百度在线网络技术(北京)有限公司 | 区块链网络的数据处理方法、装置、集群节点和存储介质 |
WO2019016693A1 (en) * | 2017-07-18 | 2019-01-24 | nChain Holdings Limited | SYSTEMS AND METHODS FOR OPERATIONS ASSEMBLIES DEPENDING ON A BLOCK CHAIN |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955804B (zh) * | 2016-04-22 | 2018-06-05 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
CN107045518A (zh) * | 2016-10-18 | 2017-08-15 | 北京天德科技有限公司 | 一种区块链的扩展设计方法 |
CN106789875B (zh) * | 2016-11-15 | 2019-07-02 | 深圳市新国都支付技术有限公司 | 一种区块链服务装置、区块链服务系统及其通信方法 |
CN109828847B (zh) * | 2019-01-25 | 2023-09-01 | 平安科技(深圳)有限公司 | 基于区块链的锁处理方法、装置、计算机设备及存储介质 |
-
2019
- 2019-01-25 CN CN201910072940.4A patent/CN109828847B/zh active Active
- 2019-11-12 WO PCT/CN2019/117300 patent/WO2020151313A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573828A (zh) * | 2015-12-17 | 2016-05-11 | 布比(北京)网络技术有限公司 | 一种操作处理方法及装置 |
WO2018039722A1 (en) * | 2016-08-30 | 2018-03-08 | Commonwealth Scientific And Industrial Research Organisation | Dynamic access control on blockchain |
CN108664420A (zh) * | 2017-03-28 | 2018-10-16 | 慧与发展有限责任合伙企业 | 共享式永久存储器的基于容量的锁定和访问 |
WO2019016693A1 (en) * | 2017-07-18 | 2019-01-24 | nChain Holdings Limited | SYSTEMS AND METHODS FOR OPERATIONS ASSEMBLIES DEPENDING ON A BLOCK CHAIN |
CN108769150A (zh) * | 2018-05-14 | 2018-11-06 | 百度在线网络技术(北京)有限公司 | 区块链网络的数据处理方法、装置、集群节点和存储介质 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020151313A1 (zh) * | 2019-01-25 | 2020-07-30 | 平安科技(深圳)有限公司 | 基于区块链的锁处理方法、装置、计算机设备及存储介质 |
US11922743B2 (en) | 2019-06-25 | 2024-03-05 | Beijing Jingdong Zhenshi Information Technology Co., Ltd. | Logistics information processing method based on electronic lock, blockchain and waybill, and apparatus and device thereof |
WO2020258954A1 (zh) * | 2019-06-25 | 2020-12-30 | 北京京东振世信息技术有限公司 | 物流信息处理方法、装置及设备 |
CN112365630B (zh) * | 2019-07-24 | 2022-06-14 | 华为技术有限公司 | 锁具控制方法、通信装置、通信设备及存储介质 |
CN112365630A (zh) * | 2019-07-24 | 2021-02-12 | 华为技术有限公司 | 锁具控制方法、通信装置、通信设备及存储介质 |
US11941611B2 (en) * | 2019-12-11 | 2024-03-26 | Intuit Inc. | Shareable and nested transactions on hash chains |
US20210182841A1 (en) * | 2019-12-11 | 2021-06-17 | Intuit Inc. | Shareable and nested transactions on hash chains |
CN111190913A (zh) * | 2019-12-30 | 2020-05-22 | 联动优势(北京)数字科技有限公司 | 一种分布式锁实现方法及系统 |
CN111209593A (zh) * | 2020-01-10 | 2020-05-29 | 杭州溪塔科技有限公司 | 基于区块链的分布式锁处理方法及相关装置和电子设备 |
CN111522829A (zh) * | 2020-04-14 | 2020-08-11 | 深圳市启迪网络科技有限公司 | 一种区块链上分布式锁实现方法 |
CN111522829B (zh) * | 2020-04-14 | 2023-11-28 | 深圳市启迪网络科技有限公司 | 一种区块链上分布式锁实现方法 |
CN111639309B (zh) * | 2020-05-26 | 2021-08-24 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、节点设备及存储介质 |
CN111639309A (zh) * | 2020-05-26 | 2020-09-08 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、节点设备及存储介质 |
CN111597527A (zh) * | 2020-07-24 | 2020-08-28 | 江苏荣泽信息科技股份有限公司 | 一种基于redis协议的智能合约系统 |
CN113918654A (zh) * | 2021-12-07 | 2022-01-11 | 深圳前海微众银行股份有限公司 | 一种区块数据提交的方法及装置 |
CN114745571B (zh) * | 2022-04-15 | 2024-01-23 | 网易(杭州)网络有限公司 | 直播状态信息同步方法、装置、电子设备和可读存储介质 |
CN114745571A (zh) * | 2022-04-15 | 2022-07-12 | 网易(杭州)网络有限公司 | 直播状态信息同步方法、装置、电子设备和可读存储介质 |
CN114896080B (zh) * | 2022-06-13 | 2023-07-21 | 深圳信息职业技术学院 | 基于区块链技术的分布式系统避免死锁处理方法及装置 |
CN114896080A (zh) * | 2022-06-13 | 2022-08-12 | 深圳信息职业技术学院 | 基于区块链技术的分布式系统避免死锁处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109828847B (zh) | 2023-09-01 |
WO2020151313A1 (zh) | 2020-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109828847A (zh) | 基于区块链的锁处理方法、装置、计算机设备及存储介质 | |
CN109728954B (zh) | 联盟链节点管理系统以及方法 | |
JP6756914B2 (ja) | ブロックチェーンネットワーク内のファンクションアズアサービス(FaaS)プラットフォーム | |
CN105653406B (zh) | 一种管理分布式存储系统的方法及分布式存储系统 | |
KR20010013112A (ko) | 분산 데이터베이스에서의 트랜잭션 방법 | |
JPH05173988A (ja) | 分散処理方式および該分散処理に適用されるトランザクション処理方式 | |
CN110955448A (zh) | 智能合约分离方法、合约处理方法、装置、设备及介质 | |
CN111628886A (zh) | 私有云环境下组建区块链网络的方法、装置、计算机设备 | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
EP2350857B1 (en) | Bootstrap rendezvous federation | |
CN109768962B (zh) | 防火墙策略生成方法、装置、计算机设备及存储介质 | |
CN110933022A (zh) | 区块处理方法、装置、计算机设备及存储介质 | |
CN104820698B (zh) | 一种数据筛选规则系统的分布式一致性实现方法 | |
CN114143090A (zh) | 基于网络安全架构的防火墙部署方法、装置、设备及介质 | |
CN113992630A (zh) | 一种网络资源冲突处理方法、装置、设备及存储介质 | |
CN111061813B (zh) | 用于区块链网络中的数据同步的方法、装置和计算设备 | |
CN111625323A (zh) | 分布式任务处理方法、装置、设备及计算机可读存储介质 | |
CN113268382B (zh) | 在区块链系统中切换分片节点的方法及装置 | |
CN115022307A (zh) | 一种文件下载方法及装置、存储介质及电子设备 | |
CN114780177A (zh) | 事务执行方法及装置、存储介质及电子装置 | |
CN115145715A (zh) | 一种分布式事务处理方法、系统及相关设备 | |
CN114327938A (zh) | 一种Linux系统下的PISA管理器实现方式 | |
CN114138408A (zh) | 克隆卷创建的方法、装置、计算机设备和存储介质 | |
CN110910140A (zh) | 智能合约的实现方法、前置服务器、客户端、设备及介质 | |
CN112256456B (zh) | 一种基于Dubbo服务的会话消息的传递方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |