redis 那些主从,集群那些事

56 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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个参与投票那么久毫无意义了。超过半数的则会认为投票成功。