Redis集群

◇◆丶佛笑我妖孽 提交于 2020-02-14 00:06:08

目前为止Redis官方支持的三种集群方式

(以下内容仅为作者的个人理解,如果存在错误欢迎指出)

1:Redis主从配置(容错率较低,master节点宕机后整个服务就不可用了。)

2:Redis哨兵模式(是在主从集群的升级版本,支持master自动切换。不支持横向扩容)

3:Cluster集群模式(需要升级至Redis 3.0)

Redis主从配置

简介:

主:一个Redis服务器为Master节点。负责写入数据,和同步数据至从节点。

从:一台或者多台Redis服务器为Slave节点。不支持写入数据,可以提供同读取数据的服务(但是可能会出现主从数据不一致的情况)

(缺点:不能水平扩容,并且该模式的高可用特性都会受到Master主节点内存的限制。)

主从配置数据同步的过程简介:

当Slave节点首次启动时,会主动向Master节点发起socket连接。在连接成功后会发送SYNC命令进行数据同步(该同步是全量同步),之后主节点会每隔10秒钟(默认配置)向从节点发送PING命令(心跳)来保证连接的有效性。从节点会每隔1秒钟(默认配置)向主节点发送REPLCONF ACK命令来维护数据偏移量的offset。之后会从节点会向主节点发送PSYNC命令来同步增量数据(如果一切正常的情况下是进行增量复制。但是具体是进行全量复制还是,增量复制有很多种情况决定)。

如果需要了解主从配置的具体过程请参考该文章:https://www.cnblogs.com/wade-luffy/p/9639986.html

Redis哨兵模式

简介:

该模式是在主从配置上的升级版。

在主从配置上增加了Redis Sentinel(哨兵)

该模式是从Redis的2.6版本开始提供的,但是当时这个版本的模式是不稳定的,直到Redis的2.8版本以后,这个哨兵模式才稳定下来

(缺点:不能水平扩容,并且该模式的高可用特性都会受到Master主节点内存的限制。)

Redis Sentinel:

Redis Sentinel是Redis高可用的实现方案。Sentinel是一个管理多个Redis实例的工具,它可以实现对Redis的监控、通知、自动故障转移。

监控:

sentinel会每隔一秒钟向redis服务器发送PING名字进行心跳检测,当超过down-after-milliseconds时间内PING连接无效,该节点会被该sentinel标记为主管下线。当对某一个redis实例的主管下线数达到sentinel monitor所配置的数量时,该redis实例会被标记为客观下线。然后sentinel集群会选举出一个领头的sentinel对该客观下线的Redis实例进行故障转移。

故障转移:

当发生故障转移时。sentinel会从该主节点的从节点当中选取出一个从节点,然后将其指定为新的主节点。

选取从节点的机制:

  1. 网络连接正常
  2. 5秒钟内回复过info命令
  3. 10*down-after-milliseconds内与主连接过的
  4. 从服务器优先级
  5. 复制偏移量
  6. 运行id较小的

将该从节点进行主从切换(在切换过程中,该集群是不可用的)然后通知其他的从节点进行主节点的切换。

通知:

Master和Slave服务器切换后,Master的redis.conf、Slave的redis.conf和sentinel.conf的配置文件的内容都会发生相应的改变,即,Master主服务器的redis.conf配置文件中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换。

参考:https://blog.csdn.net/pw191410147/article/details/82968168

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!