Redis高可用的三种实现方式(主从、哨兵、集群)

1、什么是高可用

​         高可用一般来说有两个含义:一是数据尽量不丢失,二是保证服务尽可能可用。 AOF 和 RDB 数据持久化保证了数据尽量不丢失,而多节点来保证服务尽可能提供服务。单个节点的系统缺点明显,一旦发生故障会导致服务不可用。而且,单个节点处理所有的请求,吞吐量有限,容量也有限。

2、Redis的高可用的实现方式

 Redis实现高可用,通常有三种部署模式:主从模式哨兵模式集群模式

1.主从模式(不重点)

redis多机器部署时,这些机器节点会被分成两类,一类是主节点(master节点),一类是从节点(slave节点)。

一般主节点可以进行读、写操作,而从节点只能进行读操作。

同时由于主节点可以写,数据会发生变化,当主节点的数据发生变化时,会将变化的数据同步给从节点,这样从节点的数据就可以和主节点的数据保持一致了。

一个主节点可以有多个从节点,但是一个从节点会只会有一个主节点,也就是所谓的一主多从结构。

优点:

实现读写分离,降低master节点的读数据压力,提高系统的性能。写操作交给master节点,读操作交给slave节点,提供多个副本。
配置简单,容易搭建。只需要在slave节点上维护master节点的地址信息就可实现。


缺点:

当master节点宕机时,由于无法选择哪一个slave节点当master节点,无法保证高可用。
所有的写数据的压力都集中在master节点,没有解决master节点写的压力。

  • 全量复制

(第一次数据打开时,就会进行全量复制,第二次才会采用增量复制)

  • 增量复制

 2、哨兵模式

        利用哨兵监控主机,当主机因为网络原因下线后,哨兵会先主观认为主机下线,发送询问请求给其他哨兵,其他哨兵超过半数认为主机下线,此时就是客观下线。一旦哨兵认为主机客观下线了, 就会开始重新选主操作。

选主操作是如下流程:

        三个哨兵会一起投票,选出一台哨兵领导机器,去选择master主机。三个哨兵内部会先选出一个领导,由这个哨兵领导去选择master

        三个哨兵如何选出哨兵领导,采用投票机制。当某个哨兵得到了超过半数哨兵的投票后,这个哨兵就成为领导哨兵。

        哨兵领导选择主机的策略是:看谁的数据最新最新的会被选为主机;如果多台机器数据一致,那么看谁先启动。

        为什么要超过半数??防止脑裂(防止出现多个哨兵领导,采用少数服从多数原则

优点:哨兵机制,保证高可用。能够监控各个节点运行状况,进行自动故障转移。

缺点:

中心化集群实现方式,基于主从模式,切换节点时,会发生数据的丢失。
集群里所有节点保存的都是全量数据,浪费内存空间,没有真正实现分布式存储。数据量过大时,主从同步严重影响master的性能。
数据写的操作都集中在master上,仍然没有解决master写数据的压力。

 3、Cluster集群(重点)

​         哨兵模式基本已经实现了高可用,但是每个节点都存储相同的内容,很浪费内存。而且,哨兵模式没有解决master写数据的压力。为了解决这些问题,就有了集群模式,实现分布式存储,数据与数据之间通过心跳的方式来存储数据。每个节点存储不同的内容。集群部署的方式能自动将数据进行分片,每个master上放一部分数据,提供了内置的高可用服务,即使某个master宕机了,服务还可以正常地提供

优点:

无中心结构,部署简单。所有的Redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
可扩展性,可扩展master节点,释放单个master的写数据压力,节点可动态添加或删除。
能够实现自动故障转移,节点之间通过gossip协议交换状态信息,用投票机制完成slave到master的角色转换。

集群作用:

  • 分散单台服务器的访问压力,实现负载均衡
  • 分散单台服务器的存储压力,实现可扩展性
  • 降低单台服务器宕机带来的业务灾难

 

Cluster集群结构设计

数据存储设计:

  1. 通过算法设计,计算出key应该保存的位置
  2. 将所有的存储空间计划切割成16384份,每台主机保存一部分注意:每份代表的是一个存储空间,不是一个key的保存空间
  3. 将key按照计算出的结果放到对应的存储空间

 

那redis的集群是如何增强可扩展性的呢?譬如我们要增加一个集群节点

当我们查找数据时,集群是如何操作的呢?

  • 各个数据库相互通信,保存各个库中槽的编号数据
  • 一次命中,直接返回
  • 一次未命中,告知具体位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值