哈西取余分区如何保证负载均衡数据都能分配到每个节点上呢

上学的时候不是计算机专业 最近自己学docker学到一个redis集群案例 视频讲到哈西取余分区的时候,有点钻牛角尖有个问题死活想不明白 希望大伙指点一下

案例中讲我 假设有3台redis 有1000个数据,要落到这3台redis上 用hash算法计算这1000个数据 得到一个哈希值,哈希值/3 取余数 余数为1就落第一个redis 上 余数为2就落到第二个redis余数为0就落到第三个redis
然后我就想到一个极端情况,万一这1000个数据用hash算法算出来的值都是余数为1 那另外两台是不是就有落不到数据的可能?

所以关键就在你的hash算法是否合理啊,如果这1000个数据都完全相同,也就是key相同,那不就是更新吗,如果这1000个数据都不同,hash算法其实就会有1000个不同的结果,还有就是三个分区确实会比较大可能碰撞的,但只要是hash函数能尽可能的均匀分布就可以。

建议你看一下一致性Hash算法,https://www.jianshu.com/p/24a08749e49f