Hash
亦称作散列或杂凑
一种压缩映射
散列值的空间通常远小于输入的空间
不同的输入可能会散列成相同的输出
碰撞
无法从散列值来确定唯一的输入
场景
文件校验
数字指纹 md5 命令可校验文件的完整性(并不意味着未被篡改)
数字签名
分布式寻址
算法
MD5
SHA家族
普通 hash寻址
shard = hash(id_or_key) % number_of_primary_shards
适合
分区或节点数量固定(取模右边的数固定)
不足
增减节点须搬大量数据(n1/n2, n1为扩容前的节点,n2 为扩容后的节点)(又称缓存重建,重新生成缓存数据)
一致性hash
将 node进行 hash,这能确定每个节点在哈希环上的位置
对待保存的 key,首先计算 hash 值,并确定此数据在环上的位置, 从此位置沿环顺时针“行走”,遇到的第一个 node节点就是 key 所在位置
一致性
新加节点对已有节点的影响一致
初衷</