学习分布式, 一致性哈希是最最基础的知识, 所以要理解好.
那什么是一致性哈希呢?(what)
百度百科 上的解释很专业术语. 要一句话定义貌似也有难度: 一致性哈希算法是在哈希算法基础上,提出的在动态变化的分布式环境中,哈希算法应该满足的几个条件: 平衡性, 单调性和分散性.
1.平衡性是指 hash的结果应该平均分配到各个节点, 这样从算法上就解决了负载均衡问题.
2.单调性是指 在新增或者删减节点时, 同一个key访问到的值总是一样的.
3.分散性是指 数据应该分散的存放在 分布式集群中的各个节点(节点自己可以有备份), 不必要每个节点都存储所有的数据.
为什么要一致性哈希?(why)
这个问题问得很好…首先我们要看看不使用一致性hash, 我们的分布式集群如何工作.
1. 普通集群, 把固定的key映射到固定的节点上, 节点只存放各自key的数据, 如图: