Redis集群建立过程

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis集群建立过程

CLUSTER info:查看集群的状态

CLUSTER NODES:查看所有节点信息

A.节点之间建立连接

CLUSTER MEET [node_ip] [node_port]
复制代码

节点A:127.0.0.1 7000

节点B:127.0.0.1 7001

1.客户端连接上节点A,并在节点A上执行命令CLUSTER MEET 127.0.0.1 7001,节点A先存储该节点数据。

2.根据该命令,节点A根据命令向节点B发送meet消息。

3.节点B接收到节点A的meet消息后,存储节点A的信息,并回复pong消息证明自己的存在

4.节点A接收到pong的回复消息后,回复ping消息告知节点B已经接收到节点B的回复消息

B.设置槽位

CLUSTER ADDSLOTS [slot1]...
复制代码

当16384个槽位全部分配完毕后,CLUSTER info查看集群状态为ok,各节点信息可通过CLUSTER NODES查看

至此,节点A会将自己所分配的槽位信息通过消息通知其他节点,其他节点同样也会通过消息把自己所分配的槽位通知集群内的节点

C.重新分片

# 把指定的槽位迁移往目标节点
CLUSTER SETSLOT [slot] MIGRATING [node_ip] [node_port]
# 把指定的槽位从目标节点导出
CLUSTER SETSLOT [slot] IMPORTING [node_ip] [node_port]
复制代码

无论是新增节点还是删除节点,集群的槽位分配由以上两个命令控制。

在槽位分片的过程中,如果客户端请求通过CRC16(key)到槽位所在的节点,如果这个槽位正好处于迁移过程中,那么当前节点会检查对应的key是否已经被迁移出去。

如果key没有被迁移出去,那么直接处理;

如果key被迁移出去,那么会产生一个ASK错误,告知客户端应该向哪个目标节点请求对应的key;此时客户端需要向目标节点发送ASKING给真正的目标节点请求才能处理成功。否则就会产生MOVED错误

D.故障转移

【节点下线标准】

1.集群中每个节点都会向其他节点发送PING消息,用于检测对方是否在线。

2.一旦某一个节点没有在规定的时间内回复消息,那么就会被暂定为主观下线状态

3.集群中各节点间又会同步节点下线信息,如果在一个集群中,半数以上的主节点都判定某个主节点为疑似下线,那么这个主节点就被标记为【客观下线】

【故障转移过程】

当从节点发现正在复制的主节点已经客观下线后,开始进行故障转移;

1.选举新的主节点。

参与竞争的从节点向所有具有投票权的主节点广播消息,让对方投自己一票,如果获取的票数大于一半的话,那么该从节点就被选举为新的主节点。如果在这轮选举中没有任何从节点得票数能够超过一半,那么重新开始下一轮投票。

2.被选举出来的从节点执行SLAVEOF no one命令,让自己成为master节点

3.新的master节点会把之前主节点的槽位指向自己

4.最后向集群中广播消息,告知其他节点,自己已经完成了从节点转换为主节点的过程了

消息

【MEET消息】

使用该消息是为了是目标节点加入集群。如果目标节点还有从节点,那么从节点也会加入集群。

【PING消息】

集群中各节点会每隔一秒就会发送ping消息来检查对方是否在线。如果在一定时间内没有得到回复,那么就会标记对方为主观下线状态,当一定数量(超过半数)的节点任务目标节点为主观下线的话,那么就判定该节点为客观下线,进入故障转移阶段。

【pong消息】

用于回复MEET消息或PING消息。在集群故障转移完毕的时候,通过广播PONG消息告知其他节点已经完成故障转移。

【FAIL消息】

当节点A发现节点B在一定时间内没有回复自己的PING消息时,将节点B置为主观下线状态,并向集群广播关于节点B的FAIL消息


相关文章
|
2月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
209 2
|
15天前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
6月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
201 5
|
2月前
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。
|
3月前
|
负载均衡 NoSQL Redis
【赵渝强老师】Redis的主从复制集群
Redis主从复制是指将一台Redis服务器的数据复制到其他Redis服务器,实现数据热备份、故障恢复、负载均衡及高可用架构的基础。主节点负责写操作,从节点同步数据并可提供读服务,提升并发处理能力。
101 5
|
6月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
7月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作
|
8月前
|
缓存 NoSQL Redis
Redis原理—3.复制、哨兵和集群
详细介绍了Redis的复制原理、哨兵原理和集群原理。

热门文章

最新文章