Redis--集群

节点

  • 1.判断是集群模式还是单机模式,集群则是变为一个节点
  • 2.新增集群数据结构:clusterNode,该数据结构会保存自己在集群中的信息,clusterLink,Clusterstate

槽指派

  • 1.整个集群被分为16384个槽
  • 2.每个节点可以分得一些槽
  • 3.整个集群如果所有槽都分配到节点上,集群才是ok,否则就是fail。
  • 4.在clusterNode中通过数组标识哪些节点被当前的节点处理。
  • 5.广播传输自己节点处理的槽到其他节点。

在集群中执行命令

  • 1.如果客户端把命令发送到一个节点上,如果该处理的槽是对应节点上的则执行,否则返回错误信息
  • 2.错误信息包含正确地址,客户端根据地址去请求真正的节点。

重新分片

  • 1.当节点下线,会把槽指派给其他节点。

ASK错误

  • 1.当槽迁移过程中,如果我们请求到了老的节点,老节点检查slot是否还在,如果在就执行。
  • 2.如果不在的话则返回ASK错误,该错误包含key所在的目标节点。

复制与故障转移

  • 1.如果主节点下线则,集群中的其他的节点会选择该主节点的从节点作为新的主节点。
  • 2.集群中的节点会互相发送消息来检测其他节点是否在线
  • 3.当节点A发现B下线了,会更新自己内部对于B的状态,然后发送下线报告到集群其他节点
  • 4.如果有超过一半的节点认为节点B下线,则会广播然后其他节点就会都会标记该节点。
  • 5.选举新的主节点和新的leader sentinel相似。

你可能感兴趣的:(Redis--集群)