集群
集群内置16384个哈希槽,客户端对一个具体的key进行哈希计算之后,对16384取余Hash(key) % 16384 得到对应的hash槽,如果对应的hash槽对应的节点不是当前客户端连接的节点,会跳转到对应的节点上。
集群分区的方法
哈希取余
一致性哈希
将增删节点的影响限制在相邻的节点中。
在节点数较少的时候,节点的上下线会产生较大影响
带虚拟节点的一致性哈希
节点之间的通信机制
两个端口
- 对外暴露的端口:例如6379
- 节点之间的端口:例如6379 + 10000
通信协议
- 单对单
- 广播:向所有节点发送消息,优点:收敛快,缺点:CPU、带宽等消耗较大
- Gossip协议:每个节点”随机”与部分节点通信;优点:负载比广播低、去中心化、容错性高;缺点:收敛速度稍慢
消息类型
每秒10次的定时任务
消息类型:
- meet:握手
- ping:消息内容是自身节点和部分其他节点的状态信息
- pong:封装了滋生的状态数据
- fail:主节点判断另一个主节点进入FAIL状态,会向集群广播这一消息
- publish
