Redis 数据分区
Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot = CRC16(key) & 16383。每个节点负责维护一部分槽以及槽所映射的键值数据。
Redis 虚拟槽分区的特点:
1、解耦数据和节点之间的关系,简化了节点扩容和收缩难度。
2、节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据。
3、支持节点、槽、键之间的映射查询,用于数据路由、在线伸缩等场景。
节点握手
节点握手是指一批运行在集群模式下的节点通过Gossip协议彼此通信,达到感知对方的过程。节点握手是集群彼此通信的第一步,由客户端发起命令
:cluster meet {ip} {port}。
cluster meet 127.0.0.1 6380 让节点6379和6380节点进行握手通信。cluster meet命令是一个异步命令,执行之后立刻返回。内部发送与目标节点进行
握手通信。
节点握手的过程
1、节点6379本地创建6380节点信息对象,并发送meet消息。
2、节点6380接收到meet消息后,保存6379节点信息并回复pong消息。
3、之后节点6379和6380彼此定期通过ping/pong消息进行正常的节点通信。