【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!
博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!
吾等采石之人,应怀大教堂之心,愿我们奔赴在各自的热爱里…
@[toc]
一、主从架构
本期和大家一起入门学习Redis主从架构、哨兵模式、集群相关基础概念!
主从同步:Master节点接收到写请求并处理后,需要告知Slave节点数据发生了改变,保持主从节点数据一致的行为称为主从同步
读写分离: 在redis主从架构中,Master节点负责处理写请求,Slave节点只处理读请求。对于写请求少,读请求多的场景
一主多从:架构优化
如果有很多从节点,为了缓解主从复制风暴(多个从节点同时复制主节点导致主节点压力过大),可以做如下架构,让部分从节点与从节点(与主节点同步)同步数据
如果主master挂掉?
如果某一个实例master挂掉,我们需要手动把一台从服务器切换为主服务器,还会造成一段时间内服务不可用。
为了解决主从模式不能高可用的问题,就发明了哨兵模式
二、哨兵模式
哨兵是什么
1、sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
2、哨兵模式是一种特殊的模式,Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
哨兵主要作用
1、通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
2、当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端(这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)
哨兵模式,一定是基于redis主从复制模式下做的
总结:哨兵模式,就是在原来的主从架构的基础上,又搞了一个集群,哨兵集群,这个集群会监控redis集群的主节点和从节点的状态,如果发现主节点挂了,就会重新在从节点中选出来一个作为主节点,从而做到高可用。
三、集群模式
Redis集群解释
Redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。
Redis集群架构图
Redis3.0以前:配置说明
1、在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态
2、如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般
3、特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率
Redis集群:不需要sentinel哨兵
1、Redis集群不需要sentinel哨兵,也能完成节点移除和故障转移的功能。
2、需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到上万个节点(官方推荐不超过1000个节点)。
3、redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单
本期基础Redis主从架构、哨兵模式、集群图文讲解,后续再陆续更新,下期见……
非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!
2021年11月26日22:42:21 愿我们奔赴在自己的热爱里!