分布式寻址算法
- hash 算法(大量缓存重建)
- 一致性 hash 算法(自动缓存迁移)+ 虚拟节点(自动负载均衡)
- redis cluster 的 hash slot 算法
简单hash算法
只要集群数量N发生变化,之前所有的hash映射全部失效,缓存全部失效
一致性哈希算法+虚拟节点
一致性哈希算法
- 假设有3个node
- 增加一个Node4,只会使Node2和Node4之间缓存失效,其他数据正常
- 删除一个Node1,只会使Node2和Node1之间缓存失效,其他数据正常
数据倾斜
节点少时,数据在每个节点上分布不均匀
数据雪崩
每个节点在环上只有一个,当其中一个并发量大的节点宕机后,并发量压倒了下一个节点,该节点也顶不住压力,也宕机,其他节点也一样... ...最后集群不可用
引入虚拟节点
引入虚拟节点之后,压力分散了,解决了数据倾斜和雪崩的问题
拓展
哈希槽算法
使用哈希槽的好处:方便的添加或移除节点
- 当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;
- 当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了;
使用场景
哈希槽算法应用于redis集群模式的分布式寻址,扩容、缩容中
其他
哨兵模式由于时一主多从(主从存储一样的数据)的模式,只有一个节点提供写服务,不需要分布式寻址;
集群模式的多主多从(每个主节点存储一部分数据),需要寻址到哪一个主节点进行写操作