数据分布

数据分布

   数据分布指的是分布式中将 数据 或者 计算资源 进行拆分,这些拆分方式就称为数据分布。

哈希方式分布

在这里插入图片描述
  使用hash方式拆分资源,主要在于是否资源有某个值可以充当关键字。使用哈希的方式分布数据的时候,我们可以把整个分布式系统当做一个哈希表,各个节点当中哈希桶。把hash 值进过某种运算(除留取余或者 hash & nums-1)的出index索引,然后把数据存到对应索引的节点上。
  优点分布式系统的元信息简单,只需要记录计算方式与机器总量即可。如果hash函数散列性够好,资源是可以平均分配到各个节点上的
  缺点当集群扩展的时候,所有的数据源都需要去重新rehash重新去分布。

按数据范围分布

在这里插入图片描述
  每个数据区间的范围不是等分的。比如上图中第二个区间的范围是第一个区间范围的3倍但其中元素个数一样,主要在于区间是按数据量划分的。因为有些用户id的数据量大,有些用户id的数据量小。
  实际操作中为了负载均衡操作的方便,往往使用动态划分区间。当一个区间数据量多大的时候会分裂成俩个区间使每个区间的数量维持在一个固定的范围内。
  访问的时候需要先访问元信息服务器,从元信息服务器拿去用户id的机器位置,然后再去访问具体的机器获取相应的数据。所以这种划分方式需要维护大量的数据位置的元信息在元信息服务器上,随着集群规模的增长,元数据服务器往往容易形成性能瓶颈。

一致性哈希

在这里插入图片描述
  一致性哈希的思想是通过把数据的特征值进行hash计算,然后把hash计算的值域范围形成一个闭环,每个节点负责环上某段范围的数据存储。列如,A负责[1,3)位置上的数据,B负责 [4,9) 位置上的数据,C负责[9,1)上的数据。假设某数据hash值为3,该数据需要在节点A上交互。
  优点 :一致性哈希与哈希分布相比,一致性哈希扩容时只影响相邻的节点,而哈希分布则影响全体节点。
  缺点: 1. 一致性哈希需要把位置信息当做元信息保存到元信息服务器上,但是这些元信息只与集群中的机器规模相关,其元信息的量往往比按数据范围分布和按数据量分布的元信息要小很多。2. 很难保存hash值的均匀分布,尤其当新增一个节点,原先可能均匀分布的局面就会被打破。3. 当一个节点异常时,该节点的压力全部会转移到其相邻的节点。当新增一个节点的时候,也无法为全局的分布式系统分摊压力,也只能为相邻的节点分摊压力。

一致性哈希改进虚拟节点

  虚拟节点指在分布式系统初始时就创建许多虚节点,虚节点个数远大于未来集群中机器个数。将虚节点均匀的分布在哈希值域环上,其使用意义与真实的节点相同。为每个真实的节点分配若干虚节点,在进行数据交互的时候首先进行hash计算得到虚节点的位置,然后访问元信息映射得到真实节点的位置。
  优点 从全局方面上可以实现压力转移或承担。因为一旦某个节点不可用,该节点的多个虚拟节点可以转移到全局的真实节点上。新增一个节点,可以从全局的虚拟节点中分配,得而承担全局的压力。

副本

  副本是提高分布式容错、提高可用性的基本手段。副本主要以机器、数据段、块、分片为粒度。
  实际中按照机器作副本可扩展性太差,假设3个机器互为副本,假设当前集群有3个机器,现在新增俩个机器,但是新增失败因为规定3副本。并且出现异常情况,只能由持有该副本的机器组去转移数据而不是全局层面。
  如果按照数据段作副本,可以全局的每个机器保存一段数据段。当某个机器挂了后,全局的机器都可以给新增机器恢复数据,这样速度更快,可用性更大。新增机器同理,所以扩展性也很好。
  如下假设所有数据分为 o、p、q。我们把它分为3段,然后进行全局的平均分布。这样把风险从某个机器组转嫁到了整个集群。一旦某个机器怠机掉,整个集群都可以调动资源给新机器恢复资源,效率比较高。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值