目录
一、分布式寻址算法
1.hash 算法
2. 一致性 hash 算法
3. Redis cluster 的 hash slot 算法
二、Redis cluster 的高可用与主备切换原理
1. 判断节点宕机
2. 服务器托管网从节点过滤
3. 从节点选举
4. 与哨兵比较
一、分布式寻址算法
hash 算法(大量缓存重建)
一致性 hash 算法(自动缓存迁移)+虚拟节点(自动负载均衡)
Redis cluster 的 hash slot算法
1.hash 算法
来了一个 key,首先计算 hash 值,然后对节点数取模。然后打在不同的 master 节点上。一旦某一个 master 节点宕机,所有请求过来,都会基于最新的剩余 master 节点数去取模,尝试去取数据。这会导致大部分的请求过来,全部无法拿到有效的缓存,导致大量的流量涌入数据库。
2. 一致性 hash 算法
一致性 hash 算法将整个 hash 值空间组织成一个虚拟的圆环,整个空间按顺时针方向组织,下一步将各个 master 节点(使用服务器的ip 或主机名)进行 hash。这样就能确定每个节点在其哈希环上的位置。
来了一个 key,首先计算 hash 值,并确定此数据在环上的位置,从此位置沿环顺时针“行走”遇到的第一个 master 节点就是 key 所在位置。
在一致性哈希算法中,如果一个节点挂了,受影响的数据仅仅是此节点到环空间前一个节点(沿着逆时针方向行走遇到的第一个节点)之间的数据,其它不受影响。增加一个节点也同理。
燃服务器托管网鹅,一致性哈希算法在节点太少时,容易因为节点分布不均匀而造成缓存热点的问题。为了解决这种热点问题,一致性 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 sot 的成本是非常低的。客户端的 api,可以对指定的数据,让他们走同一个hash slot,通过 hash tag 来实现。
任何一台机器宕机,另外两个节点,不影响的。因为key找的是 hash sot,不是机器。
二、Redis cluster 的高可用与主备切换原理
1. 判断节点宕机
在 cluster-node-timeout 内,某个节点一直没有返回 pong ,那么就被认为 pfail。如果一个节点认为某个节点 pfail了,那么会在 gossip ping 消息中, ping 给其他节点,如果超过半数的节点都认为 pfail了,那么就会变成fail。
2. 从节点过滤
3. 从节点选举
所有的 master node 开始 slave 选举投票,给要进行选举的 slave 进行投票,如果大部分 masternode (N/2 +1)都投票给了某个从节点,那么选举通过,那个从节点可以切换成 master。
从节点执行主备切换,从节点切换为主节点
4. 与哨兵比较
(ps:一个点赞一份爱,点个关注不迷路!)
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 边缘计算网关:连接物理世界与数字世界的桥梁-天拓四方
边缘计算网关是一种硬件设备,通常部署在网络边缘,即物联网设备的接入点。它具备数据采集、处理、存储和传输等功能,能够实现对物联网设备的实时监控和控制。边缘计算网关将原本需要在云端处理的数据在本地进行计算和分析,从而降低了数据传输的延迟,提高了处理效率。随着物联网…