分布式数据库的管理方法、装置、系统、介质及电子设备与流程

文档序号:18544091发布日期:2019-08-27 21:30阅读:198来源:国知局
本发明的实施方式涉及数据库
技术领域
:,更具体地,本发明的实施方式涉及一种分布式数据库的管理方法、分布式数据库的管理装置、分布式数据库系统、存储介质及电子设备。
背景技术
::本部分旨在为权利要求中陈述的本发明的实施方式提供背景或上下文,此处的描述不因为包括在本部分中就承认是现有技术。在分布式数据库中,由于不同节点均可以独立的进行数据读写,当有多个节点同时操作时,可能影响数据的一致性和正确性,因此需要对数据库实行冲突检查管理。目前,业界普遍的做法是基于写集合(writeset)进行冲突检查。写集合是指记录事务对数据进行插入、更新和删除的dml(datamanipulationlanguage,数据操纵语言)所形成的集合,各节点可以通过写集合检查事务的逻辑,以对并行事务进行认证(certify),决定提交(commit)还是回滚(rollback),并确定事务之间的并行回放顺序等,从而保证数据的一致性和正确性。技术实现要素:然而,在现有技术中,写集合的数量或者总字节量不可控,例如在mgr(mysqlgroupreplication,mysql组复制)集群中,等待认证和等待回放的事务个数的上限均为25000个,每个事务的大小上限为150mb,这意味着在分布式数据库的单个节点上,所存储的写集合总字节量可能达到25000*150mb=3750gb,这将占据大量的系统资源。实际应用中,即使未达到上限值,当并行事务数量较多时,单个节点上也需要存储与维护大量的写集合,以保证数据库的逻辑。这种情况在大型分布式数据库系统中,特别是具有写权限的节点数量较多时,愈发严重。由于写集合占用大量系统资源,会造成数据库性能的波动,影响数据库业务的正常进行。为此,非常需要一种改进的分布式数据库的管理方法,可以在存储了大量写集合的情况下,维持数据库业务的正常进行。在本上下文中,本发明的实施方式期望提供一种分布式数据库的管理方法、分布式数据库的管理装置、分布式数据库系统、存储介质及电子设备。根据本发明实施方式的第一方面,提供一种分布式数据库的管理方法,应用于分布式数据库的任一节点,所述方法包括:监测本节点已存储的写集合的数量和/或所述写集合的总字节量;响应于所述写集合的数量超过第一阈值或所述写集合的总字节量超过第二阈值,对所述本节点的事务处理速度进行控制。在本发明的一种实施方式中,所述监测本节点已存储的写集合的数量和/或所述写集合的总字节量,包括:按照第一时间间隔,周期性地监测所述本节点已存储的写集合的数量和/或所述写集合的总字节量;所述响应于所述写集合的数量超过第一阈值或所述写集合的总字节量超过第二阈值,对所述本节点的事务处理速度进行控制,包括:如果所述写集合的数量在上一周期小于或等于所述第一阈值,且在当前周期大于所述第一阈值,则降低所述本节点的事务处理速度;如果所述写集合的数量在上一周期大于所述第一阈值,且在当前周期小于或等于所述第一阈值,则提高所述本节点的事务处理速度;或者,如果所述写集合的总字节量在上一周期小于或等于所述第二阈值,且在当前周期大于所述第二阈值,则降低所述本节点的事务处理速度;如果所述写集合的总字节量在上一周期大于所述第二阈值,且在当前周期小于或等于所述第二阈值,则提高所述本节点的事务处理速度。在本发明的一种实施方式中,所述降低所述本节点的事务处理速度,包括:获取所述本节点当前的事务处理速度tps_cur;设置所述本节点的事务处理速度的上限值为tps_cur;在第一预设时间内将所述上限值由tps_cur平滑地降低到tps_cur*k;所述提高所述本节点的事务处理速度,包括:获取所述本节点当前的事务处理速度tps_cur;设置所述本节点的事务处理速度的上限值为tps_cur;在第二预设时间内将所述上限值由tps_cur平滑地提高到tps_cur*j;其中,k为小于1的正实数,j为大于1的实数。在本发明的一种实施方式中,所述方法还包括:获取所述分布式数据库当前所处的模式;如果所述分布式数据库当前处于第一模式,则周期性地清理所述本节点已存储的全部写集合;如果所述分布式数据库当前处于第二模式,则周期性地清理所述本节点已存储的属于公共子集的写集合;其中,所述第一模式为单主模式,所述第二模式为多主模式,或者所述第一模式为单节点写入模式,所述第二模式为多节点写入模式;所述公共子集为所述分布式数据库的各节点所存储的写集合的交集。在本发明的一种实施方式中,所述周期性地清理所述本节点已存储的全部写集合,包括:按照第二时间间隔,周期性地检测所述本节点已存储的写集合的数量是否超过第三阈值,若是,则删除所述本节点已存储的全部写集合。在本发明的一种实施方式中,所述周期性地清理所述节点上已存储的属于公共子集的写集合,包括:按照第三时间间隔,周期性地,在所述分布式数据库中广播所述本节点的已执行事务集合,接收其他节点的已执行事务集合,根据所述本节点的已执行事务集合和所述其他节点的已执行事务集合确定所述公共子集,并删除所述本节点已存储的写集合中属于所述公共子集的写集合。在本发明的一种实施方式中,所述方法还包括:如果所述分布式数据库当前处于所述第一模式,在存储新的写集合时,将所述新的写集合中的事务标识字段置为空值。根据本发明实施方式的第二方面,提供一种分布式数据库的管理装置,应用于分布式数据库的任一节点,所述装置包括:监测模块,用于监测本节点已存储的写集合的数量和/或所述写集合的字节量;控制模块,用于响应于所述写集合的数量超过第一阈值或所述写集合的字节量超过第二阈值,对所述本节点的事务处理速度进行控制。在本发明的一种实施方式中,所述监测模块,用于按照第一时间间隔,周期性地监测所述本节点已存储的写集合的数量和/或所述写集合的总字节量;所述控制模块包括:第一控制单元,用于如果所述写集合的数量在上一周期小于或等于所述第一阈值、且在当前周期大于所述第一阈值,或者,如果所述写集合的总字节量在上一周期小于或等于所述第二阈值、且在当前周期大于所述第二阈值,则降低所述本节点的事务处理速度;第二控制单元,用于如果所述写集合的数量在上一周期大于所述第一阈值、且在当前周期小于或等于所述第一阈值,或者,如果所述写集合的总字节量在上一周期大于所述第二阈值、且在当前周期小于或等于所述第二阈值,则提高所述本节点的事务处理速度。在本发明的一种实施方式中,所述第一控制单元包括:当前速度获取单元,用于获取所述本节点当前的事务处理速度tps_cur;上限值设置单元,用于设置所述本节点的事务处理速度的上限值为tps_cur;上限值降低单元,用于在第一预设时间内将所述上限值由tps_cur平滑地降低到tps_cur*k;所述第二控制单元包括:当前速度获取单元,用于获取所述本节点当前的事务处理速度tps_cur;上限值设置单元,用于设置所述本节点的事务处理速度的上限值为tps_cur;上限值提高单元,用于在第二预设时间内将所述上限值由tps_cur平滑地提高到tps_cur*j;其中,k为小于1的正实数,j为大于1的实数。在本发明的一种实施方式中,所述装置还包括清理模块,所述清理模块包括以下单元:模式获取单元,用于获取所述分布式数据库当前所处的模式;第一清理单元,用于如果所述分布式数据库当前处于第一模式,则周期性地清理所述本节点已存储的全部写集合;第二清理单元,用于如果所述分布式数据库当前处于第二模式,则周期性地清理所述本节点已存储的属于公共子集的写集合;其中,所述第一模式为单主模式,所述第二模式为多主模式,或者所述第一模式为单节点写入模式,所述第二模式为多节点写入模式;所述公共子集为所述分布式数据库的各节点所存储的写集合的交集。在本发明的一种实施方式中,所述第一清理单元,用于按照第二时间间隔,周期性地检测所述本节点已存储的写集合的数量是否超过第三阈值,若是,则删除所述本节点已存储的全部写集合。在本发明的一种实施方式中,所述第二清理单元,用于按照第三时间间隔,周期性地,在所述分布式数据库中广播所述本节点的已执行事务集合,接收其他节点的已执行事务集合,根据所述本节点的已执行事务集合和所述其他节点的已执行事务集合确定所述公共子集,并删除所述本节点已存储的写集合中属于所述公共子集的写集合。在本发明的一种实施方式中,所述装置还包括:存储模块,用于如果所述分布式数据库当前处于所述第一模式,在存储新的写集合时,将所述新的写集合中的事务标识字段置为空值。根据本发明实施方式的第三方面,提供一种分布式数据库系统,包括多个节点,所述多个节点中至少一个节点执行上述任意一项所述的分布式数据库的管理方法。根据本发明实施方式的第四方面,提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的分布式数据库的管理方法。根据本发明实施方式的第五方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的分布式数据库的管理方法。根据本发明实施方式的分布式数据库的管理方法、分布式数据库的管理装置、分布式数据库系统、存储介质及电子设备,通过监测本节点已存储的写集合的数量和写集合的总字节量,在写集合的数量超过第一阈值或写集合的总字节量超过第二阈值时,采取流控措施,对本节点的事务处理速度进行控制,可以改善由于写集合占用系统资源而导致的数据库性能剧烈波动的情况,保证业务的正常进行。进一步的,在本发明的一些实施方式中,根据数据库当前所处的模式,采取对应的写集合清理策略,具有较强的灵活性,可以及时清理无用的写集合,释放系统资源,以用于业务运行,从而提高数据库的效率。附图说明通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:图1示出了mgr集群对事务的处理过程;图2示出了事务全局排序的过程;图3示出了事务冲突检查的过程;图4示出了事务并行回放的过程;图5示出了现有技术中的数据库性能曲线图;图6示出了根据本发明实施方式的一种分布式数据库系统;图7示出了根据本发明实施方式的一种分布式数据库的管理方法的流程图;图8示出了根据本发明实施方式的一种分布式数据库的管理方法的子流程图;图9示出了根据本发明实施方式的另一种分布式数据库的管理方法的流程图;图10示出了采用现有技术与本发明实施方式的数据库性能曲线对比图;图11示出了根据本发明实施方式的一种分布式数据库的管理装置的结构方框图;图12示出了根据本发明实施方式的存储介质的示意图;以及图13示出了根据本发明实施方式的电子设备的结构方框图。在附图中,相同或对应的标号表示相同或对应的部分。具体实施方式下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。根据本发明的实施方式,提供一种分布式数据库的管理方法、分布式数据库的管理装置、分布式数据库系统、存储介质及电子设备。在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。下面参考本发明的若干代表性实施方式,详细阐述本发明的原理和精神。发明概述在mgr集群中,对于并行事务的处理过程如图1所示,节点1、节点2、节点3表示集群的3个主节点(master),具有写权限。如果节点1执行事务t1,t1在提交前,会进入mgr集群的一致性协议层(concensus),然后t1的信息会发送到各节点,每个节点主要基于冲突检查对t1进行认证,在全部认证通过后,节点1可以将t1写入主日志库(binlog),然后提交;其他节点可以将t1先写入从日志库(relaylog),然后在本地数据库中并行回放t1(apply),再将t1写入主日志库,并提交。下面对一致性协议层、冲突检查、并行回放(或称并行复制)等几个主要过程做进一步说明:节点1在执行本地事务t1后,系统收集t1的相关信息,主要包括t1的写集合,也可以包括t1的快照版本(snapshot_version,表示执行节点在执行t1时,已执行的事务标识集合),t1的操作日志等,与此同时,如果其他节点上也执行了本地事务,例如节点2执行t2,节点3执行t3,系统也会收集这些事务的信息,在一致性协议层中,对并发的所有事务进行全局排序,将排序结果以及各事务的信息返回给集群中的每个节点,每个节点收到的事务顺序都是一致的。如图2所示,t1、t2、t3经过全局排序,其顺序为t3、t1、t2,每个节点都可以收到t1、t2、t3的事务信息,以及上述顺序。每个节点收到事务信息后,会基于本节点的冲突检查数据库对事务进行认证,根据认证的结果决定对事务进行提交还是回滚。冲突检查数据库汇总了本节点已执行的事务写集合信息,可以参考表1所示,其中,pkhash(primarykeyhash,主键哈希值)表示事务所操作的数据在数据库中的主键哈希值,gtid_set(globaltransactionidentifier_set,全局事务标识的集合)表示在该主键上所进行的事务的标识(通常为事务的序号)的集合,这两列用于进行冲突检查,sequence_number列用于在通过认证后确定非本节点事务在本节点的并行回放顺序。一个事务如果更新了数据库中的n行,那么在冲突检查数据库中就会有至少n行的记录。表1每个节点会基于相同的规则,对每个事务进行冲突检查,虽然各节点间不会就各自的认证结果进行沟通,但各节点独立做出的认证结果是完全一致的。下面举例说明属于节点2的事务t2经过全局排序后在节点1上的认证过程。如图3所示,t2更新了数据库db1的t1表中主键为1的记录,事务执行该更新时,节点2的数据快照版本为group_name:1-100。而图3示出了节点1的冲突检查数据库,其中t1表主键为1的数据快照版本为group_name:1-50,这说明,节点1的数据落后于执行事务的节点2,所以t2认证通过。认证通过后,mgr集群会为t2分配gtid,为group_name:101,并更新节点1冲突检查数据库中t1表主键为1的数据快照版本,如图3中下侧的表所示,更新为group_name:1-101。在进行冲突检查后,事务需要在各节点上进行并行回放,如图4所示,如果节点1的全局last_committed(事务信息中用于标识组提交的字段)为60,主键为1的写集合的sequence_number为120,说明与t2有冲突的最大事务序号为120,所以t2必须等序号为120的事务回放完后才能回放,即确定t2的last_committed为120,并将当前的全局sequence_number赋予t2,为387。最终将t2的完整日志信息写入到节点1的从日志库中,由mgr集群的并行回放线程进行事务回放。回放后,再将其写入节点1的主日志库,并完成提交。随着不断有事务认证通过,冲突检查数据库会积累越来越多的写集合。如果事务t2经过认证且已经在mgr集群的各个节点都完成了提交,也就是说各节点的已执行事务标识(gtid_executed)中都包含了t2的gtid,由于事务在集群中的全局有序性,还未被认证的事务,其执行一定在本节点执行t2之后,那么后续认证的事务与t2不存在冲突,因此t2的写集合可以从冲突检查数据库中清理掉。基于此,在现有技术中,mgr集群的各个节点每隔60s会广播一次本节点的已执行事务标识,各节点收集一轮完整的已执行事务标识后取交集,得到公共子集(stable_gtid_set),然后各节点将在各自的冲突检查数据库中,过滤出gtid_set为公共子集的那些事务,将其写集合清理掉。由上可知,在分布式数据库中,各节点基于事务的写集合建立并维护冲突检查数据库,以在发生并行事务时实现认证、回放、提交等一些列处理流程,这对于保证数据的一致性和正确性是必需的。然而,由于写集合的数量或者总字节量不可控,其占据大量的系统资源,会造成数据库性能的波动,影响数据库业务的正常进行。图5示出了数据库运行的性能曲线,其中,事务处理速度(transactionspersecond,tps,意为每秒处理事务量)曲线受到写集合的影响,呈现出周期性地波动,特别当写集合数量较多时,tps出现骤降,此时事务处理延迟(responsetime,rt,意为响应时间)曲线出现骤升,非常不利于业务的正常进行。鉴于上述内容,本发明的基本思想在于:提供一种分布式数据库的管理方法、分布式数据库的管理装置、分布式数据库系统、存储介质及电子设备,通过监测本节点已存储的写集合的数量和写集合的总字节量,在写集合的数量超过第一阈值或写集合的总字节量超过第二阈值时,采取流控措施,对本节点的事务处理速度进行控制,可以改善由于写集合占用系统资源而导致的数据库性能剧烈波动的情况,保证业务的正常进行。进一步的,在本发明的一些实施方式中,根据数据库当前所处的模式,采取对应的写集合清理策略,具有较强的灵活性,可以及时清理无用的写集合,释放系统资源,以用于业务运行,从而提高数据库的效率。在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。应用场景总览需要注意的是,下述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。本发明可以应用于分布式数据库的所有场景,例如:在大型电商、新闻、游戏等应用中,利用分布式部署的数据库解决并发访问的问题,如果同一时间整个系统内并发大量的数据库写操作,则各节点上需要执行大量的并行复制,在此情况下,通过本发明实施方式对各节点的性能进行管控,以减少oom(outofmemory,内存不足)引起的宕机或系统崩溃;在分布式部署的云存储系统中,通过本发明实施方式对云存储系统的性能进行管控,以保证业务的正常进行。示例性方法本发明的示例性实施方式首先提供一种分布式数据库的管理方法。如图6所示,该分布式数据库系统600可以包括多个节点610、620、630与网络640,每个节点管理与维护本地数据库,节点在实体上可以是:服务器与本地数据库形成的子系统610,计算机与本地数据库形成的子系统620,或集成了服务器功能的本地数据库630等等。应当理解,图6仅仅示出了分布式数据库系统的基本架构情况,其中,根据实际需要,可以设置任意数量的节点,且每个节点还可以配置为主从结构,或者添加其他组件以形成类似于610或620的子系统结构,等等。本示例性实施方式的执行主体可以是分布式数据库的任一节点,图7示出了本示例性实施方式的方法流程,可以包括步骤s710与s720:步骤s710,监测本节点已存储的写集合的数量和/或写集合的总字节量。由前述内容可知,写集合用于对并行事务进行处理,如果某一时间,等待认证和等待回放的事务数量很高,则节点需要维护大量的写集合,以保证事务认证与回放的逻辑;在周期性清理写集合时,只有确定与后续事务不会产生冲突的已执行事务的写集合可以被清理。可见,在每个节点上,写集合的数量和总字节量是经常变动的。本示例性实施方式中,可以对这两个参数中的至少一个进行监测,例如:可以设置关于写集合数量的变量certification_writeset_count,该变量的值即为写集合的数量,无需计算,直接监测得到;可以设置关于写集合总字节量(即写集合占用内存的总量)的变量writeset_db_memsize,为每个写集合的字节量之和,统计并监测该变量的值。如前所述,写集合主要包括pkhash、gtid_set和sequence_number这3个字段,其中pkhash和sequence_number通常为固定字节数,而gtid_set的字节数在不同的写集合中可能不同,因此,在实际运行中,只要统计出每个写集合的gtid_set字节数,即可计算出写集合的总字节量。或者,本示例性实施方式也可以采用增量统计的方式,当事务认证通过,将其写集合写入冲突检查数据库时,在writeset_db_memsize值上加上该写集合的字节量,当写集合被清理时,在writeset_db_memsize值上减掉对应写集合的字节量。需要说明的是,在分布式数据库中,由于各节点所存储的写集合的情况可能不同,对于上述两个参数的监控是由各节点分别执行的,即每个节点可以监控本节点已存储的写集合的数量和写集合的总字节量。步骤s720,响应于写集合的数量超过第一阈值或写集合的总字节量超过第二阈值,对本节点的事务处理速度进行控制。其中,第一阈值和第二阈值为预设的衡量标准,用于判断本节点已存储的写集合数量是否过多,或写集合占用的内存空间是否过多,例如可以设置两个阈值为writeset_count_threshold和writeset_db_memsize_threshold,实时监控是否满足certification_writeset_count>writeset_count_threshold,或者writeset_db_memsize>writeset_db_memsize_threshold。通常在不影响正常业务性能的前提下,将本节点能够承载的写集合的最大数量和最大字节量作为第一阈值和第二阈值,可以根据数据库的历史运行状况、经验、本节点的物理性能等确定第一阈值和第二阈值,本发明对此不做特别限定。考虑到不同节点的状况和物理性能的不同,也可以为不同节点设置不同的第一阈值和第二阈值。当满足步骤s720的条件时,说明存储的写集合过多,可能影响本节点进行正常业务,可以采取流控措施,即对本节点的事务处理速度进行控制。其中,事务处理速度是指本节点在单位时间内处理的所有事务的总量,通常用tps来度量。本示例性实施方式中,具体而言,可以对事务处理速度进行限制,例如控制单位时间内进入本节点处理队列的事务数量,写集合的数量超过第一阈值的程度越高,或者写集合的总字节量超过第二阈值的程度越高,控制事务数量越低,从而缓解本节点无力处理大量并发事务所导致的性能剧烈波动。进一步的,在oltp(on-linetransactionprocessing,联机事务处理)等联机处理类型的数据库系统中,系统可以在各节点之间进行任务量的调配,如果节点1由于存储的写集合过多,限制事务处理速度在较低的水平,而节点2状态正常,则系统可以将节点1的一部分联机事务分配到节点2处理,从而提高整体的效率。需要说明的是,在图7的方法流程中,对于写集合的数量和总字节量两个参数,可以仅监测其中的一个参数。考虑到不同写集合的字节量不同,写集合的数量和总字节量不一定是同步变化的,如果写集合的数量过多,会影响本节点在数据检查数据库中进行撞库查找所需的时间,如果写集合的总字节量过多,会占用大量内存,即两个参数的任一个升高都会影响本节点的业务性能,因此可以对两个参数同时监测。在本发明的一种实施方式中,步骤s710中,可以按照第一时间间隔,周期性地监测本节点已存储的写集合的数量和/或写集合的总字节量;例如可以设置第一时间间隔的变量flow_control_period,每个周期内监测一次certification_writeset_count和writeset_db_memsize。相应的,步骤s720可以具体通过以下步骤实现:如果写集合的数量在上一周期小于或等于第一阈值,且在当前周期大于第一阈值,则降低本节点的事务处理速度;如果写集合的数量在上一周期大于第一阈值,且在当前周期小于或等于第一阈值,则提高本节点的事务处理速度;或者如果写集合的总字节量在上一周期小于或等于第二阈值,且在当前周期大于第二阈值,则降低本节点的事务处理速度;如果写集合的总字节量在上一周期大于第二阈值,且在当前周期小于或等于第二阈值,则提高本节点的事务处理速度。其中,可以将上述流控措施分为两个部分:流控生效和流控退出。步骤s720的条件为流控生效的条件,当不满足该条件时,对本节点的事务处理速度不做控制,即未采取流控措施;当存储的写集合累积,触发了流控生效的条件,则判断本节点的业务性能下降,因此采取流控生效的措施,即降低本节点的事务处理速度;当清理写集合,使得本节点重新回到不满足流控生效条件的状态,则判断本节点的业务性能恢复,可以退出流控措施,该过程为流控退出,即提高本节点的事务处理速度。进一步的,在降低本节点的事务处理速度时,可以获取本节点当前的事务处理速度tps_cur,设置本节点的事务处理速度的上限值为tps_cur,并在第一预设时间内将上限值由tps_cur平滑地降低到tps_cur*k;类似的,在提高本节点的事务处理速度时,可以获取本节点当前的事务处理速度tps_cur,设置本节点的事务处理速度的上限值为tps_cur,在第二预设时间内将上限值由tps_cur平滑地提高到tps_cur*j。其中,本节点当前的事务处理速度是对其当前事务处理水平的度量,可以是本节点在当前周期的平均事务处理速度,如果刚刚进入当前周期还未进行事务处理,也可以是上一周期的平均事务处理速度,还可以是当前时刻瞬时的事务处理速度等,本发明对此不做特别限定。设置事务处理速度的上限值,是对事务处理速度进行限制,例如设置上限值为tps_cur,表示单位时间t0内允许进入本节点的事务总量限制在tps_cur*t0以内;在未采取流控措施的情况下,可以不设置上限值。本示例性实施方式中,在流控生效时,可以将该上限值在第一预设时间内由tps_cur平滑地降低到tps_cur*k,k为小于1的正实数,即tps_cur>tps_cur*k。换而言之,控制事务处理速度避免出现“断崖式”的变化,而是平缓下降,使系统具有一定的缓冲时间,缓冲时间即为上述第一预设时间,其可以根据经验、本节点的物理性能、事务处理速度的变化量等确定。k的值可以参考写集合的数量与第一阈值的相对大小、写集合的总字节量与第二阈值的相对大小、写集合的数量或总字节量的变化量、tps_cur本身的大小等因素确定。另一方面,在流控退出时,也控制事务处理速度避免出现瞬间升高的情况,而是在第二预设时间内由tps_cur平滑地升高到tps_cur*j,j为大于1的实数,即tps_cur<tps_cur*j。第二预设时间可以根据经验、本节点的物理性能、事务处理速度的变化量等确定,第一预设时间和第二预设时间可以相同,也可以不同。j的值可以参考写集合的数量与第一阈值的相对大小、写集合的总字节量与第二阈值的相对大小、写集合的数量或总字节量的变化量、tps_cur本身的大小等因素确定。在流控退出后,还可以逐渐解除对事务处理速度的限制,例如在事务处理速度平稳后,取消上限值。本发明的实施方式还提供了清理写集合的方式,如图8所示,分布式数据库的管理方法可以包括以下步骤s810~s830:步骤s810,获取分布式数据库当前所处的模式;步骤s820,如果分布式数据库当前处于第一模式,则周期性地清理本节点已存储的全部写集合;步骤s830,如果分布式数据库当前处于第二模式,则周期性地清理本节点已存储的属于公共子集的写集合。本示例性实施方式中,对于第一模式和第二模式的划分包括以下两种情况:(1)第一模式为单主模式,表示分布式数据库中只有一个节点为主节点,具有写权限;第二模式为多主模式,表示分布式数据库中有至少两个节点为主节点,具有写权限;本示例性实施方式中的写权限,是对写入数据、修改数据、删除数据等权限的统称,与写权限相对应的为只读权限。(2)第一模式为单节点写入模式,表示分布式数据库中有至少两个节点具有写权限,但同一时间仅允许一个节点进行写操作(包括写入数据、修改数据、删除数据等只读以外的操作);第二模式为多节点写入模式,表示同一时间允许两个或两个以上的节点进行写操作。可见,在第一模式下,同一时间至多只有一个节点对数据进行写操作,产生的事务同步到其他节点后,无需在其他节点上进行冲突检查,并且,在所有节点都提交该事务后,该事务也不会和后续的事务发生冲突,因此,可以将写集合全部清理掉,以节约系统资源。在第二模式下,可能有多个节点同时进行写操作,产生并行事务,需要进行事务的冲突检查,因此只有和后续的事务不会发生冲突的事务写集合可以被清理掉。具体而言,各节点所存储的写集合的交集为公共子集,各节点通过周期性广播的方式确定公共子集,公共子集是在所有节点上都已完成提交的事务写集合的集合(也可以是这些事务标识的集合,如stable_gtid_set),属于公共子集的写集合可以被清理掉。由上可知,在第二模式下,本节点需要维护一定的写集合,以用于冲突检查、并行回放等;在第一模式下,本节点可以维护较少的写集合,甚至不存储写集合。本示例性实施方式通过在两种模式下,灵活调整写集合的清理策略,以及时清理无用的写集合,尽可能多地释放系统资源,用于正常的业务处理,从而进一步提高了效率。需要说明的是,在图8的方法中,可以实时获取分布式数据库当前所处的模式,一旦模式发生变化,则对应调整写集合的清理策略。关于如何获取分布式数据库当前所处的模式,提供以下几种实施方式,但下述内容不应对本发明的保护范围造成限定:(1)mgr集群等分布式数据库系统允许在单主模式和多主模式之间切换,切换时需要更改模式、组复制功能等相关参数,各节点可以实时监测这些参数的值,一旦发生变化,则判断当前的模式发生变化,调整清理策略。(2)系统可以对每个节点的权限进行统一管理,例如记录在配置文件中,各节点可以分别维护该配置文件的只读副本,配置文件的内容更新时,更新内容同步到各节点的副本上,从而各节点可以实时掌握数据库的权限分配情况,以监测当前为单节点写入模式或多节点写入模式,便于在模式发生变化时,及时调整清理策略。在本发明的一种实施方式中,周期性地清理本节点已存储的全部写集合,可以包括以下步骤:按照第二时间间隔,周期性地检测本节点已存储的写集合的数量是否超过第三阈值,若是,则删除本节点已存储的全部写集合。例如,可以设置第二时间间隔的变量garbage_collect_period,第三阈值的变量garbage_cleanup_threshold,每个周期检测一次写集合的数量certification_writeset_count,判断是否满足certification_writeset_count>garbage_cleanup_threshold,如果满足,则清理全部写集合。第三阈值可以根据数据库中的事务量、本节点的物理性能以及经验等确定,第二时间间隔可以根据实际需要设置为任意的数值,本发明对此不做特别限定。在本发明的一种实施方式中,周期性地清理节点上已存储的属于公共子集的写集合,可以包括以下步骤:按照第三时间间隔,周期性地,在分布式数据库中广播本节点的已执行事务集合,接收其他节点的已执行事务集合,根据本节点的已执行事务集合和其他节点的已执行事务集合确定公共子集,并删除本节点已存储的写集合中属于公共子集的写集合。其中,已执行事务集合是各节点已执行的所有事务的标识的集合,例如可以是gtid_executed或gtid_set等,由于各节点的执行情况可能不同,因此各节点广播出来的已执行事务集合也可能不同,每个节点都可以接收到所有节点广播的已执行事务集合,对其取交集,得到公共子集,然后从本节点已存储的写集合中,删除公共子集对应的写集合,仅保留与其他节点的冲突检查数据库中不完全相同的写集合。上述过程可以以第三时间间隔(例如设置对应变量为broadcast_gtid_executed_period),每个周期执行一次,例如每60s在每个节点上执行一次,广播的周期与清理写集合的周期相同;第三时间间隔可以根据实际需要设置为任意的数值。在本发明的一种实施方式中,如果分布式数据库当前处于第一模式,在存储新的写集合时,可以将新的写集合中的事务标识字段置为空值。其中,事务标识字段用于表示事务标识的集合,通常由节点标识和事务序号两部分组成,例如可以是表1中的gtid_set,也可以是其他的类似字段。由于在第一模式下,无需进行冲突检查,即无需使用gtid_set的信息,因此可以置为空值(例如null),以进一步减小内存消耗。需要说明的是,写集合中的其他字段,如pkhash、sequence_number等,在事务回放时可能用到,因此应当保留。本发明的一种实施方式中,方法流程可以如图9所示,第一时间间隔和第二时间间隔相同,在周期性监测写集合的数量和总字节量后,存在以下几种情况:(1)当前处于第一模式,则判断写集合的数量与第一阈值、第三阈值的相对大小,其中第一阈值小于第三阈值。如果写集合的数量>第三阈值,则清理全部写集合,无需采取流控措施。(2)当前处于第一模式,则判断写集合的数量与第一阈值、第三阈值的相对大小,其中第一阈值小于第三阈值。如果第一阈值<写集合的数量<第三阈值,则不清理写集合,采取流控措施。(3)当前处于第一模式,则判断写集合的数量与第一阈值、第三阈值的相对大小,其中第一阈值小于第三阈值。如果写集合的数量<第一阈值,则表明当前性能正常,不清理写集合,也不采取流控措施。(4)当前处于第二模式,则不对比写集合的数量与第三阈值,仅判断是否满足步骤s720的条件,如果满足,则采取流控措施;此外,正常进行周期性清理属于公共子集的写集合的过程。(5)当前处于第二模式,则不对比写集合的数量与第三阈值,仅判断是否满足步骤s720的条件,如果不满足,则不采取流控措施;此外,正常进行周期性清理属于公共子集的写集合的过程。除了以上几种情况,图9未示出,还可以设置第一阈值大于第三阈值,则存在以下两种情况:(6)当前处于第一模式,且第一阈值大于第三阈值,则仅需判断写集合的数量与第三阈值的相对大小。如果写集合的数量>第三阈值,则清理全部写集合,无需采取流控措施。(7)当前处于第一模式,且第一阈值大于第三阈值,则仅需判断写集合的数量与第三阈值的相对大小。如果写集合的数量<第三阈值,则表明当前性能正常,不清理写集合,也不采取流控措施。需要特别说明的是,本示例性实施方式中,在多个判断步骤中,基于参数a和参数b之间的相对大小(例如写集合的数量和第一阈值、写集合的数量和第三阈值、写集合的总字节量和第二阈值等),确定后续执行哪个步骤,其中,两个参数相等的情况,可视为参数a大于参数b或参数a小于参数b这两种情况中任一种的特殊情况,执行相应的后续步骤。本发明对此不做特别限定。图10示出了采用现有技术与本发明实施方式的数据库性能曲线对比图,以图中的竖线为分界,左侧为采用现有技术时,事务处理速度和事务处理延迟的曲线,可见,受到写集合的影响,曲线波动很严重,数据库的性能不稳定;右侧为采用本发明实施方式时,事务处理速度和事务处理延迟的曲线,可见,通过本示例性实施方式的流控措施,曲线整体上稳定很多,消除了剧烈波动的情况,且事务处理延迟大大降低,对数据库的性能改善效果很明显。示例性装置在介绍了本发明示例性实施方式的分布式数据库的管理方法之后,接下来,参考图11对本发明示例性实施方式的分布式数据库的管理装置进行说明。如图11所示,分布式数据库的管理装置1100,可以应用于分布式数据库的任一节点,该管理装置1100可以包括:监测模块1110,用于监测本节点已存储的写集合的数量和/或写集合的字节量;控制模块1120,用于响应于写集合的数量超过第一阈值或写集合的字节量超过第二阈值,对本节点的事务处理速度进行控制。在本发明的一种实施方式中,监测模块1110,可以用于按照第一时间间隔,周期性地监测本节点已存储的写集合的数量和/或写集合的总字节量;控制模块1120可以包括:第一控制单元1121,用于如果写集合的数量在上一周期小于或等于第一阈值、且在当前周期大于第一阈值,或者,如果写集合的总字节量在上一周期小于或等于第二阈值、且在当前周期大于第二阈值,则降低本节点的事务处理速度;第二控制单元1122,用于如果写集合的数量在上一周期大于第一阈值、且在当前周期小于或等于第一阈值,或者,如果写集合的总字节量在上一周期大于第二阈值、且在当前周期小于或等于第二阈值,则提高本节点的事务处理速度。在本发明的一种实施方式中,第一控制单元1121可以包括:当前速度获取单元(图中未示出),用于获取本节点当前的事务处理速度tps_cur;上限值设置单元(图中未示出),用于设置本节点的事务处理速度的上限值为tps_cur;上限值降低单元(图中未示出),用于在第一预设时间内将上限值由tps_cur平滑地降低到tps_cur*k;第二控制单元1122可以包括:当前速度获取单元(图中未示出),用于获取本节点当前的事务处理速度tps_cur;上限值设置单元(图中未示出),用于设置本节点的事务处理速度的上限值为tps_cur;上限值提高单元(图中未示出),用于在第二预设时间内将上限值由tps_cur平滑地提高到tps_cur*j;其中,k为小于1的正实数,j为大于1的实数。在本发明的一种实施方式中,管理装置1100还可以包括清理模块1130,清理模块1130又可以包括以下单元:模式获取单元1131,用于获取分布式数据库当前所处的模式;第一清理单元1132,用于如果分布式数据库当前处于第一模式,则周期性地清理本节点已存储的全部写集合;第二清理单元1133,用于如果分布式数据库当前处于第二模式,则周期性地清理本节点已存储的属于公共子集的写集合;其中,第一模式为单主模式,第二模式为多主模式,或者第一模式为单节点写入模式,第二模式为多节点写入模式;公共子集为分布式数据库的各节点所存储的写集合的交集。在本发明的一种实施方式中,第一清理单元1132,可以用于按照第二时间间隔,周期性地检测本节点已存储的写集合的数量是否超过第三阈值,若是,则删除本节点已存储的全部写集合。在本发明的一种实施方式中,第二清理单元1133,可以用于按照第三时间间隔,周期性地,在分布式数据库中广播本节点的已执行事务集合,接收其他节点的已执行事务集合,根据本节点的已执行事务集合和其他节点的已执行事务集合确定公共子集,并删除本节点已存储的写集合中属于公共子集的写集合。在本发明的一种实施方式中,管理装置1100还可以包括:存储模块1140,用于如果分布式数据库当前处于第一模式,在存储新的写集合时,将新的写集合中的事务标识字段置为空值。此外,本发明实施方式的其他具体细节在上述方法的发明实施方式中已经详细说明,在此不再赘述。示例性系统本发明示例性实施方式还提供了一种分布式数据库系统,可以参考图6中的分布式数据库系统600所示,包括多个节点610、620、630,其中至少一个节点可以执行上述任一种分布式数据库的管理方法,例如可以执行图7、图8或图9所示的方法步骤。此外,本发明实施方式的其他具体细节在上述方法的发明实施方式中已经详细说明,在此不再赘述。示例性存储介质参考图12对本发明示例性实施方式的存储介质进行说明。如图12所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品1200,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。该程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、re等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言-诸如java、c++等,还包括常规的过程式程序设计语言-诸如"c"语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(fan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。示例性电子设备参考图13对本发明示例性实施方式的电子设备进行说明。图13显示的电子设备1300仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图13所示,电子设备1300以通用计算设备的形式表现。电子设备1300的组件可以包括但不限于:上述至少一个处理单元1310、上述至少一个存储单元1320、连接不同系统组件(包括存储单元1320和处理单元1310)的总线1330、显示单元1340。其中,存储单元存储有程序代码,程序代码可以被处理单元1310执行,使得处理单元1310执行本说明书上述"示例性方法"部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1310可以执行如图7、图8或图9所示的方法步骤等。存储单元1320可以包括易失性存储单元,例如随机存取存储单元(ram)1321和/或高速缓存存储单元1322,还可以进一步包括只读存储单元(rom)1323。存储单元1320还可以包括具有一组(至少一个)程序模块1325的程序/实用工具1324,这样的程序模块1325包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。总线1330可以包括数据总线、地址总线和控制总线。电子设备1300也可以与一个或多个外部设备1400(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/o)接口1350进行。电子设备1300还包括显示单元1340,其连接到输入/输出(i/o)接口1350,用于进行显示。并且,电子设备1300还可以通过网络适配器1360与一个或者多个网络(例如局域网(fan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1360通过总线1330与电子设备1300的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。应当注意,尽管在上文详细描述中提及了装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1