哈希方式

  1. 将哈希值与机器中的机器建立映射关系,将不同哈希值的数据分布到不同的机器上
  2. 缺点:
    1. 扩展性不高,一旦集群规模扩展,几乎所有的数据需要被迁移并重新分布
      1. 解决方式,将对应关系作为元数据由专门的元数据服务器管理
    2. 数据倾斜问题 data skew

按数据范围分布

  1. 将数据按特征值的值域范围划分为不同的区间,使得集群中每台服务器处理不同区间的数据
  2. 当某个区间的数据量突破某个阈值时,将区间分裂拆分为两个区间
  3. 需要元服务器,维护数据分布信息

按数据量分布

将数据视为顺序增长的文件,并按照一定大小划分为 chunk,需要元数据服务器记录数据分布信息

一致性哈希

  1. 使用一个哈希函数计算数据或数据特征的哈希值,令其值域为一个封闭的环,即其输出的最大值是最小值的前序。将节点随机分布到此环上,每个节点负责处理从自己开始顺时针至下一节点的全部哈希值域上的数据
  2. 节点在环上的位置作为元信息
  3. 优点:可以任意动态添加、删除节点,每次操作仅影响一致性哈希环上相邻的节点
  4. 缺点:随机分布节点的方式使得很难均匀的分布哈希值域,尤其在动态增加节点后,原来的分布均匀也很难保证继续均匀,由此带来的另一个严重缺点时,当一个节点异常时,该节点的压力全部转移到相邻的一个节点,当加入一个新节点时,只能为一个相邻节点分摊压力
  5. 优化方式
    1. 虚节点:每个节点有若干个虚节点,每次查找数据,先查找虚节点,再通过元数据查找实际的节点