决战圣地玛丽乔亚Day45

发布时间 2023-03-30 22:40:25作者: EmiXXXt

4.Redis  Cluster 集群模式

如果单机吞吐量过大,我们可以横向和纵向进行扩展,横向就是加节点(scale out),纵向就是加配置(scale up)。

如果加配置,治标不治本,单机局限性和持久化问题无法解决(如轮式RDB快照还是AOF指令)

横向扩展更容易扩展,可以解决很多问题,包括单一实例节点的硬件扩容限制、成本限制,还可以分摊压力,精细化治理,精细化维护

集群的组成:

CLUSTER MEET <ip> <port>

 

 

数据自动分片:

cluster create 创建,会将 16384 个slots 平均分配在我们的集群实例上

通过 addslots 命令指定哈希槽范围
cluster addslots 0,7120redis-cli -h 192.168.0.2 –p 6379

通过一致性哈希算法把数据分到2^14个哈希槽中,每个节点负责一部分的槽位数据(自定义分配),节点之间通过goosip协议进行通信,更新信息,故障转移和故障检测。

如果请求所在的节点不是负责该槽位的节点,那么请求会被转发到负责该槽位的节点上。如果请求的键名所在的槽位没有被分配到任何节点上,那么Redis Cluster会返回一个错误信息

集群处于online状态说明数据对应的槽位都有节点进行管理,如果状态为offline说明有数据对应的槽位没有被任何节点管理。

什么是goosip协议?

数据复制过程和故障转移

数据复制

故障检测

主从故障转移

client 访问 数据集群的过程

定位数据所在节点