持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
前言
- redis应该是每个Java 人都必须要使用的一个组件了吧。redis中哨兵模式是一种高可用的模式。他是有一个或者多个Sentinel 实例组成的, Sentinel 可以理解成 redis 的服务端。哨兵模式可以监控任意个redis服务器,当发现监听的服务器下线后他们可以投票选举新的服务器。这就是我们的主从集群
主从分离
Sentinel 哨兵集群相信通过上面简单的介绍应该都了解了吧。,我们再来分析下主从分离(读写分离)。
首先,我们默认大家都已经安装了redis,然后我们将 redis.conf 拷贝多份,并且创建多个目录,用于区分多个redis 服务
-
主从分离最重要的是服务的配置,和配置普通服务一样我们需要修改端口号和对应的pid , 为了方便我们能够直接修改
slaveof属性。其中masterauth是用来配置主服务的密码的,如果没有这里可以不配置的哦。 -
我们可以看到,已经有client服务连着主服务器,通过修改
slaveof属性的方式特点是,当salve 断线重连之后,手动连接上去的主服务器,重连之后,从服务器会读取自己本地的 rdb 回复数据,而不会去自动链接主服务
sentinel 原理简述
-
其实主从很简单的,主要是 sentinel 的实现原理帮助可以实现对redis的监控。那么他的原理如何呢?
-
sentinel始终保持一定频率想集群中redis发送ping指令的,来确定是否存活。
-
如果发现最近一个ping时间超过默认值,sentinel就会认为这个服务已经挂机了。一旦认为下线他就会重新考虑集群状态
-
如果是master被标记下线,那么sentinel就会重新选举新的master了。
-
选举的过程是投票的过程,这里需要sentinel也是集群,因为如果只有1个参与投票那么久毫无意义了。超过半数的则会认为投票成功。