1.hash算法,数据取模
最大的问题,当一台宕机的时候,原来对3取模,变成对2取模,可能会打到不同的机器上去。
hash取模2.一致性hash(自动缓存迁移)+虚拟节点(自动负载均衡)
一致性hash+虚拟节点3.redis cluster的hash slot算法
redis cluster有固定的16384个hash slot,对每个key计算CRC16值,然后对16384取模,可以获取key对应的hash slot
redis cluster中每个master都会持有部分slot,比如有3个master,那么可能每个master持有5000多个hash slot
hash slot让node的增加和移除很简单,增加一个master,就将其他master的hash slot移动部分过去,减少一个master,就将它的hash slot移动到其他master上去
移动hash slot的成本是非常低的
客户端的api,可以对指定的数据,让他们走同一个hash slot,通过hash tag来实现
hash slot
网友评论