文章目录
- 集群演变
- 单节点
- 主从模式
- 哨兵模式
- Redis Cluster 集群
本文浅谈一下集群的发展,用 Redis 做例案例
集群演变
集群演变思路
Redis 集群演变流程
- 单节点:能用就行,除了问题就跑路
- 主从模式:出了意外不用跑路,数据还有备份,手动可以恢复,就是需要宕机一段时间,年终奖要缩水
- 哨兵集群:出了意外也不慌,自动恢复,年终奖稳了
- Redis Cluster 集群:不仅没有意外,还支持高负载、高并发,且支持高存储,年终奖拿 S
所以集群最终方案是:解决高可用、高并发、高存储问题
单节点
缺点:
- 缺少数据备份
- 缺少高可用
- 缺少并发扩容,缺少负载均衡
优点:
- 容易部署
主从模式
缺点:
- 缺少高可用
- 缺少并发扩容,缺少负载均衡
优点:
- 容易部署
- 实现数据备份
哨兵模式
缺点:
- 部署门槛比较高
- 缺少负载均衡
优点:
- 实现数据备份
- 实现高可用
哨兵的主要工作内容
- 哨兵节点主要负责三件事情:监控、选主、通知
- 哨兵会每隔 1 秒给所有主从节点发送 PING 命令,判断它们是否在正常运行
- 如果主节点或者从节点没有在规定的时间内响应哨兵的 PING 命令,哨兵就会将它们标记为主观下线
- 当这个哨兵的赞同票数达到哨兵配置文件中的 quorum 配置项设定的值后,这时主节点就会被该哨兵标记为客观下线,且只有主节点会判断客观下线
- 哨兵集群通过投票选出一个 leader,让 leader 来执行主从切换,leader 一为最先发现主节点下线的哨兵
故障转移步骤
- 选举出数据最完善的从节点为主节点
- 修改从节点复制目标,修改为新主节点
- 将新主节点的 IP 地址和信息,通过「发布者/订阅者机制」通知给客户端
- 继续监视旧主节点,当这个旧主节点重新上线时,将它设置为新主节点的从节点
Redis Cluster 集群
缺点:
- 部署门槛比较搞
优点:
- 实现数据备份
- 实现高可用
- 实现高可用、高并发、高存储
主要逻辑
- 去中心化:没有中心节点,没有代理中间件,犹如操作单一Redis实例,当客户端操作的key没有分配到正确的 node 时,Redis会返回转向指令,指向正确的 node
- 数据分片:将不同的数据存储在不同的master节点上;根据哈希槽分区算法,将不同的哈希槽分布在不同的节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽
- 多个 master 节点:每个master节点都可以挂载多个 slave 节点,当 master 节点挂掉时,集群会升级某个 slave 节点作为新的 master 节点