Redis 设计与实现(第二版)第三部分:多机数据库的实现集群重点回顾
重点回顾
- 节点通过握手来将其他节点添加到自己所处的集群当中。
- 集群中的
16384
个槽可以分别指派给集群中的各个节点, 每个节点都会记录哪些槽指派给了自己, 而哪些槽又被指派给了其他节点。 - 节点在接到一个命令请求时, 会先检查这个命令请求要处理的键所在的槽是否由自己负责, 如果不是的话, 节点将向客户端返回一个
MOVED
错误,MOVED
错误携带的信息可以指引客户端转向至正在负责相关槽的节点。 - 对 Redis 集群的重新分片工作是由客户端执行的, 重新分片的关键是将属于某个槽的所有键值对从一个节点转移至另一个节点。
- 如果节点 A 正在迁移槽
i
至节点 B , 那么当节点 A 没能在自己的数据库中找到命令指定的数据库键时, 节点 A 会向客户端返回一个ASK
错误, 指引客户端到节点 B 继续查找指定的数据库键。 MOVED
错误表示槽的负责权已经从一个节点转移到了另一个节点, 而ASK
错误只是两个节点在迁移槽的过程中使用的一种临时措施。- 集群里的从节点用于复制主节点, 并在主节点下线时, 代替主节点继续处理命令请求。
- 集群中的节点通过发送和接收消息来进行通讯, 常见的消息包括
MEET
、PING
、PONG
、PUBLISH
、FAIL
五种。