第一章 数据分片与路由

为什么需要数据分片?

现在要处理的数据量已经由GB跨越到PB的阶段,单机无法处理,所以只能增加机
器扩大存储空间,那么数据就必须要切割。数据分片后,如何确定分片数据与机器
节点的映射关系,这就需要数据分片与路由算法。

补充:数据复制,备份分片数据,可以提高系统可用性,以及提高系统读性能,关
键的问题就是如何保证数据一致性。

常见数据分片算法

  1. Round Robin
    将数据的key取hash然后模上机器节点的数量。缺点很明显,当机器节点改动时会让大量的数据失效。

  2. 虚拟桶
    在数据与机器节点之间添加虚拟桶这一层,数据到虚拟桶是通过hash多对一的映射,虚拟桶到机器节点是通过主节点内存中的一张表实现多对一的映射,所以当新增机器时只需要将若干虚拟桶移动到对应的节点即可。

  3. 一致性hash
    我们构建逻辑上长度为2^32的环,根据每台机器节点的ip地址等信息计算出它们的hash,对应的 hash值就是他们在环上的位置。当数据被插入时,根据数据的hash值顺时针寻找,第一个被找到的机器节点存入该数据。同时为了避免节点分布不均衡,以及增加新节点时能平摊大多数机器节点的压力,我们增加虚节点的概念,将一个机器节点映射成多个,同时打散分布。
    注:由于它的节点之间是P2P的,所以它的维护成本较高。

  4. 范围分片
    根据数据的主键划分范围,一个范围对应一台节点,其映射关系由一张表维护,需要注意的是在这张表往往不是单层的结构,而是一个B+树,以适于范围的分裂。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值