okx

ZNBase分布式存储的负载均衡优化

时间:2023-07-09|浏览:134

导读

ZNBase是浪潮开源的NewSQL分布式数据库,拥有强一致、高可用的分布式架构。在高负载的情况下,分布式数据库能够将负载压力平衡到不同的物理机节点上,充分利用不同节点的资源。本文将介绍ZNBase在面对高负载存储过程中采用的负载均衡策略。

负载均衡

为了更有效利用不同物理机节点的资源,避免服务器性能的浪费,在数据库高负载的情况下需要尽量将压力平衡到各个物理机节点上。这也是分布式数据库的研究重点之一。

云溪数据库ZNBase在存储上采用三副本策略,即每份数据默认同时存在三个节点中,每个副本为一个Replica。数据库在进行读写时,其中一份副本会获得一定时间内的租约,成为lease,该lease的节点即为该range的leaseholder。系统的读写都是通过leaseholder进行的,leaseholder会将对该副本的读写同步到其他的Replica。

ZNBase在启动时会创建StoreReblancer,用于自适应的对副本进行均衡。ZNBase通过对Replica以及lease进行迁移以平衡数据库的压力负载。StoreReblancer会以10秒的周期反复执行,如果存储的压力超过阈值,则会循环对每个range分两个部分进行平衡,包括租约平衡和副本平衡。

图1-1负载均衡基本流程图

租约平衡

ZNBase会维护当前节点存储的副本,其中的lease会维护该副本的QPS(每秒查询率),并按照QPS降序进行排序。压力不够阈值的range,不进行平衡。StoreReblancer会循环遍历一个range的多个副本,排除本地的,排除压力不符合阈值的,排除不正常的,排除zone限制的副本,选择剩下的副本转移租约。租期的选举和迁移不涉及到replica的复制和传输。

对于需要迁移的range来说,StoreReblancer对其租约迁移的副本选取规则如下:

非本地副本。

当前store拥有的租期是合法的。

判断租期转移后本地range的QPS可以转到阈值以内。

待迁移的replica的raftStatus领先于候选的replica的raftStatus

满足zone(分区信息)的约束条件。一些表可能会带有租期的限制条件,规定了该数据表的副本所在的结点,以及租期所在的结点。对于固定了租期的数据表,StoreReblancer不会迁移其range的租期。

Lease选取的基本流程如图1-2所示:

图1-2待选取lease流程

如果当它的QPS大于当前的阈值范围,数据库会将其租约转移到该存储该副本的其他节点上。因为数据库是直接对leaseholder进行读写,并由leaseholder同步到其他副本,故当节点负载过大时,只要将较大读写负载的副本租约转换到其他节点,就可以把该部分的压力均衡出去。

副本平衡

如果保存某副本的三台节点压力负载都不符合lease的迁出条件时,数据库会选择将该副本同步到三副本以外的节点,然后将lease迁出,以动态平衡压力。系统会对需要平衡的range进行筛选,对于压力没有达到阈值的range或迁移后对该store的QPS影响较小时,则不会进行平衡操作。

系统首先设定目标store数量,通常等于range的副本数。循环一个range的多个副本,排除本地副本后,如果副本所在的store压力符合阈值,或者不存在,将该store放入目标数组。

如果目标数组的目标数量不足,则继续从其他所有store中选择,直到符合目标数量。选择Store目标数组的过程需要符合zone(分区)限制,容量限制,压力阈值限制,并排序。如果还是不足,则放弃平衡。同时,副本的迁移应该满足多样性的限制,多样性指副本所在的多级分区的分散程度,副本所在的多级分区越分散,多样性分值越高。在选择目标store时,需要将新的多样性分值同原来的多样性分值进行比较,如果不如以前,则放弃平衡。

ZNBase会循环目标数组,计算新的租约和压力值,然后选择目标数组进行副本迁移。迁移过程首先用batch命令,副本收到命令,并发送快照。

热数据分裂

如果同时对某副本的数据进行大量的读写,压力负载是由于该副本引起时,单纯的迁移lease或者replica都无法较好的调节该情况。该部分功能由splitQueue进行管理。ZNBase会选择对热点数据的range进行分裂,从而把压力从单个range上分开,该步骤会导致创建新的星际比特replica,从而分散了压力和流量。创建新的replica之后的均衡仍由store-reblancer进行。数据库会在range分裂后再进行reblance。当压力降低后,系统会自动进行range的合并。

总结

以上就是ZNBase在处理高负载存储时采用的负载均衡策略,通过租约平衡、副本平衡与热数据分裂三种不同维度的均衡策略,避免了单个节点在高负载情况下出现性能瓶颈,提升了数据库系统的读写性能。

热点:数据

« 上一条| 下一条 »
区块链交流群
数藏交流群

合作伙伴

借春秋财经 百悦米 百科书库 茶百科 宠物丫 金色币圈 宝宝起名 币圈ICO官网 秒懂域名 數字黃金 培训资讯网 妈妈知道 币爸爸 谈股票 天天财富 黄金行情 玩票票财经 佩佩蛙官网 周公解梦 代特币圈 借春秋 旅游资讯网 美白没斑啦 趣玩币 币圈官网 皮卡丘资讯 去玩呗SPA 玩合约 起名取名网 二手域名 今日黄金 兼职信息网 装修装饰网 乐评网 非小号行情 趣开心资讯 减肥瘦身吧 币圈论坛 聚币网 数字财经 元宇宙Web 爱网站
在区块链世界中,智能合约不仅是代码的信任,更是商业的革命。通过了解其在供应链、版权保护等领域的应用,您将真正体验到智能合约的无限可能性
区块链世界GxPiKaQiu.com ©2020-2024版权所有 桂ICP备16002597号-2