第五部分 架构篇 第十八章 MongoDB Sharding 架构(平衡)

33 篇文章 1 订阅 ¥39.90 ¥99.00
23 篇文章 4 订阅
MongoDB的平衡器自动执行数据在分片间的迁移以保持均匀分布。平衡工作流程包括根据分片整体大小进行块迁移,但只有在分片间块数量差距达到一定阈值(至少9个块)时才会触发。为了避免频繁的数据移动,MongoDB采用了一种相对保守的平衡策略。此外,文章提到了两个技巧:自定义块大小和递增块大小,以适应生产和测试环境的不同需求。
摘要由CSDN通过智能技术生成

1、平衡简介

如果存在多个可用的分片,只要块得数量足够多,MongoDB就会把数据迁移到其他分片上,这个迁移过程叫做平衡(balancing),由叫做平衡器(balancer)的进程负责执行。

2、平衡工作流程

平衡器会把数据块从一个分片挪到另外一个分片上,其优点在于自动化,即你无需担心如何保持数据在分片间的均匀分布,这项工作已经由平衡器替你搞定,不过这也是它的缺点,因为自动意味着如果你不喜欢塔做负载均衡的方式,那只能算你不走运,如果不想让某个块存在于分片3上,你可以手动移动到分片2上,但是平衡器很可能把它再挪回分片3,你只能选择要么对集合重新分片(re-shard),要么关闭平衡化。

在此之前平衡器的算法还不是很智能,它每天基于分片整体大小来移动块,在不久的将来它将变得更加先进。

平衡器的目标不仅是要保持数据均匀分布,还要最小化被移动的数据量,因此触发平衡器需要很多条件,要触发一轮平衡,一个分片必须比块最小的分片多出至少9个块,到那时候,块就会被迁移出拥挤的分片,直到与其他分片平衡为止。

平衡器并不非常激进的原因在于MongoDB希望能够避免将相同数据来回移动,如果平衡器要平衡掉没一点微小的区别,那很可能会不停地浪费资源:分片1比分片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来生做一个苦行僧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值