一致性hash分片计算(一致性hash原理、hash环)

1.概述

hash环是1997年麻省理工创建的一种数学模型,基础是hash散列.可以将任意的内存对象(二进制)转化映射到0-2^32-1整数区间.称这个区间为hash环. 0-1=最大环整数, 最大环整数+1=0(通过加一和减一在可以到最大和最小,理解上感觉是一个环)

映射:利用某种计算关系,将两边的数据对应起来

2. 一致性hash原理

2.1数据映射

读取的节点信息,和数据的key值都会在这个环找到对应的整数映射,而且节点信息不变,key值不变情况下整数映射结果不变

2.2 数据key与节点对应关系

key值要找到对应处理这个key的节点,只需要在hash环上计算:顺时针寻找最近的节点整数

如下图,key1 顺时针寻找最近的节点就是10.9.160.137.6379(因为是顺时针寻找,所以一个key只能找到一个节点,保证了单调性)

上述计算逻辑,确实可以保证key对应节点node后有单调性.他是算法的基础

节点信息和key值做映射---(给定一个key,可以指定要找那个节点处理)

2.3 扩容

当集群发生节点变化时,一致性hash能够尽可能的减小对单调性破坏范围

因为顺时针找,所以插入节点后,影响的部分是插入节点逆时针到下一个节点间的部分,如下图,当插入节点

10.9.160.137:9000 时受影响的部分是下图标记绿色的部分

2.4数据的平衡性

一致性hash的计算,只使用真实节点信息,由于真实节点有限的,所以不能保证平衡性,引入了虚拟节点的概念

当节点相互映射的整数挨的比较近,必定会有某些节点对应key值远远大于其他节点,造成严重的数据倾斜,所以需要解决这个问题,一致性hash计算逻辑中可以引入虚拟节点.

 

jedis实现的一致性hash,通过计算一个节点的虚拟节点 160*weight, 调整权重值,实现比例的分配,默认weight=1

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值