支持分布式数据库的分布锁方法以及分布式数据库系统的制作方法

文档序号:6624025阅读:251来源:国知局
支持分布式数据库的分布锁方法以及分布式数据库系统的制作方法
【专利摘要】本发明提供一种支持分布式数据库的分布锁方法,包括将分布式数据库所需要的锁资源作为一个整体形成虚拟分布式锁管理器,虚拟分布式锁管理器在分布式数据库的每个节点内设置本地映像,并使所有本地映像保持同步;虚拟分布式锁管理器的任一节点的本地映像收到应用系统的请求后,确定与该请求对应的分布式锁对象,并同步到所有其他节点的分布式锁管理器本地映像上;分布式数据库的节点通过虚拟分布式锁管理器的本地映像,来进行数据库的资源锁定操作。本发明的优点是:能够提供给分布式数据库一种事务资源独占方式,避免资源在分布系统下的访问冲突;同时,也能够保障在高可用性和高性能的前提下,资源在分布式数据系统的一致性。
【专利说明】支持分布式数据库的分布锁方法以及分布式数据库系统

【技术领域】
[0001]本发明涉及分布式数据库领域,尤其是涉及一种支持分布式数据库的分布锁方法以及分布式数据库系统。

【背景技术】
[0002]随着信息化技术的快速发展,大型数据库系统需要处理和存储的数据量越来越大,计算越来越复杂,对于性能的挑战也越来越大,性能,可靠性,可扩展性的需求就会越来越强烈,这个时候一个集中式的数据库显然已经满足不了需求了。为了适应应用业务的发展需要,分布式数据库将数据分布在计算机网络的不同节点上,而这些数据在逻辑上属于同一个系统。
[0003]在传统的数据库系统中,当应用并发访问数据库数据资源时,为了保证数据的一致性,通常使用资源锁的方式锁定资源。当一个事务访问资源时,为了避免其他事务对资源进行并发操作,会对该事务进行申请锁操作并获取该资源的独占锁。第二个事务访问到该资源时,执行申请锁操作,由于第一个事务已获得该独占锁,所以申请锁操作会被阻塞,第二个事务即无法执行之后的资源访问操作。该阻塞直到第一个事务完成访问释放锁或第二个事务申请锁操作超时才会结束。
[0004]上述资源锁方式在分布式数据库中,存在着一个问题需要解决:分布式数据库的资源逻辑上属于同一个系统但分布在不同节点上。当事务一和事务二访问分属在不同节点上的同一资源时,由于上述的锁机制仅能在节点本地生效,当分属不同节点的同一资源修改生效后有可能存在冲突,造成该资源的不一致情况发生。
[0005]如图1,假设有三个用户,分别通过分布式数据库的不同节点访问同一张数据表,三个用户同时执行修改表名这一操作。从图中可以看出,三个用户同时访问三个节点,并发出重命名数据表命令。在三个节点上,同时执行成功。由于该数据表在逻辑上属于同一个系统,当三个节点的变更互相同步时发生冲突,造成了数据不一致现象。
[0006]现有的解决方法是采用一个独立节点作为锁管理器,由该节点提供锁服务。分布式数据库的所有节点进行资源访问时向该锁管理器节点进行锁查询,以保证数据一致性。该方式存在的问题是:应用事务的每一次操作都需要访问锁管理器节点,造成了应用事务的性能下降,同时,由于采用独立节点作为锁管理器,一旦该节点发生故障,造成整个分布式数据库无法对外提供服务,降低了系统的高可用性。
[0007]综上所述,现有分布式数据库锁无法在保证高可用性和高性能的前提下保证资源在分布式数据系统的一致性,也无法解决在不同节点上并发访问同一资源的冲突问题。


【发明内容】

[0008]本发明要解决的问题是提供一种支持分布式数据库的分布锁方法,尤其适合于分布式数据库在不同节点上访问同一资源的一致性保证。
[0009]为了解决上述技术问题,本发明采用的设计思想是:按照分布式思想重新架构锁管理器,将分布式数据库不同节点上的锁管理器进行封装,抽象出新的虚拟分布式锁管理器,并提供不同节点上的分布式锁管理器同步机制保证一致性。
[0010]为解决上述技术问题,本发明采用的技术方案是:
[0011]一种支持分布式数据库的分布锁方法,包括
[0012]将分布式数据库所需要的锁资源作为一个整体进行封装,形成虚拟分布式锁管理器,所述虚拟分布式锁管理器在分布式数据库的每个节点内设置本地映像,并建立对应关联关系使所有本地映像保持同步;
[0013]虚拟分布式锁管理器的任一节点的本地映像收到应用系统的请求后,确定与该请求对应的有逻辑关系的分布式锁对象,并同步到所有其他节点的分布式锁管理器本地映像上;
[0014]分布式数据库的节点通过虚拟分布式锁管理器的本地映像,来进行数据库的资源锁定操作。
[0015]进一步的,在发起节点本地分布式锁管理器本地映像上建立分布式锁对象后,同步到其他节点的方式为:向所有节点发送同步通知,其他节点收到同步通知后在本地分布式锁管理器本地映像上建立对应的分布式锁对象并向发起节点返回同步完成标识,每完成一个节点的同步,则该分布式锁对象已完成节点数加一,当已完成节点数等于所有节点数,表示同步过程完成,分布式锁对象建立成功,否则返回失败。
[0016]进一步的,当第二个节点上的虚拟分布式锁管理器本地映像向第一个节点同步分布式锁对象时,第一个节点已存在相同逻辑关系的分布式锁对象,则第二个节点向请求方返回由于已存在相同分布式锁资源,申请失败。
[0017]进一步的,对分布式锁对象的同步过程设定时间阈值,若到达设定时间阈值后已完成同步节点数小于所有节点数,则通知所有节点删除该分布式锁对象并返回创建分布式锁超时失败。
[0018]进一步的,所述分布式锁对象含有的信息内容包括锁定资源名称、分布式锁类型、锁定模式、分布式锁已完成同步节点数量、分布式锁创建时间、分布式锁创建节点、分布式锁当前状态。
[0019]进一步的,确定与该请求对应的有逻辑关系的分布式锁对象,其中逻辑关系是指向分布式锁管理器请求的分布锁对象标识,应用系统通过锁对象标识获取分布式锁对象;分布锁对象标识包括资源名称、分布式锁的类型、分布式锁的锁定模式。
[0020]进一步的,所述分布式锁类型包括数据库锁、数据表锁、视图锁、其他资源锁。
[0021]进一步的,所述分布式锁的锁定模式包括:独占读操作、独占写操作、独占读写操作。
[0022]进一步的,所述分布式锁管理器包含对分布式锁的创建、布式锁的删除、分布式锁的锁状态查询。
[0023]本发明解决的另一个问题是提供一种分布式数据库系统,包括:
[0024]分布式数据库的各个节点,存储允许用户进行数据读写操作的数据;
[0025]虚拟分布式锁管理器,将分布式数据库所需要的锁资源作为一个整体进行封装;
[0026]本地映像,为分布式数据库的每个节点内设置的虚拟分布式锁管理器的本地映像,所有本地映像建立对应关联,保持同步;分布式数据库的各个节点通过虚拟分布式锁管理器的本地映像,来进行数据库的资源锁定操作。
[0027]本发明具有的优点和积极效果是:
[0028]本发明提供的分布锁方法能够提供给分布式数据库一种事务资源独占方式,避免资源在分布系统下的访问冲突;同时,也能够保障在高可用性和高性能的前提下,资源在分布式数据系统的一致性。

【专利附图】

【附图说明】
[0029]图1为现有技术的分布式数据库并发访问资源情况示意图;
[0030]图2为本发明一实施例中分布式数据库并发访问资源情况示意图;
[0031]图3为本发明一实施例中应用事务独占资源执行事务流程图;
[0032]图4为本发明一实施例中分布式锁管理器处理请求流程图;
[0033]图5为本发明一实施例中分布式锁对象同步发送流程图;
[0034]图6为本发明一实施例中本地映像收到同步通知的处理流程图;
[0035]图7为本发明一实施例中分布式数据库中应用事务非独占资源处理流程图;
[0036]图8为本发明一实施例中分布式数据库系统的结构图。

【具体实施方式】
[0037]本发明一种支持分布式数据库的分布锁方法的核心思想是:按照分布式思想重新架构锁管理器,将分布式数据库不同节点上的锁管理器进行封装,抽象出新的虚拟分布式锁管理器,并提供不同节点上的分布式锁管理器同步机制保证一致性。
[0038]具体实现时,首先是,将分布式数据库所需要的锁资源作为一个整体进行封装,形成虚拟分布式锁管理器,所述虚拟分布式锁管理器在分布式数据库的每个节点内设置本地映像,并建立对应关联关系使所有本地映像保持同步;为了便于应用系统的使用,虚拟分布式锁管理器将对分布式锁的创建、布式锁的删除、布式锁的锁状态查询进行封装,为应用系统提供方便的接口。
[0039]当虚拟分布式锁管理器的任一节点的本地映像收到应用系统的请求后,确定与该请求对应的有逻辑关系的分布式锁对象,并同步到所有其他节点的分布式锁管理器本地映像上;之后分布式数据库的节点通过虚拟分布式锁管理器的本地映像,来进行数据库的资源锁定操作。
[0040]所述分布式锁对象含有的信息内容包括锁定资源名称、分布式锁类型、锁定模式、分布式锁已完成同步节点数量、分布式锁创建时间、分布式锁创建节点、分布式锁当前状态。
[0041]上述的确定与该请求对应的有逻辑关系的分布式锁对象,其中逻辑关系是指向分布式锁管理器请求的分布锁对象标识,应用系统通过锁对象标识获取分布式锁对象;分布锁对象标识包括资源名称、分布式锁的类型、分布式锁的锁定模式。
[0042]本发明中所述分布式锁类型包括数据库锁、数据表锁、视图锁、其他资源锁;所述分布式锁的锁定模式包括:独占读操作、独占写操作、独占读写操作。
[0043]下面结合附图2至8对本发明实施例做详细的说明,以图2中的应用事务为例说明本发明可实现的功能:三个应用系统事务分别在不同的节点执行修改“数据表I”操作,在执行修改操作之前需要向虚拟分布式锁管理器申请对“数据表I”的分布式锁对象,由于事务一首先获得了对“数据表I”的分布式锁对象,所以事务二和事务三的申请分布式锁对象操作被阻塞住,停止了后续事务操作,避免了在不同节点上对同一资源操作的冲突。
[0044]本发明的具体实现方式中,应用系统的应用事务的执行过程如图3所示:
[0045]步骤301,应用系统启动事务;
[0046]步骤302,应用系统向虚拟分布式锁管理器申请待访问资源的分布式锁对象,如成功则执行步骤305,否则执行步骤303 ;
[0047]步骤303,由于上一步骤申请分布式锁对象失败,事务阻塞,阻塞时间由系统配置决定;其中阻塞结束可由两种事件触发,1、分布式锁对象的持有者完成事务释放分布式锁对象,2、达到超时;
[0048]步骤304,判断是否是由于阻塞超时造成的停止阻塞。如果是则执行步骤306,否则重新执行步骤302 ;
[0049]步骤305,应用系统获取指定资源的分布式锁对象,可以独占访问指定资源,执行相应事务;
[0050]步骤306,由于超时,返回应用系统;
[0051]步骤307,返回应用系统事务的执行结果,如查询结果或执行结果等信息,完成事务。
[0052]本发明的具体实现方式中,虚拟分布式管理器对应用系统请求进行处理的过程如图4所示;
[0053]步骤401,节点内分布式管理器本地映像模块启动,监听网络通信,准备处理分布式锁请求;
[0054]步骤402,收到分布式锁相关请求;
[0055]步骤403,解析该请求,根据请求信息,判断请求方是应用系统还是其他节点上的分布式锁管理器;如请求来自于应用系统,则执行步骤405,否则执行步骤404 ;
[0056]步骤404,执行本地映像同步操作,在本地节点创建分布式锁对象,并返回给请求发起节点执行结果;
[0057]步骤405,执行分布式锁对象逻辑处理操作,通知分布式数据库内所有节点进行同
I K
少;
[0058]步骤406,判断是否退出,如退出则执行步骤407,否则继续执行步骤402 ;
[0059]步骤407,分布式管理器本地映像模块退出。
[0060]在发起节点本地分布式锁管理器本地映像上建立分布式锁对象后,同步到其他节点的方式为:向所有节点发送同步通知,其他节点收到同步通知后在本地分布式锁管理器本地映像上建立对应的分布式锁对象并向发起节点返回同步完成标识,每完成一个节点的同步,则该分布式锁对象已完成节点数加一,当已完成节点数等于所有节点数,表示同步过程完成,分布式锁对象建立成功,否则返回失败;
[0061]同时,对分布式锁对象的同步过程设定时间阈值,若到达设定时间阈值后已完成同步节点数小于所有节点数,则通知所有节点删除该分布式锁对象并返回创建分布式锁超时失败;
[0062]本发明的上述步骤的具体实现方式中,以创建一个分布式锁对象为例,同步过程如图5所示:
[0063]步骤501,节点上的分布式锁管理器本地映像收到创建分布式锁对象任务;
[0064]步骤502,查看是否存在相同定义的分布式锁对象,判断条件为待锁定资源名称、分布式锁类型、分布式锁的锁定模式完全一致;如已存在,则执行步骤511,否则执行步骤503 ;
[0065]步骤503,根据分布式数据库信息,获取分布式数据库节点数,并记录下来;
[0066]步骤504,在本地节点的分布式锁管理器映像内创建分布式锁对象,同时设置该对象已完成节点数为O ;
[0067]步骤505,根据步骤503获取的节点列表,向所有节点发送同步通知;该同步通知包括本次创建的分布式锁对象信息,信息内容包括分布式锁锁定资源名称、分布式锁类型、分布式锁的锁定模式、分布式锁创建时间、分布式锁创建节点等。
[0068]步骤506,判断该分布式锁对象的已完成节点数是否等于节点总数,如相等,则执行步骤511,否则执行步骤507 ;
[0069]步骤507,等待其他节点返回的同步信息。如果该节点返回成功,则分布式锁对象的已完成节点数加一,并继续执行步骤508 ;如节点返回的信息为失败,则执行步骤509 ;
[0070]步骤508,判断等待其他节点返回是否超时,如超时则执行步骤509,否则,重新执行步骤506 ;
[0071]步骤509,如果其他节点同步分布式锁对象失败,则删除本地分布式锁对象,并通知所有节点,删除此分布式锁对象;如果该节点已同步该分布式锁对象,则删除,如该节点未存在,则忽略;
[0072]步骤510,创建分布式锁对象失败,返回;
[0073]步骤511,创建分布式锁对象成功,返回。
[0074]当第二个节点上的虚拟分布式锁管理器本地映像向第一个节点同步分布式锁对象时,第一个节点已存在相同逻辑关系的分布式锁对象,则第二个节点向请求方返回由于已存在相同分布式锁资源,申请失败;
[0075]本发明的上述步骤的具体实现方式中,仍然以创建分布式锁对象的过程举例,收到其他节点发送的同步请求时的处理流程如图6所示:
[0076]步骤601,收到其他节点发送的同步请求;
[0077]步骤602,检测请求,判断该请求是否发送自本节点,如发送自本节点,则执行步骤606,如发送自其他节点,执行步骤603 ;
[0078]步骤603,检测节点内是否已有相同逻辑的该分布锁对象,如已存在,则执行步骤604返回发起方失败信息,否则执行步骤605 ;
[0079]步骤604,返回通知发起方同步失败;
[0080]步骤605,根据同步信息,创建本地分布式锁对象;
[0081]步骤606,返回通知发起方同步成功。
[0082]本发明的具体实现方式中,当应用事务对资源执行非独占访问时,不需要申请对该资源的独占锁,而仅需要查询在节点内是否存在分布式锁对象的映像,以判断该资源是否已被别的事务申请了独占锁;具体的处理流程如图7所示:
[0083]步骤701:收到应用事务发送的事务;
[0084]步骤702:解析事务,获取对应的资源名称、资源类型、访问的方式;
[0085]步骤703:根据步骤702获取的信息,查询本地是否存在对应逻辑的分布式锁对象。如本地存在对应逻辑关系的分布式锁对象,则执行步骤705,否则执行步骤707 ;
[0086]步骤704:执行阻塞,将应用查询线程挂起;
[0087]步骤705:判断是否事务执行已超时,如超时执行步骤706,否则重复执行步骤703 ;
[0088]步骤706:返回应用执行超时;
[0089]步骤707:返回应用成功,可继续执行应用事务。
[0090]本发明提供的一种分布式数据库系统,包括:
[0091]分布式数据库的各个节点,存储允许用户进行数据读写操作的数据;
[0092]虚拟分布式锁管理器,将分布式数据库所需要的锁资源作为一个整体进行封装;
[0093]本地映像,为分布式数据库的每个节点内设置的虚拟分布式锁管理器的本地映像,所有本地映像建立对应关联,保持同步;分布式数据库的各个节点通过虚拟分布式锁管理器的本地映像,来进行数据库的资源锁定操作。
[0094]如图8所示,本发明的分布式数据库系统的工作过程为:应用系统首先向虚拟分布式锁管理器申请分布式锁对象,虚拟分布式锁管理器将该请求对应的分布式锁对象同步到分布式数据库的每个节点,同步成功后,应用系统访问被独占的资源。
[0095]以上对本发明的实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。
【权利要求】
1.一种支持分布式数据库的分布锁方法,其特征在于,包括 将分布式数据库所需要的锁资源作为一个整体进行封装,形成虚拟分布式锁管理器,所述虚拟分布式锁管理器在分布式数据库的每个节点内设置本地映像,并建立对应关联关系使所有本地映像保持同步; 虚拟分布式锁管理器的任一节点的本地映像收到应用系统的请求后,确定与该请求对应的有逻辑关系的分布式锁对象,并同步到所有其他节点的分布式锁管理器本地映像上; 分布式数据库的节点通过虚拟分布式锁管理器的本地映像,来进行数据库的资源锁定操作。
2.根据权利要求1所述的支持分布式数据库的分布锁方法,其特征在于:在发起节点本地分布式锁管理器本地映像上建立分布式锁对象后,同步到其他节点的方式为:向所有节点发送同步通知,其他节点收到同步通知后在本地分布式锁管理器本地映像上建立对应的分布式锁对象并向发起节点返回同步完成标识,每完成一个节点的同步,则该分布式锁对象已完成节点数加一,当已完成节点数等于所有节点数,表示同步过程完成,分布式锁对象建立成功,否则返回失败。
3.根据权利要求2所述的支持分布式数据库的分布锁方法,其特征在于:当第二个节点上的虚拟分布式锁管理器本地映像向第一个节点同步分布式锁对象时,第一个节点已存在相同逻辑关系的分布式锁对象,则第二个节点向请求方返回由于已存在相同分布式锁资源,申请失败。
4.根据权利要求2或3所述的支持分布式数据库的分布锁方法,其特征在于:对分布式锁对象的同步过程设定时间阈值,若到达设定时间阈值后已完成同步节点数小于所有节点数,则通知所有节点删除该分布式锁对象并返回创建分布式锁超时失败。
5.根据权利要求1至3任一所述的支持分布式数据库的分布锁方法,其特征在于:所述分布式锁对象含有的信息内容包括锁定资源名称、分布式锁类型、锁定模式、分布式锁已完成同步节点数量、分布式锁创建时间、分布式锁创建节点、分布式锁当前状态。
6.根据权利要求1所述的支持分布式数据库的分布锁方法,其特征在于:确定与该请求对应的有逻辑关系的分布式锁对象,其中逻辑关系是指向分布式锁管理器请求的分布锁对象标识,应用系统通过锁对象标识获取分布式锁对象;分布锁对象标识包括资源名称、分布式锁的类型、分布式锁的锁定模式。
7.根据权利要求5或6所述的支持分布式数据库的分布锁方法,其特征在于:所述分布式锁类型包括数据库锁、数据表锁、视图锁、其他资源锁。
8.根据权利要求5或6所述的支持分布式数据库的分布锁方法,其特征在于:所述分布式锁的锁定模式包括:独占读操作、独占写操作、独占读写操作。
9.根据权利要求1所述的支持分布式数据库的分布锁方法,其特征在于:所述分布式锁管理器包含对分布式锁的创建、布式锁的删除、分布式锁的锁状态查询。
10.一种分布式数据库系统,其特征在于包括: 分布式数据库的各个节点,存储允许用户进行数据读写操作的数据; 虚拟分布式锁管理器,将分布式数据库所需要的锁资源作为一个整体进行封装; 本地映像,为分布式数据库的每个节点内设置的虚拟分布式锁管理器的本地映像,所有本地映像建立对应关联,保持同步;分布式数据库的各个节点通过虚拟分布式锁管理器的本地映像,来进行数据库的资源锁定操作。
【文档编号】G06F17/30GK104239418SQ201410409583
【公开日】2014年12月24日 申请日期:2014年8月19日 优先权日:2014年8月19日
【发明者】吕迅, 高宏达, 陈文亭, 朱宏军 申请人:天津南大通用数据技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1