CN115114305A - 分布式数据库的锁管理方法、装置、设备及存储介质 - Google Patents
分布式数据库的锁管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115114305A CN115114305A CN202210369278.0A CN202210369278A CN115114305A CN 115114305 A CN115114305 A CN 115114305A CN 202210369278 A CN202210369278 A CN 202210369278A CN 115114305 A CN115114305 A CN 115114305A
- Authority
- CN
- China
- Prior art keywords
- lock
- information
- node
- management
- data
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 89
- 238000007726 management method Methods 0.000 title abstract description 169
- 238000000034 method Methods 0.000 claims abstract description 55
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012795 verification Methods 0.000 claims description 7
- 230000000694 effects Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 22
- 238000005516 engineering process Methods 0.000 abstract description 15
- 238000013473 artificial intelligence Methods 0.000 abstract 1
- 238000001514 detection method Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000012550 audit Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种分布式数据库的锁管理方法、装置、设备及存储介质,涉及数据库技术领域。本申请实施例可应用于云技术、人工智能、智慧交通、辅助驾驶、区块链等各种场景。在本申请中,分布式数据库包括管控节点和多个计算节点,所述方法由管控节点执行,所述方法包括:接收多个计算节点中的第一计算节点发送的锁申请消息;根据全局锁管理信息,确定锁申请消息是否有效;在确定锁申请消息有效的情况下,在全局锁管理信息中记录第一会话与第一锁之间的占用关系。本申请减少了接收到客户端请求的计算节点在使用数据时对锁信息的获取难度,减少了获取锁信息所消耗的时间,提高了数据处理的效率。
Description
技术领域
本申请实施例涉及数据库技术领域,特别涉及一种分布式数据库的锁管理方法、装置、设备及存储介质。
背景技术
分布式数据库通过多个存储节点分别对数据进行存储,通过多个计算节点来对多个存储节点中的数据进行加锁并将锁信息存储在相应的计算节点中。
相关技术中,分布式数据库中客户端通过计算节点来对存储节点中的数据进行存储和提取。客户端向计算节点发送数据处理请求,指示对存储节点中的数据进行读取和/或写入的操作。可选地,为了保护客户端对于存储节点中的数据进行读取和/或写入操作的安全性,客户端可以通过计算节点来对该数据进行加锁,计算节点根据客户端发送的数据处理请求中的信息生成该数据对应的锁信息,并将生成的锁信息存储在该计算节点中,来保护该数据的读取和/或写入过程。只有拥有该锁信息的客户端才能对锁信息对应的数据进行读取和/或写入操作,其他客户端在没有申请锁的情况下,不能对该数据进行读取和/或写入操作。
然而,在每个计算节点中加入锁信息后,当其他客户端对上述加锁的数据进行读取和/或写入操作时,接收到客户端请求的计算节点需要从各个计算节点中搜索该加锁的数据的锁信息,来判断该客户端是否有对该数据进行读取和/或写入的权限。但由于该计算节点并不知道该数据对应的锁信息存储在哪个计算节点中,需要对各个计算节点进行搜索,增加了获取锁信息所消耗的时间,降低了数据处理的效率。
发明内容
本申请实施例提供了一种分布式数据库的锁管理方法、装置及、设备及存储介质。所述技术方案如下:
根据本申请实施例的一个方面,提供了一种分布式数据库的锁管理方法,所述分布式数据库包括管控节点和多个计算节点,所述方法由所述管控节点执行,所述方法包括:
接收所述多个计算节点中的第一计算节点发送的锁申请消息,所述锁申请消息用于为第一会话申请针对第一数据的第一锁;
根据全局锁管理信息,确定所述锁申请消息是否有效;其中,所述全局锁管理信息包括多个所述计算节点为不同会话申请的针对所述分布式数据库中不同数据的锁;
在确定所述锁申请消息有效的情况下,在所述全局锁管理信息中记录所述第一会话与所述第一锁之间的占用关系。
根据本申请实施例的一个方面,提供了一种分布式数据库的锁管理装置,所述分布式数据库包括管控节点和多个计算节点,所述装置设置在所述管控节点中,所述装置包括:
申请消息接收模块,用于接收所述多个计算节点中的第一计算节点发送的锁申请消息,所述锁申请消息用于为第一会话申请针对第一数据的第一锁;
申请消息验证模块,用于根据全局锁管理信息,确定所述锁申请消息是否有效;其中,所述全局锁管理信息包括多个所述计算节点为不同会话申请的针对所述分布式数据库中不同数据的锁;
锁信息记录模块,用于在确定所述锁申请消息有效的情况下,在所述全局锁管理信息中记录所述第一会话与所述第一锁之间的占用关系。
根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,至少一段程序由所述处理器加载并执行以实现上述分布式数据库的锁管理方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,至少一段程序由处理器加载并执行以实现上述分布式数据库的锁管理方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述分布式数据库的锁管理方法。
本申请实施例提供的技术方案至少包括如下有益效果:
本申请通过管控节点和计算节点之间进行交互,对会话对应的数据进行锁的申请和释放,将多个的计算节点为对应的会话申请的对应数据的锁信息都存储在管控节点中。通过对锁信息的统一存储,而不是分别存储在对应的计算节点中,客户端在对数据进行读取和/或写入时,仅需要通过计算节点从管控节点中获取对应的锁信息,而不需要从各个计算节点中搜索锁信息,减少了接收到客户端请求的计算节点在使用数据时对锁信息的获取难度,减少了获取锁信息所消耗的时间,提高了数据处理的效率。
附图说明
图1是本申请一个实施例提供的分布式数据库的系统架构图;
图2是本申请一个实施例提供的分布式数据库的锁管理方法的流程图;
图3是本申请另一个实施例提供的分布式数据库的锁管理方法的流程图;
图4是本申请一个实施例提供的分布式数据库的锁申请方法的示意图;
图5是本申请一个实施例提供的分布式数据库的锁释放方法的示意图;
图6是本申请一个实施例提供的分布式数据库的锁管理装置的框图;
图7是本申请另一个实施例提供的分布式数据库的锁管理装置的框图;
图8是本申请一个实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云存储(Cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
本申请实施例提供的方案涉及云技术和区块链等技术,具体通过如下实施例进行说明。
请参考图1,其示出了本申请一个实施例提供的分布式数据库的系统架构图。该分布式数据库10可以包括:管控节点11、多个计算节点12和多个存储节点13。
存储节点13用于对分布式数据库10中的数据进行存储。
计算节点12用于对客户端14发起的会话进行处理,客户端14通过计算节点12对存储节点13中存储的数据进行处理,如读/写操作。
管控节点11用于对整个分布式数据库10进行全局的管理。在本申请实施例中,通过在分布式数据库10中设置一个全局的管控节点11,利用该管控节点11对各个计算节点12进行管理,客户端14通过计算节点12对存储节点13中存储的数据进行处理时,计算节点12先从管控节点11中获取到该客户端14是否有对存储节点13中存储的数据进行处理的权限,在确认该客户端14有权限时,计算节点12才对该客户端14的数据处理请求进行响应,该客户端14才能对存储节点13中存储的数据进行处理。
另外,对于存算分离的分布式数据库系统,计算节点12和存储节点13分离,也就是说计算节点12和存储节点13分别为两个独立的节点或设备上;对于存算一体的分布式数据库系统,计算节点12和存储节点13不分离,计算节点12和存储节点13合并为一个节点或设备,该节点或设备同时拥有计算节点12和存储节点13的功能。可选地,该节点或设备可以包括拥有计算节点12功能的模块和存储节点13功能的模块。本申请技术方案可以适用于存算分离的分布式数据库系统,也可以适用于存算一体的分布式数据库系统。
另外,管控节点11可以拥有多种实现形式。例如,管控节点11可以是一个区别于计算节点12和存储节点13的节点;管控节点11也可以是多个计算节点12中任意一个计算节点,该计算节点为全局计算节点,该全局计算节点用于对所有的计算节点12进行全局管理;管控节点11也可以是一个管控功能模块,该管控功能模块中存储有对所有计算节点12与管控节点11之间产生的信息。
另外,如图1所示,客户端14与计算节点12生成会话,该会话用于指示客户端14对存储节点13中的数据进行读取和/或写入操作。在该数据尚未进行加锁时,客户端14可以仅仅对数据进行读取和/或写入操作,而不通过计算节点12和管控节点11对该数据进行加锁。可选地,客户端14可以通过计算节点12向管控节点11发送锁申请消息,来对该数据进行加锁,以对该次数据的读取和/或写入操作进行保护,并将申请的锁信息存储在管控节点11中。此时,再执行客户端14通过计算节点12对存储节点13中数据的读取和/或写入操作。
在一些实施例中,当任一计算节点12(除了上述对该数据进行加锁的计算节点)获取到客户端12针对上述存储节点13中的数据的读取和/或写入请求时,计算节点12首先向管控节点11索要关于该数据的锁信息。如果该数据没有对应的锁信息,则该客户端14可以对该数据进行读取和/或写入,可选地,该客户端14在数据的读取和/或写入前,还可以通过计算节点12和管控节点11对该数据进行加锁,以保证数据的读取和/或写入的安全。如果该数据拥有对应的锁信息时,则该客户端14需要通过计算节点12和管控节点11获取该数据原有的锁信息成功后,才能对该数据进行读取和/或写入。在该客户端14需要通过计算节点12和管控节点11对该数据进行加锁失败后,也不能对该数据进行数据的读取和/或写入。
请参考图3,其示出了本申请一个实施例提供的分布式数据库的锁管理方法的流程图。该方法可应用于图1所示的分布式数据库系统中。该方法可以包括如下几个步骤(110-130)中的至少一个步骤:
步骤110,第一计算节点向管控节点发送锁申请消息,该锁申请消息用于为第一会话申请针对第一数据的第一锁。
相应地,管控节点接收第一计算节点发送的锁申请消息。
分布式数据库中可以包括多个计算节点,第一计算节点可以是该多个计算节点中的任意一个计算节点。
第一会话是第一客户端和第一计算节点之间的会话,第一会话可以是第一客户端向第一计算节点发起的用于对第一数据进行读取和/或写入的会话。第一数据可以是是存储在存储节点中的数据或数据表。通过第一会话对该第一数据进行读取和/或写入在存储节点中。可选地,第一数据可以理解为存储节点中的数据表和其中的数据,当第一数据对应的数据表中没有数据时,第一会话可以是对第一数据进行数据的写入;当第一数据对应的数据表中有数据时,第一会话可以是对第一数据进行数据的读取和/或写入。第一用户操作第一客户端通过第一计算节点对存储节点中的第一数据进行读取和/或写入时,可选地,第一客户端可以通过第一计算节点向管控节点发送锁申请消息,来对第一数据进行加锁,以对该次数据的读取和/或写入操作进行保护。可选地,第一客户端也可以仅仅对第一数据进行数据的读取和/或写入操作,而不通过第一计算节点和管控节点对第一数据进行加锁。
第一锁用于对第一数据进行客户端使用权限的限制,只有管控节点中第一锁信息对应的客户端才能对拥有第一锁的第一数据进行读取和/或写入。第一锁可以包括读锁和写锁,例如,当第一锁是读锁时,拥有第一锁信息的客户单可以对拥有第一锁的第一数据进行读取;当第一锁是写锁时,拥有第一锁信息的客户端可以对拥有第一锁的第一数据进行读取和写入。其中,数据的读取是指仅获取第一数据中包含的数据,数据的写入是指对第一数据进行数据的删除、增加、修改等操作。
在一些实施例中,在第一数据上添加读锁时,则拥有该读锁锁信息的客户端可以对第一数据进行读取操作,但不能进行写入操作。此时,其他客户端也可以在第一数据上申请读锁,以获取读取第一数据的权限。又例如,在第一数据上添加写锁时,则拥有该写锁锁信息的客户端可以对第一数据进行读取和写入操作。此时,其他客户端不能对第一数据进行读取和写入操作,其他客户端也不能在第一数据上申请写锁和读锁。
可选地,锁也可以包括显式锁和隐式锁。显式锁是客户端对应的用户对存储单元中数据的内容进行读取和/或写入时获取的锁,该操作由用户发起,且由用户进行实际操作完成,例如上述的读锁和写锁。其中,具体的锁获取方式在下文实施例中介绍。隐式锁是客户端对应的用户对存储单元中数据表的格式、存储上限等进行更改时生成的锁,该操作有用户发起,且有用户进行实际操作完成。例如客户端想要对数据对应的数据表进行格式的更改时,分布式数据库自身对该数据表的格式进行更改,并在更改前为该数据表添加相应的锁。在对数据表的格式更改结束后为该数据表释放相应的锁。
管控节点接收第一计算节点发送的锁申请消息,可选地,管控节点还接收多个计算节点中除第一计算节点之外的其他计算节点发送的锁申请消息。
锁申请消息指示了会话所要生成的锁的基本信息,锁申请消息包括第一计算节点的信息、第一锁的名称信息、第一锁的类型信息和第一会话的信息。其中,第一计算节点的信息是第一计算节点的组成内容信息,第一计算节点的信息包括第一计算节点的IP(Internet Protocol,网际互连协议)、计算节点的端口信息、计算节点与管控节点连接的标识信息等。计算节点将上述信息封装为锁申请消息后发送给管控节点。第一锁的名称信息用于对不同的锁起到区分标识的作用,第一锁的名称信息是第一锁的ID(Identity,标识标)信息。例如第一锁的名称信息可以是1、2、3等数字ID,管控节点通过数字ID对所有的锁进行编号。可选地,第一锁的名称信息也可以根据数据的ID进行编号,例如,第一锁对应的第一数据的ID为A,则对应的第一锁的名称信息可以是A1、A2、A3等。其中,ID可以是数值型,也可以是字符串型,本申请对此不作限定。第一锁的名称信息可以是由管控节点设置的,也可以是由第一计算节点设置的,本申请对此不作限定。
第一锁的类型信息用于指示第一锁的类型,第一锁的类型为读锁和写锁中的一种。可选地,根据第一锁的类型,第一锁的名称信息也可以是WL(Write Lock,写锁)1、RL(Read Lock,读锁)1的形式。
第一计算节点的信息用于指示与管控节点交互的计算节点的信息,第一会话的信息用于指示该锁申请消息的发起会话的信息。
步骤120,管控节点根据全局锁管理信息,确定锁申请消息是否有效。
其中,全局锁管理信息包括多个计算节点为不同会话申请的针对分布式数据库中不同数据的锁。
管控节点中存储有全局锁管理信息,全局锁管理信息中含有所有的计算节点为对应的会话申请的相应数据的锁信息,锁信息是全局锁管理信息中的锁对应的信息,锁信息指示了申请该锁的客户端和该锁保护的数据,在锁信息对应的锁仍在全局锁管理信息中时,仅拥有该锁的客户端可以对该锁保护的数据进行读取和/或写入。
管控节点根据接收的第一计算节点发送的锁申请消息,对该锁申请消息进行解析和有效性判断。其中,对于锁申请消息进行解析和有效性判断的具体过程,将在下文实施例中介绍。
步骤130,管控节点在确定锁申请消息有效的情况下,在全局锁管理信息中记录第一会话与第一锁之间的占用关系。
管控节点判断得到该锁申请消息有效后,在全局锁管理信息中保存该锁信息。该锁信息中记录有第一会话与第一锁的占用关系,也就是该锁信息中记录有第一会话对应的客户端和第一锁对应的数据之间的占用关系。在锁信息对应的锁仍在全局锁管理信息中时,仅拥有该锁的客户端可以对该锁保护的数据进行读取和/或写入。
在一些实施例中,当任一计算节点获取到客户端针对数据的读取和/或写入请求时,计算节点首先向管控节点索要关于该数据的锁信息。如果该数据没有对应的锁信息,则该客户端可以对该数据进行读取和/或写入,可选地,该客户端在数据的读取和/或写入前,还可以通过计算节点和管控节点对该数据进行加锁,以保证数据的读取和/或写入的安全。如果该数据拥有对应的锁信息时,则该客户端需要通过计算节点和管控节点获取该数据原有的锁信息成功后,才能对该数据进行读取和/或写入。在该客户端需要通过计算节点和管控节点对该数据进行加锁失败后,也不能对该数据进行数据的读取和/或写入。
在一些实施例中,如图3所示,还包括锁释放过程,包括如下步骤:
步骤140,管控节点接收第一计算节点发送的锁释放消息,该锁释放消息用于释放第一会话占用的第一锁。
同样的,计算节点向管控节点发送锁释放消息之后,管控节点接收第一计算节点发送的锁释放消息。管控节点根据全局锁管理信息,确定锁释放消息是否有效。
锁释放消息指示了会话所要释放的锁的基本信息,锁释放消息包括第一锁的名称信息、第一计算节点的信息和第一会话的信息。与锁申请消息相同的是,第一计算节点的信息包括计算节点的IP、计算节点的端口信息、计算节点与管控节点连接的标识信息等。计算节点将上述信息封装为锁释放消息后发送给管控节点。对于第一计算节点的信息和第一会话的信息的介绍已在上述实施例中介绍,在此不再赘述。
步骤150,管控节点在根据全局锁管理信息确定锁释放消息有效的情况下,在全局锁管理信息中删除第一会话与第一锁之间的占用关系。
管控节点判断得到该锁释放消息有效后,在全局锁管理信息中删除该锁信息。该锁信息中记录有第一会话与第一锁的占用关系,也就是该锁信息中记录有第一会话对应的客户端和第一锁对应的数据之间的占用关系。在全局锁管理信息中不存在该数据的锁信息时,所有客户端都可以对该数据进行数据的读取和/或写入。
本申请通过管控节点和计算节点之间进行交互,对会话对应的数据进行锁的申请和释放,将多个的计算节点为对应的会话申请的对应数据的锁信息都存储在管控节点中。通过对锁信息的统一存储,而不是分别存储在对应的计算节点中,客户端在对数据进行读取和/或写入时,仅需要通过计算节点从管控节点中获取对应的锁信息,而不需要从各个计算节点中搜索锁信息,减少了接收到客户端请求的计算节点在使用数据时对锁信息的获取难度,减少了获取锁信息所消耗的时间,提高了数据处理的效率。
请参考图4,其示出了本申请一个实施例提供的分布式数据库的锁申请方法的示意图。图4中对于锁申请消息的交互已在上述实施例中介绍,此实施例主要对锁申请消息进行解析和有效性判断进行介绍。
如图4所示,在图4的区域21中,对于锁申请消息的有效性判断如下所示(检测步骤1~4):
检测步骤1,检测第一计算节点的信息和第一会话的信息是否合法;若第一计算节点的信息和第一会话的信息合法,则执行检测全局锁管理信息中是否已记录第一锁的名称信息的步骤。
合法是指第一计算节点和/或第一会话是否有获取锁的权利。当检测为合法时,指示第一计算节点和第一会话拥有获取锁的权利;当检测为不合法时,该锁请求信息申请失败,管控节点不对该第一计算节点和/或第一会话对应的数据进行加锁。例如,当第一计算节点和第一会话被检测为不合法时,指示第一计算节点和第一会话在管控节点的黑名单中。
如图4中检测步骤210和220所示,检测步骤210是对计算节点的信息进行合法性检测,在计算节点的信息合法时,进行检测步骤220,对会话的信息进行合法性检测,在会话的信息合法时,在进行下一步的检测。其中,检测步骤210和检测步骤220中任一检测步骤的结果为不合法时,该锁请求信息申请失败,管控节点不对该数据进行加锁。步骤210和步骤220的执行先后顺序不作限定,可以步骤210先执行,步骤220后执行;也可以步骤220先执行,步骤210后执行;还可以步骤210和步骤220同时执行。本申请对此不作限定。
检测步骤2,检测全局锁管理信息中是否已记录第一锁的名称信息;若全局锁管理信息中未记录第一锁的名称信息,则确定锁申请消息有效。
如图4中的检测步骤230所示,检测步骤230是管控节点检测全局锁管理信息中是否包含与锁申请消息中名称信息相同的锁,若检测到与第一锁的名称信息相同的锁,则执行下一步骤,若没有检测到与第一锁的名称信息相同的锁,则确定锁申请消息有效,管控节点将该锁申请消息对应的锁信息存储在管控节点的全局锁管理信息中。
检测步骤3,若全局锁管理信息中已记录第一锁的名称信息,则根据第一锁的类型信息,检测第一锁是否满足兼容性条件;其中,兼容性条件用于指示针对同一数据的多个锁之间的兼容性;若第一锁满足兼容性条件,则确定锁申请消息有效。
检测步骤4,若第一锁不满足兼容性条件,则确定锁申请信息无效。可选地,若第一锁不满足兼容性条件,则将锁申请消息放入消息队列中,在全局锁管理信息中记录的与第一锁不具备兼容性的第二锁被释放之后,从消息队列中读取锁申请消息,并根据锁申请消息,在全局锁管理信息中记录第一会话与第一锁之间的占用关系。
兼容性条件是指同一数据的多个锁之间的兼容性;根据多个锁的类型信息,来确定多个锁之间的兼容性。锁的类型信息包括以下两种:写锁和读锁。其兼容性条件如下表所示:
表1
由表1所示,对于同一数据,多个读锁之间不存在兼容性问题,也就是对于同一数据,可以有多个用户对该数据进行读取。当该数据拥有一个写锁时,由于写锁与任何锁都存在兼容性问题。所以当数据存在写锁时,则该数据不能再获取任何其他类型的锁。其中,兼容是指多个锁能否同时存在,若检测到兼容性问题时,则判断得到这多个锁不能同时存在;若没有检测到兼容性问题时,则判断得到这多个锁能同时存在。
如图3中检测步骤240所示,在检测步骤230检测到同名锁时,对锁申请消息进行检测步骤240的检测操作,根据表1中的方式进行兼容性的检测,当没有检测到兼容性问题时,则确定锁申请消息有效,管控节点将该锁申请消息对应的锁信息存储在管控节点的全局锁管理信息中。当检测到存在兼容性问题时,则该锁请求信息获取失败,管控节点不对该数据进行加锁。
可选地,当检测到存在兼容性问题时,则该锁请求信息获取失败,将该锁申请消息放入消息队列中,当与该锁存在兼容问题的其他锁被释放后,再从消息队列中读取锁申请消息,读取消息队列中的排序顺序获取排序第一的锁申请消息,管控中心将该排序第一的锁申请消息存储在管控中心的全局锁管理信息中。
在一些实施例中,如图5所示,图5示出了本申请一个实施例提供的分布式数据库的锁释放方法的示意图。
与图4类似,在分布式数据库的锁释放过程中,如区域31中所示,锁释放过程包括3个检测步骤:检测步骤310、320与和检测步骤210、220相同,都是对计算节点的信息和会话的信息进行检测。在检测到计算节点的信息和会话的信息合法时,进行下一步的检测;在检测到计算节点的信息和会话的信息不合法时,该锁释放信息申请失败,管控节点不对该数据进行锁的释放。同样的,步骤310和步骤320的先后顺序也是任意的,可以步骤310先执行,步骤320后执行;也可以步骤320先执行,步骤310后执行;还可以步骤310和步骤320同时执行。本申请对此不作限定。检测步骤330用于检测管控节点的全局锁管理信息中是否有名称信息相同的锁,如有,则对该锁进行释放并结束流程;如果没有,则直接结束流程。可选地,在管控节点同意释放锁信息时,还可以再次询问客户端对应的计算节点是否释放锁信息,在计算节点同意后,释放该锁信息;在计算节点不同意时,不释放该锁信息。
通过对锁申请消息中的各个信息进行检测,只对检测完成并合法不同名且兼容的锁进行锁信息的存储,保证了存储的锁信息的合法性和安全性。防止了非法客户端对存储节点中的数据进行读取和/或写入,保护了分布式数据库中的数据,增加了分布式数据库的安全性。
另外,通过对锁释放消息中的各个信息进行检测,只对检测完成并合法的锁进行锁信息的释放,保证了释放的锁信息的合法性和安全性。防止了非法用户对存储节点中的数据进行读取和/或写入,保护了分布式数据库中的数据,增加了分布式数据库的安全性。
在一些实施例中,以下是对于本申请中关于显式锁(写锁和读锁)的申请和释放步骤的消息格式,消息格式定义了消息中包含的内容,具体消息格式如下所示:
其中,EngineInfo指的是计算节点的信息,包括计算节点的IP、计算节点的端口信息(port)、计算节点与管控节点连接的标识信息(term)等。
其中,该段代码展示的是锁申请请求的内容,包括计算节点的信息(EngineInfoengine_info)、会话的信息(String session)、锁的名称信息(String lock_name)和锁的类型信息(DMDLType lock_type)。
其中,该段代码展示的是锁释放请求的内容,包括计算节点的信息(EngineInfoengine_info)、会话的信息(String session)和锁的名称信息(String lock_name)。
在一些实施例中,以下对分布式数据库中管控节点和计算节点出现异常时的处理方式进行介绍,具体如下:
在管控节点发生故障且恢复运行之后,将管控节点的磁盘中存储的全局锁管理信息加载到管控节点的内存中,以及将原始的第一标识信息更新为第二标识信息;向全局锁管理信息中记录的各个锁所对应的计算节点发送通知消息,通知消息用于指示第一标识信息已失效;接收第一计算节点对第一标识信息进行更新后发送的回复消息,回复消息中携带更新后的标识信息;在更新后的标识信息与第二标识信息相匹配的情况下,确认第一计算节点持有的锁继续生效。或者,在超过第一时长未接收到来自第一计算节点的心跳信息的情况下,确定第一计算节点处于失活状态,以及将原始的第一标识信息更新为第二标识信息,另外,管控节点将删除第一计算节点对应的锁信息;接收第一计算节点从失活状态恢复为运行状态后发送的重新申请请求,在锁信息重新申请请求完成的情况下,确认第一计算节点持有的锁重新生效。重新申请请求用于对上述清除的锁信息进行重新申请,上述重新申请请求包含上述清除的锁的名称信息、上述清除的锁的类型信息、第一计算节点的信息和第一会话的信息。
由于分布式环境存在多节点、网络环境复杂等不可避免地因素,所以分布式数据库系统可能引入诸多异常。在实现分布式数据库中数据的申请锁和释放锁的过程中,仅使用了管控节点和计算节点两种节点。因此异常处理也只对上述两种节点进行处理。为了及时发现管控节点和计算节点之间的问题,通过心跳机制来进行管控节点和计算节点之间的交流。心跳机制是计算节点周期性地向管控节点发送标识信息,以告知管控节点仍处于连接状态。标识信息是管控节点与计算节点之间设置好的信息,同时,在同一周期内,管控节点和所有的计算节点的标识信息是相同的。
当管控节点发生故障与计算节点断开连接时,管控节点发生故障而导致全局锁管理信息中部分锁信息丢失时。为了预防此类情况出现,采用了多副本机制来进行管控节点中的全局锁管理信息的存储,在多台副本机器中存储该管控节点的全局锁管理信息。同时,在同一台副本机器中,同时在机器的内存和硬盘中进行全局锁管理信息的存储,其中,硬盘中的全局锁管理信息不容易因为故障而导致数据的丢失。因此,在当管控节点发生故障与计算节点断开连接后,开始管控节点的故障恢复。再此过程中,计算节点持续向管控节点发送标识信息来进行心跳机制的连接,但由于管控节点故障而未能接收到标识信息,所以不能成功连接。管控节点故障恢复后,管控节点将磁盘中或其他副本机器中的全局锁管理信息重新加载到内容中,并更新标识信息。管控节点向各个计算节点发送原始的标识信息失效信息并发送更新后的标识信息。各个计算节点接收到原始的标识信息失效信息和更新后的标识信息后,各个计算节点需要同步更新标识信息并向管控节点发送回复信息,以表示标识信息更新完毕。此时,管控节点与向管控节点发送回复信息的计算节点建立心跳连接,管控节点继续持有该计算节点对应的锁信息;没有向管控节点发送回复信息的计算节点不能建立心跳连接,管控节点释放该计算节点对应的锁信息。其中,继续持有的锁信息中的标识信息为更新后的标识信息。
当计算节点发生故障与管控节点失去连接时,计算节点发生故障从而不能向管控节点发送标识信息,管控节点在超过一定时间未接收到计算节点发送的标识信息时,管控节点判断该计算节点失去连接,并同时更新标识信息,向其他正在连接状态的计算节点发送更新标识信息消息,其他正在连接状态的计算节点更新标识信息以维持连接状态。在发生故障的计算节点故障恢复后,再次向管控节点发送原始的标识信息,此时,管控节点发现接收到的标识信息与现有的标识信息不匹配,则管控节点判断该计算节点对应的锁信息失效,该计算节点可以重新向管控节点发送更新后的标识信息,以使管控节点中该计算节点对应的锁信息重新生效。
可选地,当网络异常时,管控节点和计算节点都断开连接,在这种场景下,对于计算节点而言就是管控节点产生了异常;而对于管控节点而言,也可以认为是计算节点出现了异常。由于心跳机制的存在,一个周期内双方就会发现对方断开连接,此时,管控节点和计算节点都会采用上述处理方式进行心跳信息的重新连接。
由上述步骤可以发现,当管控节点发现与其相连的计算节点个数发生变化或管控节点自身出现故障并恢复后,管控节点对标识信息进行更新,以排除或添加对应的计算节点。
通过在管控节点和/或计算节点出现故障时,管控节点对心跳信息中的标识信息进行更新,并且只有更新了标识信息的计算节点对应的锁信息才能生效。确保了管控节点和/或计算节点出现故障并恢复后的数据的有效性,保护了分布式数据库中数据的安全性。
请参考图6,其示出了本申请一个实施例提供的分布式数据库的锁管理方法的框图。该装置具有实现上述分布式数据库的锁管理方法的功能。该方法可应用于图1所示的分布式数据库系统中,所述装置设置在所述管控节点中。该装置600可以包括:申请消息接收模块610、申请消息验证模块620和锁信息记录模块630。
申请消息接收模块610,用于接收所述多个计算节点中的第一计算节点发送的锁申请消息,所述锁申请消息用于为第一会话申请针对第一数据的第一锁。
申请消息验证模块620,用于根据全局锁管理信息,确定所述锁申请消息是否有效;其中,所述全局锁管理信息包括多个所述计算节点为不同会话申请的针对所述分布式数据库中不同数据的锁。
锁信息记录模块630,用于在确定所述锁申请消息有效的情况下,在所述全局锁管理信息中记录所述第一会话与所述第一锁之间的占用关系。
在示例性实施例中,所述锁申请消息中包括:所述第一锁的名称信息,所述申请消息验证模块620用于:
检测所述全局锁管理信息中是否已记录所述第一锁的名称信息;
若所述全局锁管理信息中未记录所述第一锁的名称信息,则确定所述锁申请消息有效。
在示例性实施例中,所述锁申请消息中还包括:所述第一锁的类型信息,所述类型信息用于指示所述第一锁的类型,所述第一锁的类型为读锁和写锁中的一种;所述申请消息验证模块620用于:
若所述全局锁管理信息中已记录所述第一锁的名称信息,则根据所述第一锁的类型信息,检测所述第一锁是否满足兼容性条件;其中,所述兼容性条件用于指示针对同一数据的多个锁之间的兼容性;
若所述第一锁满足所述兼容性条件,则确定所述锁申请消息有效。
在示例性实施例中,所述申请消息验证模块620用于:
若所述第一锁不满足所述兼容性条件,则确定所述锁申请信息无效;
或者,
若所述第一锁不满足所述兼容性条件,则将所述锁申请信消息放入消息队列中,在所述全局锁管理信息中记录的与所述第一锁不具备兼容性的第二锁被释放之后,从所述消息队列中读取所述锁申请消息,并根据所述锁申请消息,在所述全局锁管理信息中记录所述第一会话与所述第一锁之间的占用关系。
在示例性实施例中,所述锁申请消息中还包括:所述第一计算节点的信息和所述第一会话的信息;所述申请消息验证模块620用于:
检测所述第一计算节点的信息和所述第一会话的信息是否合法;
若所述第一计算节点的信息和所述第一会话的信息合法,则执行所述检测所述全局锁管理信息中是否已记录所述第一锁的名称信息的步骤。
在示例性实施例中,如图7所示,所述装置600还包括:释放消息接收模块640和锁信息删除模块650。
释放消息接收模块640,用于接收所述第一计算节点发送的锁释放消息,所述锁释放消息用于释放所述第一会话占用的所述第一锁。
锁信息删除模块650,用于在根据所述全局锁管理信息确定所述锁释放消息有效的情况下,在所述全局锁管理信息中删除所述第一会话与所述第一锁之间的占用关系。
在示例性实施例中,如图7所示,所述装置600还包括异常处理模块660。
异常处理模块660,用于在所述管控节点发生故障且恢复运行之后,将所述管控节点的磁盘中存储的所述全局锁管理信息加载到所述管控节点的内存中,以及将原始的第一标识信息更新为第二标识信息;向所述全局锁管理信息中记录的各个锁所对应的计算节点发送通知消息,所述通知消息用于指示所述第一标识信息已失效;接收所述第一计算节点对所述第一标识信息进行更新后发送的回复消息,所述回复消息中携带更新后的标识信息;在所述更新后的标识信息与所述第二标识信息相匹配的情况下,确认所述第一计算节点持有的锁继续生效;或者,在超过第一时长未接收到来自所述第一计算节点的心跳信息的情况下,确定所述第一计算节点处于失活状态,以及将原始的第一标识信息更新为第二标识信息;接收所述第一计算节点在从所述失活状态恢复为运行状态后发送的重新申请请求,所述重新申请请求中携带更新后的标识信息;在所述更新后的标识信息与所述第二标识信息相匹配的情况下,确认所述第一计算节点持有的锁继续生效。
本申请通过管控节点和计算节点之间进行交互,对会话对应的数据进行锁的申请和释放,将多个的计算节点为对应的会话申请的对应数据的锁信息都存储在管控节点中。通过对锁信息的统一存储,而不是分别存储在对应的计算节点中,客户端在对数据进行读取和/或写入时,仅需要通过计算节点从管控节点中获取对应的锁信息,而不需要从各个计算节点中搜索锁信息,减少了接收到客户端请求的计算节点在使用数据时对锁信息的获取难度,减少了获取锁信息所消耗的时间,提高了数据处理的效率。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图8,其示出了本申请一个实施例提供的计算机设备的结构示意图。该计算机设备可以是任何具备数据计算、处理和存储功能的电子设备,如服务器等。该计算机设备可以实现上述实施例介绍的管控节点,用于实施上述实施例中提供的分布式数据库的锁管理方法。具体来讲:
该计算机设备800包括中央处理单元(如CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)和FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)等)801、包括RAM(Random-Access Memory,随机存取存储器)802和ROM(Read-Only Memory,只读存储器)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。该计算机设备800还包括帮助服务器内的各个器件之间传输信息的基本输入/输出系统(Input Output System,I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
该基本输入/输出系统808包括有用于显示信息的显示器808和用于对象输入信息的诸如鼠标、键盘之类的输入设备809。其中,该显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。该基本输入/输出系统808还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
该大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。该大容量存储设备807及其相关联的计算机可读介质为计算机设备800提供非易失性存储。也就是说,该大容量存储设备807可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,该计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦写可编程只读存储器)、闪存或其他固态存储技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知该计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
根据本申请实施例,该计算机设备800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备800可以通过连接在该系统总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机系统(未示出)。
存储器还包括计算机程序,该计算机程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述分布式数据库的锁管理方法。
在示例性实施例中,还提供了一种计算机可读存储介质,存储介质中存储有计算机程序,计算机程序在被计算机设备的处理器执行时实现上述实施例提供的分布式数据库的锁管理方法。
可选地,该计算机可读存储介质可以包括:ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存储器)、SSD(Solid State Drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在示例性实施例中,还提供了一种计算机程序产品,计算机程序产品包括计算机指令,计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质中读取计算机指令,处理器执行计算机指令,使得计算机设备执行上述实时分布式数据库的锁管理方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种分布式数据库的锁管理方法,其特征在于,所述分布式数据库包括管控节点和多个计算节点,所述方法由所述管控节点执行,所述方法包括:
接收所述多个计算节点中的第一计算节点发送的锁申请消息,所述锁申请消息用于为第一会话申请针对第一数据的第一锁;
根据全局锁管理信息,确定所述锁申请消息是否有效;其中,所述全局锁管理信息包括多个所述计算节点为不同会话申请的针对所述分布式数据库中不同数据的锁;
在确定所述锁申请消息有效的情况下,在所述全局锁管理信息中记录所述第一会话与所述第一锁之间的占用关系。
2.根据权利要求1所述的方法,其特征在于,所述锁申请消息中包括:所述第一锁的名称信息;
所述根据全局锁管理信息,确定所述锁申请消息是否有效,包括:
检测所述全局锁管理信息中是否已记录所述第一锁的名称信息;
若所述全局锁管理信息中未记录所述第一锁的名称信息,则确定所述锁申请消息有效。
3.根据权利要求2所述的方法,其特征在于,所述锁申请消息中还包括:所述第一锁的类型信息,所述类型信息用于指示所述第一锁的类型,所述第一锁的类型为读锁和写锁中的一种;
所述检测所述全局锁管理信息中是否已记录所述第一锁的名称信息之后,还包括:
若所述全局锁管理信息中已记录所述第一锁的名称信息,则根据所述第一锁的类型信息,检测所述第一锁是否满足兼容性条件;其中,所述兼容性条件用于指示针对同一数据的多个锁之间的兼容性;
若所述第一锁满足所述兼容性条件,则确定所述锁申请消息有效。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一锁的类型信息,检测所述第一锁是否满足兼容性条件之后,还包括:
若所述第一锁不满足所述兼容性条件,则确定所述锁申请信息无效;
或者,
若所述第一锁不满足所述兼容性条件,则将所述锁申请信消息放入消息队列中,在所述全局锁管理信息中记录的与所述第一锁不具备兼容性的第二锁被释放之后,从所述消息队列中读取所述锁申请消息,并根据所述锁申请消息,在所述全局锁管理信息中记录所述第一会话与所述第一锁之间的占用关系。
5.根据权利要求2所述的方法,其特征在于,所述锁申请消息中还包括:所述第一计算节点的信息和所述第一会话的信息;
所述方法还包括:
检测所述第一计算节点的信息和所述第一会话的信息是否合法;
若所述第一计算节点的信息和所述第一会话的信息合法,则执行所述检测所述全局锁管理信息中是否已记录所述第一锁的名称信息的步骤。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述第一计算节点发送的锁释放消息,所述锁释放消息用于释放所述第一会话占用的所述第一锁;
在根据所述全局锁管理信息确定所述锁释放消息有效的情况下,在所述全局锁管理信息中删除所述第一会话与所述第一锁之间的占用关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述管控节点发生故障且恢复运行之后,将所述管控节点的磁盘中存储的所述全局锁管理信息加载到所述管控节点的内存中,以及将原始的第一标识信息更新为第二标识信息;向所述全局锁管理信息中记录的各个锁所对应的计算节点发送通知消息,所述通知消息用于指示所述第一标识信息已失效;接收所述第一计算节点对所述第一标识信息进行更新后发送的回复消息,所述回复消息中携带更新后的标识信息;在所述更新后的标识信息与所述第二标识信息相匹配的情况下,确认所述第一计算节点持有的锁继续生效;
或者,
在超过第一时长未接收到来自所述第一计算节点的心跳信息的情况下,确定所述第一计算节点处于失活状态,以及将原始的第一标识信息更新为第二标识信息;接收所述第一计算节点在从所述失活状态恢复为运行状态后发送的重新申请请求,所述重新申请请求中携带更新后的标识信息;在所述更新后的标识信息与所述第二标识信息相匹配的情况下,确认所述第一计算节点持有的锁继续生效。
8.一种分布式数据库的锁管理装置,其特征在于,所述分布式数据库包括管控节点和多个计算节点,所述装置设置在所述管控节点中,所述装置包括:
申请消息接收模块,用于接收所述多个计算节点中的第一计算节点发送的锁申请消息,所述锁申请消息用于为第一会话申请针对第一数据的第一锁;
申请消息验证模块,用于根据全局锁管理信息,确定所述锁申请消息是否有效;其中,所述全局锁管理信息包括多个所述计算节点为不同会话申请的针对所述分布式数据库中不同数据的锁;
锁信息记录模块,用于在确定所述锁申请消息有效的情况下,在所述全局锁管理信息中记录所述第一会话与所述第一锁之间的占用关系。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,至少一段程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,至少一段程序由处理器加载并执行以实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210369278.0A CN115114305B (zh) | 2022-04-08 | 2022-04-08 | 分布式数据库的锁管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210369278.0A CN115114305B (zh) | 2022-04-08 | 2022-04-08 | 分布式数据库的锁管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115114305A true CN115114305A (zh) | 2022-09-27 |
CN115114305B CN115114305B (zh) | 2023-04-28 |
Family
ID=83324650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210369278.0A Active CN115114305B (zh) | 2022-04-08 | 2022-04-08 | 分布式数据库的锁管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115114305B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115809301A (zh) * | 2023-02-03 | 2023-03-17 | 天翼云科技有限公司 | 数据库处理方法、装置、电子设备及可读存储介质 |
CN116305297A (zh) * | 2023-05-22 | 2023-06-23 | 天云融创数据科技(北京)有限公司 | 一种用于分布式数据库的数据分析方法及系统 |
CN116975076A (zh) * | 2023-07-28 | 2023-10-31 | 深圳市丕微科技企业有限公司 | 一种多终端交互的数据传输控制方法及系统 |
CN117151712A (zh) * | 2023-10-26 | 2023-12-01 | 腾讯科技(深圳)有限公司 | 区块链交易处理方法、装置、计算机设备和存储介质 |
CN117519945A (zh) * | 2023-12-07 | 2024-02-06 | 北京优炫软件股份有限公司 | 一种数据库资源调度方法、装置及系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013381A (zh) * | 2007-01-26 | 2007-08-08 | 华中科技大学 | 基于对象存储系统的分布式锁 |
CN103501338A (zh) * | 2013-09-30 | 2014-01-08 | 华为技术有限公司 | 一种锁恢复方法、设备及网络文件系统 |
CN103731485A (zh) * | 2013-12-26 | 2014-04-16 | 华为技术有限公司 | 一种网络设备、集群存储系统及分布式锁管理方法 |
CN106790694A (zh) * | 2017-02-21 | 2017-05-31 | 广州爱九游信息技术有限公司 | 分布式系统及分布式系统中目标对象的调度方法 |
CN107544850A (zh) * | 2016-06-29 | 2018-01-05 | 百度在线网络技术(北京)有限公司 | 用于控制分布式锁的方法和装置 |
CN111190913A (zh) * | 2019-12-30 | 2020-05-22 | 联动优势(北京)数字科技有限公司 | 一种分布式锁实现方法及系统 |
CN111782669A (zh) * | 2020-06-28 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 一种分布式锁的实现方法、装置及电子设备 |
CN112039970A (zh) * | 2020-08-25 | 2020-12-04 | 北京思特奇信息技术股份有限公司 | 一种分布式业务锁服务方法、服务端、系统及存储介质 |
CN112241400A (zh) * | 2020-10-21 | 2021-01-19 | 衡阳云汇科技有限公司 | 一种基于数据库实现分布式锁的方法 |
CN113076304A (zh) * | 2021-04-16 | 2021-07-06 | 北京沃东天骏信息技术有限公司 | 一种分布式版本管理方法、装置和系统 |
CN113296904A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁调度方法及装置 |
CN113342507A (zh) * | 2021-07-07 | 2021-09-03 | 湖南四方天箭信息科技有限公司 | 一种分布式锁服务实现方法、装置及计算机设备 |
-
2022
- 2022-04-08 CN CN202210369278.0A patent/CN115114305B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013381A (zh) * | 2007-01-26 | 2007-08-08 | 华中科技大学 | 基于对象存储系统的分布式锁 |
CN103501338A (zh) * | 2013-09-30 | 2014-01-08 | 华为技术有限公司 | 一种锁恢复方法、设备及网络文件系统 |
CN103731485A (zh) * | 2013-12-26 | 2014-04-16 | 华为技术有限公司 | 一种网络设备、集群存储系统及分布式锁管理方法 |
CN107544850A (zh) * | 2016-06-29 | 2018-01-05 | 百度在线网络技术(北京)有限公司 | 用于控制分布式锁的方法和装置 |
CN106790694A (zh) * | 2017-02-21 | 2017-05-31 | 广州爱九游信息技术有限公司 | 分布式系统及分布式系统中目标对象的调度方法 |
CN111190913A (zh) * | 2019-12-30 | 2020-05-22 | 联动优势(北京)数字科技有限公司 | 一种分布式锁实现方法及系统 |
CN111782669A (zh) * | 2020-06-28 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 一种分布式锁的实现方法、装置及电子设备 |
CN112039970A (zh) * | 2020-08-25 | 2020-12-04 | 北京思特奇信息技术股份有限公司 | 一种分布式业务锁服务方法、服务端、系统及存储介质 |
CN112241400A (zh) * | 2020-10-21 | 2021-01-19 | 衡阳云汇科技有限公司 | 一种基于数据库实现分布式锁的方法 |
CN113296904A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁调度方法及装置 |
CN113076304A (zh) * | 2021-04-16 | 2021-07-06 | 北京沃东天骏信息技术有限公司 | 一种分布式版本管理方法、装置和系统 |
CN113342507A (zh) * | 2021-07-07 | 2021-09-03 | 湖南四方天箭信息科技有限公司 | 一种分布式锁服务实现方法、装置及计算机设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115809301A (zh) * | 2023-02-03 | 2023-03-17 | 天翼云科技有限公司 | 数据库处理方法、装置、电子设备及可读存储介质 |
CN116305297A (zh) * | 2023-05-22 | 2023-06-23 | 天云融创数据科技(北京)有限公司 | 一种用于分布式数据库的数据分析方法及系统 |
CN116305297B (zh) * | 2023-05-22 | 2023-09-15 | 天云融创数据科技(北京)有限公司 | 一种用于分布式数据库的数据分析方法及系统 |
CN116975076A (zh) * | 2023-07-28 | 2023-10-31 | 深圳市丕微科技企业有限公司 | 一种多终端交互的数据传输控制方法及系统 |
CN116975076B (zh) * | 2023-07-28 | 2024-05-07 | 深圳市丕微科技企业有限公司 | 一种多终端交互的数据传输控制方法及系统 |
CN117151712A (zh) * | 2023-10-26 | 2023-12-01 | 腾讯科技(深圳)有限公司 | 区块链交易处理方法、装置、计算机设备和存储介质 |
CN117151712B (zh) * | 2023-10-26 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 区块链交易处理方法、装置、计算机设备和存储介质 |
CN117519945A (zh) * | 2023-12-07 | 2024-02-06 | 北京优炫软件股份有限公司 | 一种数据库资源调度方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115114305B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115114305B (zh) | 分布式数据库的锁管理方法、装置、设备及存储介质 | |
CN110417844B (zh) | 使用区块链分散管理多所有者节点的系统和方法 | |
US10984134B2 (en) | Blockchain system for leveraging member nodes to achieve consensus | |
US20210234867A1 (en) | Account access security using a distributed ledger and/or a distributed file system | |
CN112840321A (zh) | 用于自动化操作管理的应用程序编程接口 | |
CN110569251A (zh) | 一种数据处理方法、相关设备及计算机可读存储介质 | |
CN103827878B (zh) | 自动化密码管理 | |
CN111061685B (zh) | 日志查询方法、装置、节点设备及存储介质 | |
CN110764871A (zh) | 一种基于云平台的拟态化应用封装与控制系统和方法 | |
CN108073823B (zh) | 数据处理方法、装置及系统 | |
CN108156175A (zh) | 云计算平台下对共享存储信息的访问方法 | |
CN111769956B (zh) | 业务处理方法、装置、设备及介质 | |
JPWO2020080524A1 (ja) | 制御方法、制御システム、第1サーバ、及び、データ構造 | |
CN110519287B (zh) | 一种信息管理方法及相关设备 | |
CN113312339B (zh) | 一种数据迁移的方法及装置、计算机设备和存储介质 | |
CN113312656B (zh) | 数据轮转方法、装置、设备及系统 | |
CN117749423A (zh) | 容器管控方法、装置、计算机设备和存储介质 | |
CN106165367A (zh) | 一种存储装置的访问控制方法、存储装置以及控制系统 | |
JPWO2020080522A1 (ja) | 制御方法、制御システム、第1サーバ、及び、データ構造 | |
US9473508B2 (en) | Method for the protected deposit of event protocol data of a computer system, computer program product and computer system | |
CN112988334B (zh) | 对虚拟化环境下的多台主机进行管理的方法、可读介质 | |
CN108600149A (zh) | 云计算高可用性集群资源管理方法 | |
CN115221136A (zh) | 日志防篡改校验系统、方法、装置和计算机设备 | |
CN114070856A (zh) | 数据处理方法、装置、系统、运维审计设备和存储介质 | |
KR102723058B1 (ko) | 블록체인 네트워크에서 전자지갑을 이용한 합의 처리 방법 및 합의 처리 장치 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230920 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |