一种采用交叉备份的分布式数据库负载均衡的计算方法

文档序号:6634916阅读:283来源:国知局
一种采用交叉备份的分布式数据库负载均衡的计算方法
【专利摘要】本发明涉及一种采用交叉备份的分布式数据库负载均衡的计算方法,包括:初始集群无机器损坏时保证集群中各个机器负载均衡;有1台机器损坏后,对请求分发机制适当调整保证集群内各个机器负载均衡;有多台机器损坏后,若所有数据分片均保证有大于1台可用机器时,对请求分发机器做适当的调整,最大限度的保证集群内各个机器负载均衡。本发明可以从宏观的角度,从概率的角度,粗粒度的保证采用交叉备份的分布式数据库的负载均衡,特别是当有机器损坏时,保证可工作机器合理的均摊负载压力,避免了某些机器负载过高导致短时间内更多机器损坏的情况,避免了短板问题的出现。
【专利说明】一种采用交叉备份的分布式数据库负载均衡的计算方法

【技术领域】
[0001] 本发明属于分布式数据库【技术领域】,尤其是涉及一种采用交叉备份的分布式数据 库负载均衡的计算方法。

【背景技术】
[0002] 在当今,面对海量数据存储与处理的压力,单机数据库已经无法承担此重任。而随 着分布式技术发展日趋成熟,分布式数据库已经成为了业界的主流趋势。现在的分布式数 据库大多采用多节点数据库并行工作模式,如GreenPlum,Vertica等,将海量数据通过一 定的分布算法存储到集群中的各个节点,使每一个数据节点所存的数据量不至于太大,在 执行复杂的查询时能够明显的缩短执行时间,而节点间的并行处理是提高整体查询性能的 有力手段。分布式数据库在海量数据存储、计算等领域表现出的天然的优势引起了学术界 和工业界越来越多的关注。
[0003] 分布式数据库系统是基于单节点数据库系统的基础上发展起来的,是计算机技 术、数据存储技术和网络技术结合的产物。出于高性能、高可靠性与高扩展性的考虑,分布 式数据库系统需要对数据库进行数据分片,并且通常需要增加一定数量的冗余数据。冗余 数据会浪费很多存储空间,并且容易造成各备份分片之间的不一致性,此外多数据分片也 会带来机器的负载均衡问题,最优负载均衡很难达到,在实际应用中通常会导致某些分片 的访问压力过大,造成机器损坏,引发数据库集群的短板问题。
[0004] 分布式数据库中一般都会对数据进行分片,每个数据分片都会有若干冗余分片, 以防分片不可用或者机器不可用。面对高并发,高访问量的业务,需要保证分布式数据库系 统能够持久、高效的提供服务。数据分片损坏以及机器损坏、不可用是无法避免的,特别是 某台机器的负载特别高的时候更是如此。因此,如何保证负载均衡,使负载均摊到所有可用 的机器上,降低负载较高的机器访问压力就变得尤为重要。尤其是在分布式数据库集群中 有机器损坏的时候,如果没有很好的调整各个可用机器的请求访问压力,那么很可能其他 机器因为高并发大压力的访问也会很快的损坏。
[0005] 分布式数据库的数据分片的粒度可以是某个固定大小的数据块,可以是表级别 的,甚至也可以是数据库级别的,根据数据库的应用领域与具体的实现方式来决定。同一部 署地数据分片的部署方式主要有机器之间互备,多机器之间交叉备份等等部署方式,例如 GreenPlum就是多机器之间交叉备份的方式。
[0006] 为了保证分布式数据库的负载均衡,可以将请求以Round Robin的方式或者是随 机选取的方式发往该请求所对应的数据分片的可用机器中,但是一旦数据库集群中有机器 损坏后,这些方式存在很大弊端,可能会导致某一机器负载过重,形成短板,造成短时间内 更多机器的损坏。


【发明内容】

[0007] 针对上述问题,本发明要解决的问题是提供一种采用交叉备份的分布式数据库负 载均衡的计算方法,以主要解决数据库集群中负载均衡问题,特别是解决有机器损坏时的 负载均衡问题。
[0008] 本发明的核心思想是:初始集群无机器损坏时保证集群中各个机器负载均衡;有 1台机器损坏后,对请求分发机制适当调整保证集群内各个机器负载均衡;有多台机器损 坏后,若所有数据分片均保证有大于1台可用机器时,对请求分发机器做适当的调整,最大 限度的保证集群内各个机器负载均衡。
[0009] 为解决上述技术问题,本发明采用的技术方案是:
[0010] 一种采用交叉备份的分布式数据库负载均衡的计算方法,包含:
[0011] 当无机器损坏时,以从概率上均分的方式保证所下发的请求均摊到数据分片所在 的各个可用机器中;具体的,若针对集群中对某个数据分片进行访问的请求,获取到对该数 据分片的请求的可用机器数目记为n,则n台机器均以1/n的概率承担该请求的访问,当访 问量足够大的时候,可以从概率的角度保证负载均衡,这样的优势在于几乎没有引入任何 额外的计算代价;
[0012] 当有1台机器损坏时,因为分布式数据库对每个数据分片至少都会有1个额外的 备份分片,所以此时的数据库集群还是可用的;针对这种状况,集群请求分发负载均衡方法 迅速从所有数据分片均摊请求的压力切换为非均摊的方式;需要先计算每个机器的理论最 优负载,若所下发的请求访问到损坏机器的数据分片时,需要由该数据分片对应的可用机 器承担,针对每个数据分片,利用可用机器的理论最优负载值与当前负载值计算出对该分 片的请求以什么样的概率分配到各个可用机器,最终保证所有当前可工作机器负载均衡;
[0013] 当有大于1台机器损坏时,因为分布式数据库每个数据分片至少都会有1个额外 的备份分片,所以有大于等于2台机器损坏时存在着整个数据库集群不可用的风险(例如 当每个数据分片均只有1个备份分片,并且这两个数据分片所在的机器均损坏时);在这 种情况下,只有当数据库集群可用,也即每个数据分片都至少保留一台可用机器的时候,可 以用概率的方法保证各个可用机器尽可能的负载均衡;需要先计算每台机器的理论最优 负载,若所下发的请求访问到损坏机器的数据分片时,需要全部由该分片对应的可用机器 上的备份分片承担,若有机器的负载超过了理论最优负载值则需要重新计算理论最优负载 值,然后逐个分片的利用可用机器的理论最优负载值与当前负载值计算出对该分片的请求 以什么样的概率分配到各个可用机器,最终保证所有可工作机器负载均衡。
[0014] 优选的,当有1台机器损坏时,若请求的数据分片的可用机器包含损坏机器时要 以均分的策略将该请求分配到当前可用的机器中;若请求的数据分片的可用机器不包含损 坏机器时利用理论最优负载值和机器当前负载值以贪心的策略对各个可用机器进行计算, 使请求以不同的概率分配给不同的机器;
[0015] 在概率的计算中始终以系统中每个数据分片的请求访问负载相同为前提,以机器 的理论最优负载值为每台机器负载上限,在计算时以概率计算为主要计算手段,对系统不 添加额外的负担。
[0016] 优选的,当有1台机器损坏时,从损坏机器包含的数据分片作为切入点,计算对其 的请求分配给各个可用机器的概率;之后计算存储有损坏机器上数据分片的非损坏机器 上的其他数据分片的负载分配,计算其分配给各个可用机器的概率;最后计算未存储损坏 机器上数据分片的非损坏机器上的数据分片的负载分配,计算其分配给各个可用机器的概 率。
[0017] 优选的,当有大于1台机器损坏且数据库集群处于可用状态时,需要先计算每台 机器的理论最优负载;
[0018] 若请求的数据分片的可用机器包含损坏机器时要以均分的策略和贪心的策略将 该请求分配到当前可用的机器中;
[0019] 若某机器的负载超过了理论最优负载则要重新对理论最优负载进行调整计算,增 大其他机器的理论最优负载值,并且使用调整后的理论最优负载进行之后的计算;
[0020] 若请求的数据分片的可用机器不包含损坏机器时利用理论最优负载值和机器当 前负载值进行计算,使请求以不同的概率分配给不同的机器,以保证各个机器的负载尽可 能是均衡的,并且都趋近于理论最优负载值;
[0021] 所有的负载分配计算均是只包含概率计算,对系统没有额外的负担,在计算中始 终以系统中每个数据分片的请求访问负载尽可能相同为前提,以机器的理论最优负载值为 每台机器负载上限。
[0022] 优选的,当有大于1台机器损坏且数据库集群处于可用状态时,首先处理损坏机 器中存储的数据分片,按照对应的可用机器数目从少到多来处理每一个数据分片,即优先 计算可用机器少的数据分片的负载分配,计算对其的请求分配给各个可用机器的概率;其 次处理其他的数据分片,利用每台机器的理论最优负载值与当前负载值对请求进行概率计 算,已决定分配给各个可用机器的概率。
[0023] 优选的,若某机器的负载超过了理论最优负载则要重新对理论最优负载进行调整 计算,增大其他机器的理论最优负载值,调整的算法为:设每台机器的理论最优负载值占总 10 〇? 负载的比重为Tq= 其中:集群中的机器数目为MAX,损坏的机器数目为T台,则 KKI-Tiii 剩下的可用机器数为MX-T ;调整后最优负载占总负载的比重为Tq = CQgNTCMinE?W;其 中:超过理论最优负载的机器为Mq,其当前负载值为Tm,将Tm从理论最优负载计算中减去, 设调整可用机器集合为E= (MiIMiE (B-Mq)},损坏机器集合D中的数据分片的每个分片 所对应的可用机器集合B= 丨i S I i MAX && Mi g D}。
[0024] 本发明具有的优点和积极效果是:
[0025] 与现有技术中的解决方案,如鸵鸟算法无视该问题、在某台机器压力大的时候暂 停对该机器的访问、进行存储数据迁移降低单点压力等等进行比较,本发明方法不会造成 单台机器压力过大以至于导致故障发生;不会暂停对数据库的访问,保证业务正常运行; 适合各种采用交叉备份方式的分布式数据库;对系统带来的额外开销很小,只有一些比较 基础的概率计算;可以随时对系统压力进行调整等;
[0026] 本发明方法能够粗粒度的调整集群中的负载分发,以概率为主要手段控制每个请 求对各个可用机器的负载分配,能够很好的保证集群中各个机器负载均衡,避免短板问题 的发生。

【专利附图】

【附图说明】
[0027] 图1 :本发明一实施例分布式数据库交叉备份存储示意图;
[0028] 图2 :本发明一实施例分布式数据库交叉备份存储无机器损坏时负载均衡示意 图;
[0029] 图3 :本发明一实施例分布式数据库交叉备份存储,单台机器损坏示意图;
[0030] 图4 :本发明一实施例分布式数据库交叉备份存储,单台机器损坏负载均衡计算 流程图;
[0031] 图5 :本发明一实施例单台机器损坏,损坏机器中数据分片负载均衡计算流程图;
[0032] 图6 :本发明一实施例单台机器损坏,非损坏机器中数据分片负载均衡计算流程 图;
[0033] 图7 :本发明一实施例分布式数据库交叉备份存储,多于1台机器损坏示意图;
[0034] 图8 :本发明一实施例分布式数据库交叉备份存储,多于1台机器损坏负载均衡计 算流程图;
[0035] 图9 :本发明一实施例多于1台机器损坏,损坏机器中数据分片负载均衡计算流程 图;
[0036] 图10 :本发明一实施例多于1台机器损坏,非损坏机器中数据分片负载均衡计算 流程图。

【具体实施方式】
[0037] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明做进一步详细的说明。
[0038] 参阅图1,示出本发明中采用交叉备份方式存储数据分片的数据库集群示例,该集 群中共有6台机器,共6个数据分片,每个分片均有1个备份分片,这些分片以交叉备份的 方式散布到数据库集群的各个机器中。
[0039] 无机器损坏时参阅图2,示出本发明中系统正常状态,数据库集群中无机器损坏时 是以均分用户请求到数据分片所在机器的方式保证系统负载均衡。设集群中的机器数目 为MAX,则数据库集群中的机器可以表示为M iQ < i SMAX)。相应的每一分片可以表示 为NjQ < j < MAX)。设每台机器的初始压力值设为Q(Mi) = 0,每台机器的理论最优负载 值(压力值)为(占总负载的比重),对于图1所示的6台太机器,每个机器的压力 值即为六分之一。对于每个数据分片的请求,将其以均分的方式发送到该分片的可用机器 中,即可从概率的角度实现粗粒度的负载均衡,每台机器所承担的负载占总负载的百分比 为J-气
[0040] 有1台机器损坏时,因为分布式数据库每个数据分片至少都会有1个额外的备份 分片,所以只有1台机器损坏时,整个数据库集群必定可用。
[0041] 参阅图3,示出本发明中有1台机器损坏时,数据库集群的状态,其中的本实施例 中为机器M2损坏。设损坏的机器号为t,数据库集群中机器数目变为MAX-1,数据库集群中 的机器可以表示为M i (1彡i彡MAX&&i关t)。
[0042] 参阅图4,示出本发明中1台机器损坏时,对数据库集群做负载均衡计算的流程。 首先对数据分片进行分组,分为损坏机器中存储的数据分片与非损坏机器中存储的数据分 片;按照损坏机器中存储的数据分片的可用机器数目从少到多进行处理,优先计算可用机 器少的数据分片的负载,以贪心策略??保证各个机器的负载尽可能的均衡。设每台机器的 初始压力值Q(Mi) = 0,每台机器的理论最优负载值占总负载的比重为= 当对 数据库的访问量较大时,可认为对每个分片的访问概率是一样的,即每个分片的访问负载 止 100 为 p(Ni)=;。
[0043] 参阅图5,示出本发明中1台机器损坏时,对损坏机器中的数据分片进行处理的流 程。因为损坏机器中的数据分片的可用机器数目要小于非损坏机器中的数据分片,因此从 贪心策略的角度要优先处理损坏机器中的数据分片的负载计算。具体步骤如下所述:
[0044] 步骤S501、将数据分片分为两组,即损坏机器所存储的数据分片和正常机器所存 储的数据分片,可以得出损坏机器M t的数据分片集合为A = {Nx 11彡X彡MAX&&X e MJ,正 常机器中的每个分片所对应的可用机器集合B = (Mi 11 < i < MAX&&i ! = t}。集合A中 的每个分片根据备份副本数不同,可能对应着一台或若干台机器,例如2分片的时候就是 对应着1台机器,而3分片的时候就是对应着2台机器。按照对应的可用机器数目从少到 多来处理每一个分片,即先处理对应着1台机器的那些分片,然后接着处理对应着2台机器 的那些分片,依次类推。获取M t中的某一数据分片,对于只有1台可用机器的数据分片顺 序执行步骤S502,否则跳转到步骤S503。
[0045] 步骤S502、只有1台可用机器的数据分片,设为Nt,其请求访问压力由该单台可用 机器100 %承担,设该机器号为j,则更新该机器的负载值Q (Mp = Q (Mp +P (Nt) * 100 %。最 后,跳转到步骤S506。
[0046] 步骤S503、对于有多台机器可用的数据分片,则应该由该分片所对应的可用机器 IQO 集合B中的所有机器来承担;对集合A中每个分片的访问负载均为该分片对应的机 器的现有负载加上以均摊的方式分配到该机器的负载(只是用于计算,并不以均摊方式分 配)没有超过每台机器的理论最优负载值占总负载的比重Tq时顺序执行步骤S504,若超过 了 Tq则跳转到步骤S505。
[0047] 步骤S504、若该分片(设为分片Nt)对应的机器的负载没有超 过Tq,则对该分片的访问以均摊的方式分配到集合B中对应机器的概率为 p (Mi I Mi G B) = eB更新对应机器的负载值Q(Mi)= Q (Mi) +P (Nt) *P (Mi I Mi G B),最后跳转到步骤 S506 ;
[0048] 步骤S505、若该分片(设为分片Nt)对应的某些机器负载加上以均摊的方式分配 到该机器的负载(只是用于计算,并不以均摊方式分配)已经超过Tq,设均分到的负载为 Q avg(大于 Tq),设这些机器的集合为 BM = (Mi, 1 彡 i 彡 MAX&&i ! = t&&Q(Mi)+Qavg 彡 Tq}, 即集合A和集合B有数据分片交集的机器;对每个数据分片的请求,得到其可用机器的 列表,优先计算处于集合BM中的机器负载,即该请求分配给BM集合中某台机器的概率为

【权利要求】
1. 一种采用交叉备份的分布式数据库负载均衡的计算方法,其特征在于,包含 当无机器损坏时,以从概率上均分的方式保证所下发的请求均摊到数据分片所在的各 个可用机器中; 当有1台机器损坏时,需要先计算每个机器的理论最优负载,即均摊负载,若所下发的 请求访问到损坏机器的数据分片时,需要由该数据分片对应的可用机器承担,针对每个数 据分片,利用可用机器的理论最优负载值与当前负载值计算出对该分片的请求以什么样的 概率分配到各个可用机器,最终保证所有当前可工作机器负载均衡; 当有大于1台机器损坏且数据库集群处于可用状态时,需要先计算每台机器的理论最 优负载,即均摊负载,若所下发的请求访问到损坏机器的数据分片时,需要全部由该分片对 应的可用机器上的备份分片承担,若有机器的负载超过了理论最优负载值则需要重新计算 理论最优负载值,然后逐个分片的利用可用机器的理论最优负载值与当前负载值计算出对 该分片的请求以什么样的概率分配到各个可用机器,最终保证所有可工作机器负载均衡。
2. 根据权利要求1所述的采用交叉备份的分布式数据库负载均衡的计算方法,其特征 在于:当有1台机器损坏时,若请求的数据分片的可用机器包含损坏机器时要以均分的策 略将该请求分配到当前可用的机器中;若请求的数据分片的可用机器不包含损坏机器时利 用理论最优负载值和机器当前负载值以贪心的策略对各个可用机器进行计算,使请求以不 同的概率分配给不同的机器; 在概率的计算中始终以系统中每个数据分片的请求访问负载相同为前提,以机器的理 论最优负载值为每台机器负载上限,在计算时以概率计算为主要计算手段,对系统不添加 额外的负担。
3. 根据权利要求2所述的采用交叉备份的分布式数据库负载均衡的计算方法,其特征 在于:当有1台机器损坏时,从损坏机器包含的数据分片作为切入点,计算对其的请求分配 给各个可用机器的概率;之后计算存储有损坏机器上数据分片的非损坏机器上的其他数据 分片的负载分配,计算其分配给各个可用机器的概率;最后计算未存储损坏机器上数据分 片的非损坏机器上的数据分片的负载分配,计算其分配给各个可用机器的概率。
4. 根据权利要求1所述的采用交叉备份的分布式数据库负载均衡的计算方法,其特征 在于:当有大于1台机器损坏且数据库集群处于可用状态时,需要先计算每台机器的理论 最优负载; 若请求的数据分片的可用机器包含损坏机器时要以均分的策略和贪心的策略将该请 求分配到当前可用的机器中; 若某机器的负载超过了理论最优负载则要重新对理论最优负载进行调整计算,增大其 他机器的理论最优负载值,并且使用调整后的理论最优负载进行之后的计算; 若请求的数据分片的可用机器不包含损坏机器时利用理论最优负载值和机器当前负 载值进行计算,使请求以不同的概率分配给不同的机器,以保证各个机器的负载尽可能是 均衡的,并且都趋近于理论最优负载值; 所有的负载分配计算均是只包含概率计算,对系统没有额外的负担,在计算中始终以 系统中每个数据分片的请求访问负载尽可能相同为前提,以机器的理论最优负载值为每台 机器负载上限。
5. 根据权利要求4所述的采用交叉备份的分布式数据库负载均衡的计算方法,其特征 在于:当有大于1台机器损坏且数据库集群处于可用状态时,首先处理损坏机器中存储的 数据分片,按照对应的可用机器数目从少到多来处理每一个数据分片,即优先计算可用机 器少的数据分片的负载分配,计算对其的请求分配给各个可用机器的概率;其次处理其他 的数据分片,利用每台机器的理论最优负载值与当前负载值对请求进行概率计算,已决定 分配给各个可用机器的概率。
6.根据权利要求4所述的采用交叉备份的分布式数据库负载均衡的计算方法,其特征 在于:若某机器的负载超过了理论最优负载则要重新对理论最优负载进行调整计算,增大 其他机器的理论最优负载值,调整的算法为:设每台机器的理论最优负载值占总负载的比 1为Tq = ,其中:集群中白勺机器数目为maX,损坏白勺机器数目为T台,贝_下白勺可用 IGG -Tin 机器数为MAX-T ;调整后最优负载占总负载的比重为Tq = 其中:超过理论 最优负载的机器为Mq,其当前负载值为Tm,将Tm从理论最优负载计算中减去,设调整可用 机器集合为E= (MiIMiE (B-M,)},损坏机器集合D中的数据分片的每个分片所对应的可用 机器集合B= {吟I复S ? MAX祕Mi € D}。
【文档编号】G06F17/30GK104376087SQ201410665567
【公开日】2015年2月25日 申请日期:2014年11月19日 优先权日:2014年11月19日
【发明者】宋永智, 张学, 武新, 崔维力 申请人:天津南大通用数据技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1