redis 中分片的应用
在分布式集群中,对机器的添加删除,或者机器故障后自动脱离集群这些操作是分布式集群管理最基本的功能。如果采用常用的hash(object)%N算法,那么在有机器添加或者删除后,很多原有的数据就无法找到了,这样严重的违反了单调性原则。
Redis的分片底层原理:一致性hash算法
Hash一致性算法介绍
两大设计:
(1)hash环设计:非常大,从0到2^32(43亿个值),把对象(数据)和服务器映射到同一个哈希空间中;
(2)虚拟节点的设计:通过虚拟节点的引入,对象的分布就比较均衡了。
- 确定节点node的位置
- 对key进行hash运算.获取唯一的位置
- 之后顺时针找到最近的节点
- 之后链接节点进行set/get操作
平衡性
说明 : 为了解决数据分配不均,采用虚拟节点的方式实现数据的均衡(均衡性算法)
问题