本发明涉及分布式数据库技术领域,具体的说是一种分布式数据库的去中心化副本控制方法。
背景技术:
随着互联网高速发展,构架于单机系统的数据库已无法满足越来越高的并发请求和越来越大的数据存储需求,因此,分布式数据库被愈加广泛的采用。全面兼容面向传统关系型数据库的sql和事务,并且对分布式的天然友好,是分布式数据库解决方案的设计目标。它的核心功能主要集中在以下几点:
1)分布式存储:数据存储不受单机磁盘容量限制,可通过增加数据服务器的数量提升存储能力;
2)计算存储分离:计算节点无状态,可通过水平扩展增加算力。存储节点和计算节点能够分层优化;
3)分布式事务:高性能、完全支持本地事务acid原义的分布式事务处理引擎;
4)弹性伸缩:可以随时随地的在不影响现有应用的情况下,动态对数据存储节点扩容和缩容;
5)多数据副本:自动将数据以强一致、高性能的方式复制到跨机房的多个副本,以保证数据的绝对安全;
6)htap:采用同一套产品混合处理联机事务处理(oltp)的事务型操作和联机分析处理(olap)的分析型操作。
在分布式数据库系统中,副本是提升数据可用性、数据容错性、以及读吞吐的主要方式。对于多个副本来说,数据一致性处理常常成为开发者的重点关注话题。目前大多数分布式数据库采用中心化副本控制机制,主要思路是,建立一个中心化的协调节点进行数据操作管理,所有的数据库操作先发请求到这个中心节点,然后中心节点再将对应的操作下发到对应的普通节点,进而实现副本更新,数据一致性的处理。
中心化的副本控制架构方案简单清晰,所有关于副本的相关控制操作交给中心节点完成,并发控制由一个中心节点完成,使得分布式并发控制问题简化为单机并发控制问题。也就是在多个节点同时需要修改副本数据时,需要解决因并发造成的“读写”、“写写”等并发冲突问题,单节点场景下的并发控制总是更简单一些,一般通过加锁方式就可以解决。
中心化副本控制协议主要有primary-secondary协议。副本被分为两类,只有一个副本作为primary副本,其他副本为secondary副本。primary副本作为中心节点,负责副本的数据维护,如数据更新,并发控制,协调一致性等操作。
中心化节点可以很好地管理数据库中的副本,但是带来的风险是整个系统的可用性需要依赖这个中心节点,一旦中心节点因网络问题造成中断或处于不可用状态,整个系统将暂时失去服务能力,这也是中心化系统具备的单点问题。
因此,去中心化的副本控制机制应运而生,其所有节点都是对等的,不存在中心化节点,所有节点操作之前互相协商,以达到最终一致。
浪潮云溪数据库是云原生的分布式newsql数据库,其就是采用去中心化的副本控制机制,但是,在大规模数据库集群场景下,副本同步、更新的过程中占用的资源呈非线性增长。
技术实现要素:
本发明针对分布式newsql数据库采用去中心化的副本控制机制时,大规模数据库集群场景下副本同步、更新的过程中占用的资源呈非线性增长的问题,提供一种分布式数据库的去中心化副本控制方法。
本发明的一种分布式数据库的去中心化副本控制方法,解决上述技术问题采用的技术方案如下:
一种分布式数据库的去中心化副本控制方法,该方法基于租约机制,
引入副本队列进行副本分配,并确定是否需要进行副本或者租约的位置修改;
引入存储队列进行单独的控制循环,通过查看每个存储块的总负载量,选择需要重新平衡的分布式数据库集群中的副本,并在分布式数据库集群某个节点上的副本需要迁移到其他节点时,通过保存的节点信息,选择一个合适的节点完成副本再平衡工作。
具体的,所涉及副本队列用于周期性地遍历每个存储设备中的所有副本,遍历之前,存储设备中的所有副本已经按照副本自身的键值完成排序。
更具体的,所涉及副本队列进行副本扫描的过程中,确定是否需要进行副本或者租约的位置修改,此时,副本队列负责决定副本的复制、删除以及重新平衡,通过分布式数据库集群给定的限制条件去维护副本的数量以及所在的位置。
优选的,所涉及分布式数据库集群给定的限制条件包括:
(1)用户在分布式数据库集群配置中指定的约束;
(2)磁盘使用状态;
(3)地区多样性;
(4)每个存储设备上的数据量。
具体的,所涉及存储队列会尤其查看每个存储块的qps,并且如果本地存储相对于分布式数据库集群中的其他存储过载,则尝试采取选择qps中特别高的副本,以便对存储级别的平衡产生最大的影响,而对中断的影响最小。
更具体的,所涉及存储队列可以由分布式数据库集群设置控制,分布式数据库设置可以完全关闭存储队列,仅启用租约重新平衡,或者同时启用租约和副本重新平衡。
更具体的,当遍历所有副本以计算存储级别的统计信息的现有循环起作用时,存储队列每分钟重新填充一次;
通过遍历分布式数据库集群中所有的副本数量和配置的限定副本数,进行副本的复制和删除操作;
除了副本数量的限定之外,还有磁盘存储状况、副本是否在同一个存储块的限制条件来约束副本的分配策略。
更具体的,选择需要重新平衡的分布式数据库集群中的副本时,限制条件有:某个副本是否被某一特定地理区域的客户端频繁请求,移动副本预计产生的实际成本与预期的收益,副本在不同地理区域的多样性;
基于以上限制条件平衡副本时:
首先,对具有相同位置和相同节点属性的存储块进行分组,计算每个存储块的qps,并按照qps降序将存储块放置于副本队列;
随后,自定设定一个阈值,并找出qps值超出设定阈值的存储块,进一步选择需要转移的副本;
最后,判断是否需要同时转移租约,将副本迁移到指定节点即可。
更具体的,在分布式数据库集群某个节点上的副本需要迁移到其他节点时,通过保存的节点信息,选择一个合适的节点完成副本再平衡工作,这一过程中:
如果当前节点缺少必要信息时,当前节点可以通过远程调用函数请求其他节点获得存储和副本信息。
优选的,所涉及租约机制的特点为:
(1)租约是颁发者对一段时间内数据一致性的承诺;
(2)颁发者发出租约后,不管是否被接收,只要租约不过期,颁发者都会按照协议遵守承诺;
(3)租约的持有者只能在租约有效期内使用承诺,一旦租约超时,持有者需要放弃执行,重新申请租约。
本发明的一种分布式数据库的去中心化副本控制方法,与现有技术相比具有的有益效果是:
本发明基于租约机制,引入副本队列和存储队列,完成副本分配和副本再平衡,以通过去中心化副本的控制降低负载,使大规模分布式数据库集群在副本进行负载均衡时所消耗的资源呈线性增长。
附图说明
附图1是本发明的去中心化副本控制架构;
附图2是本发明的副本再平衡流程图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
参考附图1,本实施例提出一种分布式数据库的去中心化副本控制方法,该方法基于租约机制,通过引入副本队列和存储队列,实现去中心化的副本控制。
租约机制的特点为:
(1)租约是颁发者对一段时间内数据一致性的承诺;
(2)颁发者发出租约后,不管是否被接收,只要租约不过期,颁发者都会按照协议遵守承诺;
(3)租约的持有者只能在租约有效期内使用承诺,一旦租约超时,持有者需要放弃执行,重新申请租约。
(一)引入副本队列进行副本分配,并确定是否需要进行副本或者租约的位置修改。
本实施例中,副本队列用于周期性地遍历每个存储设备中的所有副本,遍历之前,存储设备中的所有副本已经按照副本自身的键值完成排序。
本实施例中,副本队列进行副本扫描的过程中,确定是否需要进行副本或者租约的位置修改,此时,副本队列负责决定副本的复制、删除以及重新平衡,通过分布式数据库集群给定的限制条件去维护副本的数量以及所在的位置,其中,分布式数据库集群给定的限制条件包括:
(1)用户在分布式数据库集群配置中指定的约束;
(2)磁盘使用状态;一般情况下,将range从几乎没有磁盘空间的存储中移出;
(3)地区多样性;如果将某个数据的所有副本放在一个或两个区域中,则单点故障将导致数据不可用或者丢失,为了最大的容错能力,应该尝试尽可能广泛地传播副本;
(4)每个存储设备上的数据量。分布式数据库集群中的一个磁盘不应该比其他磁盘过早填满,这对于在任何给定的节点故障后恢复时间大致相同也是很有价值的。
(二)引入存储队列进行单独的控制循环,通过查看每个存储块的总负载量,选择需要重新平衡的分布式数据库集群中的副本,并在分布式数据库集群某个节点上的副本需要迁移到其他节点时,通过保存的节点信息,选择一个合适的节点完成副本再平衡工作。
上述过程中,存储队列查看每个存储块的总负载量时,会尤其查看每个存储块的qps,并且如果本地存储相对于分布式数据库集群中的其他存储过载,则尝试采取选择qps中特别高的副本,以便对存储级别的平衡产生最大的影响,而对中断的影响最小。
上述过程中,当遍历所有副本以计算存储级别的统计信息的现有循环起作用时,存储队列每分钟重新填充一次;
上述过程中,选择需要重新平衡的分布式数据库集群中的副本时,限制条件有:某个副本是否被某一特定地理区域的客户端频繁请求,移动副本预计产生的实际成本与预期的收益,副本在不同地理区域的多样性。参考附图2,基于前述限制条件平衡副本时:
首先,对具有相同位置和相同节点属性的存储块进行分组,计算每个存储块的qps,并按照qps降序将存储块放置于副本队列;
随后,自定设定一个阈值,并找出qps值超出设定阈值的存储块,进一步选择需要转移的副本;
最后,判断是否需要同时转移租约,将副本迁移到指定节点即可。
上述过程中,在分布式数据库集群某个节点上的副本需要迁移到其他节点时,通过保存的节点信息,选择一个合适的节点完成副本再平衡工作,此时,如果当前节点缺少必要信息时,当前节点可以通过远程调用函数请求其他节点获得存储和副本信息。
具体实施时,存储队列可以由分布式数据库集群设置控制,分布式数据库设置可以完全关闭存储队列,仅启用租约重新平衡,或者同时启用租约和副本重新平衡。通过遍历分布式数据库集群中所有的副本数量和配置的限定副本数,进行副本的复制和删除操作。除了副本数量的限定之外,还有磁盘存储状况、副本是否在同一个存储块的限制条件来约束副本的分配策略。
综上可知,采用本发明的一种分布式数据库的去中心化副本控制方法,基于租约机制,引入副本队列和存储队列,完成副本分配和副本再平衡,使大规模分布式数据库集群在副本进行负载均衡时所消耗的资源呈线性增长。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
1.一种分布式数据库的去中心化副本控制方法,其特征在于,基于租约机制,
引入副本队列进行副本分配,并确定是否需要进行副本或者租约的位置修改;
引入存储队列进行单独的控制循环,通过查看每个存储块的总负载量,选择需要重新平衡的分布式数据库集群中的副本,并在分布式数据库集群某个节点上的副本需要迁移到其他节点时,通过保存的节点信息,选择一个合适的节点完成副本再平衡工作。
2.根据权利要求1所述的一种分布式数据库的去中心化副本控制方法,其特征在于,副本队列用于周期性地遍历每个存储设备中的所有副本,遍历之前,存储设备中的所有副本已经按照副本自身的键值完成排序。
3.根据权利要求2所述的一种分布式数据库的去中心化副本控制方法,其特征在于,副本队列进行副本扫描的过程中,确定是否需要进行副本或者租约的位置修改,此时,副本队列负责决定副本的复制、删除以及重新平衡,通过分布式数据库集群给定的限制条件去维护副本的数量以及所在的位置。
4.根据权利要求3所述的一种分布式数据库的去中心化副本控制方法,其特征在于,分布式数据库集群给定的限制条件包括:
(1)用户在分布式数据库集群配置中指定的约束;
(2)磁盘使用状态;
(3)地区多样性;
(4)每个存储设备上的数据量。
5.根据权利要求1-4种任一项所述的一种分布式数据库的去中心化副本控制方法,其特征在于,存储队列会尤其查看每个存储块的qps,并且如果本地存储相对于分布式数据库集群中的其他存储过载,则尝试采取选择qps中特别高的副本,以便对存储级别的平衡产生最大的影响,而对中断的影响最小。
6.根据权利要求5所述的一种分布式数据库的去中心化副本控制方法,其特征在于,存储队列可以由分布式数据库集群设置控制,分布式数据库设置可以完全关闭存储队列,仅启用租约重新平衡,或者同时启用租约和副本重新平衡。
7.根据权利要求5所述的一种分布式数据库的去中心化副本控制方法,其特征在于,当遍历所有副本以计算存储级别的统计信息的现有循环起作用时,存储队列每分钟重新填充一次;
通过遍历分布式数据库集群中所有的副本数量和配置的限定副本数,进行副本的复制和删除操作;
除了副本数量的限定之外,还有磁盘存储状况、副本是否在同一个存储块的限制条件来约束副本的分配策略。
8.根据权利要求7所述的一种分布式数据库的去中心化副本控制方法,其特征在于,选择需要重新平衡的分布式数据库集群中的副本时,限制条件有:某个副本是否被某一特定地理区域的客户端频繁请求,移动副本预计产生的实际成本与预期的收益,副本在不同地理区域的多样性;
基于以上限制条件平衡副本时:
首先,对具有相同位置和相同节点属性的存储块进行分组,计算每个存储块的qps,并按照qps降序将存储块放置于副本队列;
随后,自定设定一个阈值,并找出qps值超出设定阈值的存储块,进一步选择需要转移的副本;
最后,判断是否需要同时转移租约,将副本迁移到指定节点即可。
9.根据权利要求8所述的一种分布式数据库的去中心化副本控制方法,其特征在于,在分布式数据库集群某个节点上的副本需要迁移到其他节点时,通过保存的节点信息,选择一个合适的节点完成副本再平衡工作,这一过程中:
如果当前节点缺少必要信息时,当前节点可以通过远程调用函数请求其他节点获得存储和副本信息。
10.根据权利要求1所述的一种分布式数据库的去中心化副本控制方法,其特征在于,所述租约机制的特点为:
(1)租约是颁发者对一段时间内数据一致性的承诺;
(2)颁发者发出租约后,不管是否被接收,只要租约不过期,颁发者都会按照协议遵守承诺;
(3)租约的持有者只能在租约有效期内使用承诺,一旦租约超时,持有者需要放弃执行,重新申请租约。
技术总结