集群

集群内置16384个哈希槽,客户端对一个具体的key进行哈希计算之后,对16384取余Hash(key) % 16384 得到对应的hash槽,如果对应的hash槽对应的节点不是当前客户端连接的节点,会跳转到对应的节点上。

集群分区的方法

哈希取余

当发生节点增删时,需要进行全部rehash

一致性哈希

将增删节点的影响限制在相邻的节点中。
在节点数较少的时候,节点的上下线会产生较大影响

带虚拟节点的一致性哈希

节点之间的通信机制

两个端口

  1. 对外暴露的端口:例如6379
  2. 节点之间的端口:例如6379 + 10000

通信协议

  1. 单对单
  2. 广播:向所有节点发送消息,优点:收敛快,缺点:CPU、带宽等消耗较大
  3. Gossip协议:每个节点”随机”与部分节点通信;优点:负载比广播低、去中心化、容错性高;缺点:收敛速度稍慢

消息类型

每秒10次的定时任务
消息类型:

  1. meet:握手
  2. ping:消息内容是自身节点和部分其他节点的状态信息
  3. pong:封装了滋生的状态数据
  4. fail:主节点判断另一个主节点进入FAIL状态,会向集群广播这一消息
  5. publish