CN110659303A - 一种数据库节点的读写控制方法及装置 - Google Patents
一种数据库节点的读写控制方法及装置 Download PDFInfo
- Publication number
- CN110659303A CN110659303A CN201910958309.4A CN201910958309A CN110659303A CN 110659303 A CN110659303 A CN 110659303A CN 201910958309 A CN201910958309 A CN 201910958309A CN 110659303 A CN110659303 A CN 110659303A
- Authority
- CN
- China
- Prior art keywords
- resource
- request
- read
- database
- write
- 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
Links
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
-
- 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
- G06F9/526—Mutual exclusion algorithms
Abstract
本发明实施例提供一种数据库节点的读写控制方法及装置,所述方法包括:并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。所述装置执行上述方法。本发明实施例提供的数据库节点的读写控制方法及装置,实现了对全部数据库节点读写并发控制,使得本发明实施例满足大业务及高实时性的业务需要。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据库节点的读写控制方法及装置。
背景技术
随着计算机技术的不断发展,使得商业和社会机构对日常操作的计算机化要求达到了空前的程度。这些企业、组织、团体的服务器需要面对越来越高的访问强度的要求。基于以上原因,分布式数据库集群技术应运而生,并得到了广泛的发展。分布式数据库技术是将用户的访问负载分摊到集群中多台数据库节点上,多台数据库节点并行处理可以大幅提高数据库系统的承载力,为企业提供技术层的高竞争力。
分布式数据库系统是一种可行的提升数据库系统性能和高可用性的方法,顾名思义,就是利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,向客户端提供透明的数据服务。
在分布式数据库系统中,目前已经普遍采用的做法是每个分布式数据库节点拥有独立的数据存储。由于每个分布式节点数据是独立的、业务是分离的,在不同的数据库节点上不存在并发控制的要求。然而在此种技术架构下,对于一套使用相同数据业务的系统性能受制于单台机器的性能。
发明内容
针对现有技术存在的问题,本发明实施例提供一种数据库节点的读写控制方法及装置。
本发明实施例提供一种数据库节点的读写控制方法,包括:
并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;
若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;
若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
其中,所述根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求,包括:
若所述类型为写请求,则确定与所述写请求相对应的资源是否被其他数据库节点独占;所述其他数据库节点为除目标数据库节点以外的所有数据库节点;其中,所述目标数据库节点为执行所述读写控制方法的数据库节点;
若确定被其他数据库节点独占,则将所述资源请求放入等待队列;
若确定没有被其他数据库节点独占,则授予所述目标数据库节点独占与所述写请求相对应的资源使用权限。
其中,所述根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求,包括:
若所述类型为读请求,则授予所述目标数据库节点与所述读请求相对应的资源使用权限。
其中,所述读写控制方法还包括:
若确定没有资源管理权限,则向具有资源管理权限的其他数据库节点发送所述资源请求。
其中,所述读写控制方法还包括:
在根据资源使用权限完成资源使用之后,释放资源使用权限。
其中,所述读写控制方法还包括:
若检测到所述目标数据库节点发生故障,则向其他数据库节点发送故障检测请求,以使每个其他数据库节点根据故障检测请求分别检测与所述目标数据库节点之间的链路状态,并返回链路状态结果。
其中,所述读写控制方法还包括:
若所述链路状态结果为故障状态,则启动针对所述目标数据库节点的恢复流程;其中,所述恢复流程包括:
恢复所述目标数据库节点的数据;
依次清理预存储的资源使用权限和资源管理权限;
重新生成资源权限和所述目标数据库节点之间的对应关系,以完成所述目标数据库节点的重构;所述资源权限包括资源使用权限和资源管理权限。
本发明实施例提供一种数据库节点的读写控制装置,包括:
第一确定单元,用于并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;
第二确定单元,用于若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;
第三确定单元,用于若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
本发明实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,
所述处理器执行所述计算机程序时实现如下方法步骤:
并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;
若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;
若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法步骤:
并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;
若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;
若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
本发明实施例提供的数据库节点的读写控制方法及装置,通过在每个数据库节点中执行确定是否有资源使用权限、资源管理权限及确定响应策略,并根据响应策略响应资源请求的步骤,实现了对全部数据库节点读写并发控制,使得本发明实施例满足大业务及高实时性的业务需要。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据库节点的读写控制方法实施例流程图;
图2为本发明实施例提供的分布式数据库中的多节点读写并发控制系统的结构示意图;
图3为本发明另一实施例本地节点锁控制模块的控制流程图;
图4为本发明实施例故障处理的流程图;
图5为本发明数据库节点的读写控制装置结构示意图;
图6为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明数据库节点的读写控制方法实施例流程图,如图1所示,本发明实施例提供的一种数据库节点的读写控制方法,包括以下步骤:
S101:并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限。
具体的,并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限。执行该方法步骤的可以是计算机设备,该计算机设备可以具体是分布式数据库中的多节点读写并发控制系统中的数据库节点,本发明实施例将执行该方法的其中一个数据库节点定义为目标数据库节点,多个目标数据库节点可以并发执行该方法。与所述资源请求相对应的资源使用权限可以具体为:与读请求相对应的资源使用权限和与写请求相对应的资源使用权限。本发明实施例是Uxdb RAC的内存融合服务中的核心模块,能够协调一个分布式数据库集群内多个数据库节点,并控制多个数据库节点读写并发访问数据。
可以采用模块化设计的方式实现本发明实施例,图2为本发明实施例提供的分布式数据库中的多节点读写并发控制系统的结构示意图,如图2所示,该系统包括①查询操作控制模块、②写操作控制模块、③本地节点锁控制模块(对应图2中的本节点锁控制模块)、④通信模块和⑤全局锁控制模块。
查询操作控制模块用于协调查询操作(与读操作对应)的访问数据的流程。能够在系统中指引多个数据库节点下的多个数据库连接,以符合ACID(事务管理)特性的方式获取查询操作所应当获取的数据。
写操作控制模块用于协调写操作的访问数据的流程。数据库写操作包含INSERT、UPDATE、DELETE操作。能够在系统中指引多个数据库节点下的多个数据库连接,以符合ACID特性的方式获取写操作所应当获取的数据。
全局锁控制模块用于记录系统中每个数据库节点上对于数据锁的占用情况,并与查询操作控制模块、写操作控制模块共同协调系统的数据访问流程。
本地节点锁控制模块用于记录本地数据库节点的数据锁使用情况。对于一个数据库节点能够建立多个数据库连接,一个数据库连接对应一个数据库服务进程。本地节点锁控制模块记录了本地数据库节点多个数据库服务进程的锁使用情况。在数据库服务进程需要申请一项数据资源的使用权限时,本地节点锁控制模块向全局锁控制模块申请该资源。同时,因为数据库的资源申请、释放属于高并发的场景,每秒钟此种资源的申请频次数以万计乃至十万计。本地节点锁控制模块一方面需要协调本地进程间通信请求的高并发场景,另一方面需要协调由于网络时延不确定性带来的远程请求与回复可能的“后发先至”问题。
通信模块用于在上述系统中,对于查询操作控制模块、写操作控制模块、全局锁控制模块,提供高效、安全地网络收发机制和内部各组件之间的进程间通信机制。
需要说明的是,①查询操作控制模块、②写操作控制模块、③本地节点锁控制模块、④通信模块部署于每个数据库节点上,属于数据库节点的局部任务划分,指引数据库节点下的各个数据库连接服务进程执行正确的数据访问流程。⑤全局锁控制模块,同样部署在每个数据库节点上,但该模块属于全局的任务划分,指引全局各个数据库节点的数据资源加载流程。
全局锁控制模块根据一定的分配规则,生成数据资源-管理节点映射表。每个数据库节点保存了一部分用户数据资源的管理权限,它包含了全局用户数据资源的某个子集的管理权限。每个数据库节点拥有一份这样的子集,集群中各个数据库节点拥有的子集不存在交集,所有子集的并集构成了系统中全部的数据块文件,即全部的用户数据文件资源。此种分布式分配规则在该系统启动时初始化,或在数据库节点数目变更时重新生成。
系统应用于具体数据库业务中的流程,参考图2,数据库服务进程根据自身的操作类型执行①查询操作控制模块或②写操作控制模块对应的流程(对应资源请求为读请求或写请求),后统一流经③本地节点锁控制模块,以检查数据库节点的数据锁使用情况(对应资源使用权限)。
S102:若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限。
具体的,若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限。与所述资源请求相对应的资源管理权限可以具体为:与读请求相对应的资源管理权限和与写请求相对应的资源管理权限。如果数据库节点不存在对应资源的锁(对应有资源使用权限的情况),那么向⑤全局锁控制模块申请对应资源的锁并等待回复,待收到回复后在③本地节点锁控制模块进行记录,然后,可令数据库服务进程使用数据资源并继续执行业务;如果数据库节点拥有对应资源的锁(对应没有资源使用权限的情况),那么在③本地节点锁控制模块进行更新,然后可以使用所申请的数据资源。③本地节点锁控制模块记录了数据库节点内各个数据库服务进程的锁使用情况。当一份数据资源不被各个数据库服务进程使用时,③本地节点锁控制模块向⑤全局锁控制模块释放对应的锁。
③本地节点锁控制模块根据所需要处理的资源与⑤全局锁控制模块进行交互。根据全局锁控制模块的资源分配状态,⑤全局锁控制模块可能负责对应资源的管理权限(对应资源管理权限),也可能该资源管理权限由其他数据库节点负责。对于前者情况,③本地节点锁控制模块与⑤全局锁控制模块进行交互仅需要在数据库节点之内通过进程间通信的方式完成(对应确定有资源管理权限的情况);对于后者情况,此交互流程需要流经通信模块,在其他数据库节点上申请资源,并等待回复(对应确定没有资源管理权限的情况)。
S103:若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
具体的,若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。具体可以包括:
若所述类型为写请求,则确定与所述写请求相对应的资源是否被其他数据库节点独占;所述其他数据库节点为除目标数据库节点以外的所有数据库节点;其中,所述目标数据库节点为执行所述读写控制方法的数据库节点;若确定被其他数据库节点独占,则将所述资源请求放入等待队列;若确定没有被其他数据库节点独占,则授予所述目标数据库节点独占与所述写请求相对应的资源使用权限。即如果是写请求,那么,首先检查该资源是否被其他数据库节点独占,在所申请资源已经被独占的情况下,将请求放入等待队列;在所申请资源未被独占的情况下,授予其独占权,并回复给申请者。
若所述类型为读请求,则授予所述目标数据库节点与所述读请求相对应的资源使用权限。即如果是读请求,那么授予请求者读锁,并回复给申请者。
下面对本发明另一实施例进行说明,在数据库服务进程需要加载一份数据资源时,首先可以确定资源的表ID号(Relation Oid)和数据块号(Block Num)、操作的方式(读或写),以及数据库节点的节点ID号(Node ID)、数据库服务进程ID号(Process ID)。如果是读操作,那么执行①查询操作控制模块对应的流程;如果是写操作,那么执行②写操作控制模块对应的流程。将这些参数封装成消息包发送资源请求到③本地节点锁控制模块,并等待回复。
图3为本发明另一实施例本地节点锁控制模块的控制流程图,如图3所示,该模块在收到资源请求后(对应图3的请求),检查数据库节点是否已经拥有对应资源的使用权限(锁权限),如果有,意味着该数据库节点可以直接使用该资源,那么,回复给请求服务进程并授予它锁申请的资源;如果没有,那么需要向⑤全局锁控制模块提出申请,在需要向⑤全局锁控制模块提出申请时,首先判断该数据库节点的⑤全局锁控制模块是否拥有对应资源的管理权限,如果有,通过进程间通信的方式发送请求到该数据库节点的⑤全局锁控制模块;如果没有,流经通信模块、通过网络请求的方式向拥有管理权限的其他数据库节点发送该请求。
⑤全局锁控制模块在收到了资源请求之后,执行首先判断该请求的操作类型。如果是读请求,那么授予请求者读锁,并回复给申请者;如果是写请求,那么首先检查该资源是否被其他节点独占:在所申请资源已经被占用的情况下,将请求放入等待队列;在所申请资源未被独占的情况下,授予其独占权,并回复给申请者。
在申请资源的数据库服务进程收到回复之后,可以继续数据库内核的处理流程。
为了更好地说明全局锁控制模块所对应的功能,数据操作包括数据库DML操作和DDL操作,DML操作包括SELECT、INSERT、UPDATE、DELETE操作,DDL操作包括数据库表的CREATE、ALTER、DROP、CREATE INDEX等一系列有关表结构定义的操作。
DML操作涉及包括索引数据、堆表数据和系统字典数据,在⑤全局锁控制模块中对应的锁类型为查询操作共享锁和写表操作独占锁,此两种锁的粒度为单项(块)数据资源。查询操作共享锁可被多个分布式节点共享;写表独占锁只能同时被单个数据库节点申请且由其独享,在一个独占锁释放之前不允许其他数据库节点持有该锁。若在一个独占锁释放之前有其他数据库节点申请该锁,那么将该请求放入该资源对应的独占锁等待队列,待独占锁释放之后可逐个取出等待队列中的请求,并授予申请者对应的资源的独占锁,允许申请者以独占的方式操作数据。
DDL操作涉及包括系统字典数据,在⑤全局锁控制模块中对应的锁类型为数据定义独占锁,此种锁的粒度为单表对应的全部数据资源。
在该系统中,上述⑤全局锁控制模块相关的锁与资源管理方式属于全局管理方式。
在数据库事务结束之后(对应在根据资源使用权限完成资源使用之后),需要释放该事务申请的独占锁。释放独占锁的流程首先由③本地节点锁控制模块处理。因为本地多个数据库服务进程可以共享数据库节点申请的所有独占锁,③本地节点锁控制模块在收到了释放独占锁请求之后,首先检查数据库节点中该资源的独占锁占用情况,当该资源没有被数据库节点中的任何数据库服务进程占用时,可向⑤全局锁控制模块发出请求,释放该数据库节点对该资源的独占锁。
⑤全局锁控制模块在收到了独占锁释放请求之后,首先清除该资源的独占锁使用记录。如果该资源存在独占锁等待队列,那么按照先入先出原则从队列中取出第一个请求,授予新的请求者对该资源的独占锁并发送。
本发明实施例提供的数据库节点的读写控制方法,通过在每个数据库节点中执行确定是否有资源使用权限、资源管理权限及确定响应策略,并根据响应策略响应资源请求的步骤,实现了对全部数据库节点读写并发控制,使得本发明实施例满足大业务及高实时性的业务需要。
在上述实施例的基础上,所述根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求,包括:
具体的,若所述类型为写请求,则确定与所述写请求相对应的资源是否被其他数据库节点独占;所述其他数据库节点为除目标数据库节点以外的所有数据库节点;其中,所述目标数据库节点为执行所述读写控制方法的数据库节点;可参照上述说明,不再赘述。
具体的,若确定被其他数据库节点独占,则将所述资源请求放入等待队列;可参照上述说明,不再赘述。
具体的,若确定没有被其他数据库节点独占,则授予所述目标数据库节点独占与所述写请求相对应的资源使用权限。可参照上述说明,不再赘述。
本发明实施例提供的数据库节点的读写控制方法,通过确定与写请求相对应的响应策略,有效实现对数据库节点的写控制。
在上述实施例的基础上,所述根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求,包括:
具体的,若所述类型为读请求,则授予所述目标数据库节点与所述读请求相对应的资源使用权限。可参照上述说明,不再赘述。
本发明实施例提供的数据库节点的读写控制方法,通过确定与读请求相对应的响应策略,有效实现对数据库节点的读控制。
在上述实施例的基础上,所述读写控制方法还包括:
具体的,若确定没有资源管理权限,则向具有资源管理权限的其他数据库节点发送所述资源请求。可参照上述说明,不再赘述。
本发明实施例提供的数据库节点的读写控制方法,通过向具有资源管理权限的其他数据库节点发送资源请求,进而获取资源使用权限,保证了快速获取资源,进一步使得本发明实施例满足大业务及高实时性的业务需要。
在上述实施例的基础上,所述读写控制方法还包括:
具体的,在根据资源使用权限完成资源使用之后,释放资源使用权限。可参照上述说明,不再赘述。
本发明实施例提供的数据库节点的读写控制方法,通过及时释放资源使用权限,提高了资源利用率。
在上述实施例的基础上,所述读写控制方法还包括:
若检测到所述目标数据库节点发生故障,则向其他数据库节点发送故障检测请求,以使每个其他数据库节点根据故障检测请求分别检测与所述目标数据库节点之间的链路状态,并返回链路状态结果。
具体的,若检测到所述目标数据库节点发生故障,则向其他数据库节点发送故障检测请求,以使每个其他数据库节点根据故障检测请求分别检测与所述目标数据库节点之间的链路状态,并返回链路状态结果。上述目标数据库节点还可以包括全局异常协调模块和本地异常处理模块。
全局异常协调模块用于在目标数据库节点发生故障时,协调其他数据库节点的恢复和故障处理流程,保证其他数据库节点能够按照全局统一的步骤分步执行处理流程。
本地异常处理模块用于在目标数据库节点发生故障时,在全局异常协调模块的引导下,执行数据库节点的恢复流程,使得业务不受影响。
全局异常协调模块和本地异常处理模块都部署于每个数据库节点上。全局异常协调模块其中属于一主多备模式。在系统启动时,由各数据库节点选举出主控节点,其余节点为从节点,当主控节点宕机后,在其余健康的从节点中重新选举出主控节点。
在该系统出现故障节点后,全局异常协调模块协调所有现存健康的数据库节点发起投票,在特定算法即控制流程下,确定故障的发生。当此投票验证流程不通过时,可能是由于网络抖动、工作进程繁忙造成的短暂的现象;当此投票验证流程通过时,说明在该系统内部发生故障,全局异常协调模块协调各数据库节点上的本地异常处理模块,以相互协调的顺序和步骤统一地执行恢复操作。
图4为本发明实施例故障处理的流程图,如图4所示,在发现网络连接断开、发送失败、超时时间/次数过长等异常情况下,可认为有可能发生了故障,该系统内每个数据库节点都有可能发现异常,发现此种情况的节点发起异常确认的投票申请(对应故障检测请求),其他数据库节点在收到此种请求后检测本节点与待确认异常的节点之间的连接与消息处理链路:如果链路通畅,则可认为待确认异常的节点为健康状态;否则,认为待确认异常的节点处于故障状态。即链路状态结果包括健康状态和故障状态。在投票确认异常的数据库节点的过程中,由于在多数据库节点场景下,可能存在的多种故障状态,本发明实施例进一步可以对故障状态进行评级,可以分为严重与轻微两种故障等级。可以通过一定的算法,综合票数与故障等级两种因素,可以进一步确认是否执行针对故障节点的恢复流程。
参照图4,恢复流程的第一步,需要恢复该系统的数据内容,该流程需要向系统发出请求,令其扫描数据库日志与恢复故障节点的数据,具体不再赘述。
恢复流程的第二步,对所有健康节点上本地节点锁控制模块做针对故障节点的资源清理。
恢复流程的第三步,对所有健康节点上全局节点锁控制模块做针对故障节点的资源清理。
恢复流程的第四步,重新生成数据资源-管理节点映射表(对应关系),并同步到每个健康节点。
恢复流程的第五步,确定该系统重构完毕,每个数据库节点处于可用的健康状态,至此恢复流程结束。
本发明实施例提供的数据库节点的读写控制方法,通过其他数据库节点能够准确确定目标数据库节点发生故障。
在上述实施例的基础上,所述读写控制方法还包括:
具体的,若所述链路状态结果为故障状态,则启动针对所述目标数据库节点的恢复流程;其中,所述恢复流程包括:
恢复所述目标数据库节点的数据;
依次清理预存储的资源使用权限和资源管理权限;
重新生成资源权限和所述目标数据库节点之间的对应关系,以完成所述目标数据库节点的重构;所述资源权限包括资源使用权限和资源管理权限。可参照上述说明,不再赘述。
本发明实施例提供的数据库节点的读写控制方法,通过启动恢复流程,进一步实现了对全部数据库节点读写并发控制,使得本发明实施例满足大业务及高实时性的业务需要。
图5为本发明数据库节点的读写控制装置结构示意图,如图5所示,本发明实施例提供了一种数据库节点的读写控制装置,包括第一确定单元501、第二确定单元502和第三确定单元503,其中:
第一确定单元501用于并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;第二确定单元502用于若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;第三确定单元503用于若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
具体的,第一确定单元501用于并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;第二确定单元502用于若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;第三确定单元503用于若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
本发明实施例提供的数据库节点的读写控制装置,通过在每个数据库节点中执行确定是否有资源使用权限、资源管理权限及确定响应策略,并根据响应策略响应资源请求的步骤,实现了对全部数据库节点读写并发控制,使得本发明实施例满足大业务及高实时性的业务需要。
本发明实施例提供的数据库节点的读写控制装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图6为本发明实施例提供的电子设备实体结构示意图,如图6所示,所述电子设备包括:处理器(processor)601、存储器(memory)602和总线603;
其中,所述处理器601、存储器602通过总线603完成相互间的通信;
所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据库节点的读写控制方法,其特征在于,包括:
并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;
若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;
若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
2.根据权利要求1所述的读写控制方法,其特征在于,所述根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求,包括:
若所述类型为写请求,则确定与所述写请求相对应的资源是否被其他数据库节点独占;所述其他数据库节点为除目标数据库节点以外的所有数据库节点;其中,所述目标数据库节点为执行所述读写控制方法的数据库节点;
若确定被其他数据库节点独占,则将所述资源请求放入等待队列;
若确定没有被其他数据库节点独占,则授予所述目标数据库节点独占与所述写请求相对应的资源使用权限。
3.根据权利要求2所述的读写控制方法,其特征在于,所述根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求,包括:
若所述类型为读请求,则授予所述目标数据库节点与所述读请求相对应的资源使用权限。
4.根据权利要求3所述的读写控制方法,其特征在于,所述读写控制方法还包括:
若确定没有资源管理权限,则向具有资源管理权限的其他数据库节点发送所述资源请求。
5.根据权利要求4所述的读写控制方法,其特征在于,所述读写控制方法还包括:
在根据资源使用权限完成资源使用之后,释放资源使用权限。
6.根据权利要求2至5任一所述的读写控制方法,其特征在于,所述读写控制方法还包括:
若检测到所述目标数据库节点发生故障,则向其他数据库节点发送故障检测请求,以使每个其他数据库节点根据故障检测请求分别检测与所述目标数据库节点之间的链路状态,并返回链路状态结果。
7.根据权利要求6所述的读写控制方法,其特征在于,所述读写控制方法还包括:
若所述链路状态结果为故障状态,则启动针对所述目标数据库节点的恢复流程;其中,所述恢复流程包括:
恢复所述目标数据库节点的数据;
依次清理预存储的资源使用权限和资源管理权限;
重新生成资源权限和所述目标数据库节点之间的对应关系,以完成所述目标数据库节点的重构;所述资源权限包括资源使用权限和资源管理权限。
8.一种数据库节点的读写控制装置,其特征在于,包括:
第一确定单元,用于并发执行获取资源请求,并确定是否有与所述资源请求相对应的资源使用权限;
第二确定单元,用于若确定没有资源使用权限,则确定是否有与所述资源请求相对应的资源管理权限;
第三确定单元,用于若确定有资源管理权限,则根据所述资源请求的类型确定相应的响应策略,并根据所述响应策略响应所述资源请求;所述类型包括读请求或写请求。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910958309.4A CN110659303A (zh) | 2019-10-10 | 2019-10-10 | 一种数据库节点的读写控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910958309.4A CN110659303A (zh) | 2019-10-10 | 2019-10-10 | 一种数据库节点的读写控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110659303A true CN110659303A (zh) | 2020-01-07 |
Family
ID=69040332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910958309.4A Pending CN110659303A (zh) | 2019-10-10 | 2019-10-10 | 一种数据库节点的读写控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659303A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552740A (zh) * | 2020-04-28 | 2020-08-18 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN112035514A (zh) * | 2020-09-02 | 2020-12-04 | 北京金山云网络技术有限公司 | 一种数据库语句处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902573A (zh) * | 2012-09-20 | 2013-01-30 | 北京搜狐新媒体信息技术有限公司 | 一种基于共享资源的任务的处理方法及装置 |
CN107977376A (zh) * | 2016-10-24 | 2018-05-01 | 腾讯科技(深圳)有限公司 | 分布式数据库系统及事务处理方法 |
CN109697127A (zh) * | 2017-10-24 | 2019-04-30 | 华为技术有限公司 | 一种对共享资源的访问操作加锁的方法和装置 |
CN109753540A (zh) * | 2018-12-03 | 2019-05-14 | 新华三云计算技术有限公司 | 共享资源访问方法、装置及计算机可读取存储介质 |
CN113190529A (zh) * | 2021-04-29 | 2021-07-30 | 电子科技大学 | 一种适用MongoDB数据库的多租户数据共享存储系统 |
-
2019
- 2019-10-10 CN CN201910958309.4A patent/CN110659303A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902573A (zh) * | 2012-09-20 | 2013-01-30 | 北京搜狐新媒体信息技术有限公司 | 一种基于共享资源的任务的处理方法及装置 |
CN107977376A (zh) * | 2016-10-24 | 2018-05-01 | 腾讯科技(深圳)有限公司 | 分布式数据库系统及事务处理方法 |
CN109697127A (zh) * | 2017-10-24 | 2019-04-30 | 华为技术有限公司 | 一种对共享资源的访问操作加锁的方法和装置 |
CN109753540A (zh) * | 2018-12-03 | 2019-05-14 | 新华三云计算技术有限公司 | 共享资源访问方法、装置及计算机可读取存储介质 |
CN113190529A (zh) * | 2021-04-29 | 2021-07-30 | 电子科技大学 | 一种适用MongoDB数据库的多租户数据共享存储系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552740A (zh) * | 2020-04-28 | 2020-08-18 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN111552740B (zh) * | 2020-04-28 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN112035514A (zh) * | 2020-09-02 | 2020-12-04 | 北京金山云网络技术有限公司 | 一种数据库语句处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829350B (zh) | 基于区块链的数据迁移方法和装置 | |
US7814065B2 (en) | Affinity-based recovery/failover in a cluster environment | |
US9569513B1 (en) | Conditional master election in distributed databases | |
CN106843749B (zh) | 写入请求处理方法、装置及设备 | |
KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
CN104793988A (zh) | 跨数据库分布式事务的实现方法和装置 | |
EP3674909A1 (en) | Data transaction processing method, device, and electronic device | |
CN112039970B (zh) | 一种分布式业务锁服务方法、服务端、系统及存储介质 | |
CN107832159A (zh) | 管理分布式锁的方法和计算机可读存储介质 | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
US11409711B2 (en) | Barriers for dependent operations among sharded data stores | |
CN111897666A (zh) | 用于多进程之间通信的方法、设备及系统 | |
CN110825704A (zh) | 一种读数据方法、写数据方法及服务器 | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 | |
US8180846B1 (en) | Method and apparatus for obtaining agent status in a network management application | |
RU2721235C2 (ru) | Способ и система для маршрутизации и выполнения транзакций | |
US20230336557A1 (en) | Resource allocating and management in a computer network | |
US11522966B2 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
CN101523352A (zh) | 用于并发控制的持久锁/资源 | |
US11580082B2 (en) | Object storage system with control entity quota usage mapping | |
US11121981B1 (en) | Optimistically granting permission to host computing resources | |
CN113448775A (zh) | 多源异构数据备份方法及装置 | |
CN112685142A (zh) | 分布式数据处理系统 | |
CN110019057B (zh) | 请求处理方法及装置 | |
RU2714602C1 (ru) | Способ и система для обработки данных |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200107 |