diff --git a/notes/Redis_集群模式.md b/notes/Redis_集群模式.md index 263793b..3e9da7b 100644 --- a/notes/Redis_集群模式.md +++ b/notes/Redis_集群模式.md @@ -32,11 +32,13 @@ HASH_SLOT = CRC16(key) mod 16384 假设现在有一个 6 个节点的集群,分别有 3 个 Master 点和 3 个 Slave 节点,槽会尽量均匀的分布在所有 Master 节点上。数据经过散列后存储在指定的 Master 节点上,之后 Slave 节点会进行对应的复制操作。这里再次说明一下槽只是一个虚拟的概念,并不是数据存放的实际载体。
+ ### 1.2 节点通讯 在 Redis 分布式架构中,每个节点都存储有整个集群所有节点的元数据信息,这是通过 P2P 的 Gossip 协议来实现的。集群中的每个节点都会单独开辟一个 TCP 通道,用于节点之间彼此通信,通信端口号在基础端口上加 10000;每个节点定期通过特定的规则选择部分节点发送 ping 消息,接收到 ping 信息的节点用 pong 消息作为响应,通过一段时间的彼此通信,最终所有节点都会达到一致的状态,每个节点都会知道整个集群全部节点的状态信息,从而到达集群状态同步的目的。
+ ### 1.3 请求路由 #### 1. 请求重定向 @@ -134,6 +136,7 @@ redis-cli --cluster create 127.0.0.1:6479 127.0.0.1:6480 127.0.0.1:6481 \ 执行后输出如下:M 开头的表示持有槽的主节点,S 开头的表示从节点,每个节点都有一个唯一的 ID。最后一句输出表示所有的槽都已经分配到主节点上,此时代表集群搭建成功。
+ ### 2.3 集群完整性校验 集群完整性指所有的槽都分配到存活的主节点上, 只要16384个槽中有一个没有分配给节点则表示集群不完整。 可以使用以下命令进行检测, check 命令只需要给出集群中任意一个节点的地址就可以完成整个集群的检查工作: