文章目录

  • 概念概述
    • 一、主从复制
      • 原理
      • 优点
      • 缺点
      • 同步原理
    • 二、哨兵(Sentinel)机制
      • 原理
      • 哨兵的三大工作任务
      • 优点
      • 缺点
    • 三、Redis内置集群(Cluster模式)
      • 原理
  • 集群搭建(实践出真知嘛,加油!朋友们)
    • 需要的环境
    • 主从复制模式搭建
    • 哨兵机制集群搭建
    • 内置集群搭建(Cluster集群)
    • Cluster集群维护
      • 分片重哈希
      • 移除节点
      • 添加节点

概念概述

  • 首先我们要知道的是,Redis实际上有三种集群方案:
    主从复制模式、哨兵机制(又称为Sentinel模式)、集群模式(又称为Cluster模式)
  • 其次我们得知道为什么需要集群模式
    实际上,单机Redis的读写速度非常快,可以支持大量用户的访问,虽然Redis的性能很高,但是对于大型网站来说,每秒钟所需要获取的数据远远超过单台redis服务所能承受的压力
    所以我们需要一种方案来解决单台Redis服务性能不足的问题

一、主从复制

原理

  • 主从复制方案:对读写能力扩展,采用读写分离的方式解决性能瓶颈。
  • 即运行一个新的服务器(简称为从服务器),从服务器与主服务器进行连接,然后主服务器发送数据副本,从服务器通过网络根据主服务器的数据副本进行准实时更新(具体的更新速度取决于网络带宽),主服务器可以进行读写操作,当写操作导致数据发生变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。
  • !!注意,一个主服务器可以有多个从服务器,但一个从服务器只能有一个主服务器。这就像一个老大可以有很多小弟,但一个小弟不能同时跟多个老大一样。
  • 这样我们就有额外的从服务器来处理读请求,通过将读请求分散到不同的从服务器上面进行处理,用户可以从新添加的从服务器上获得额外的读查询处理能力
  • 并且Redis通过持久化功能,保证了即使服务器宕机或重启的情况下也不会丢失数据,因为持久化会把内存中的数据保存到硬盘上,重启会从硬盘上加载数据。

优点

  • 主从复制,主机会自动将数据同步到从机,实现了读写分离
  • 从服务器提供只读操作,主服务器提供读读写操作
  • 从服务器同样可以接受其他从服务器的连接和同步请求,这样可以有效的分载主服务器的同步压力
  • 主服务器是以非阻塞的方式为从服务器提供服务,所以在主从同步期间,客户端依然可以提交查询或修改请求
  • 从服务器也是以非阻塞的方式完成数据同步的,在同步期间,如果有客户端提供查询请求,Redis则返回同步之前的数据

缺点

  • Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或手动切换前端的IP才能恢复(即人工介入)
  • 主机宕机后如果有部分数据没有及时同步到从机,更换主机IP后会导致数据不一致的问题
  • 如果多个从机断线,需要重启的时候,如果在同一时间段进行重启,多个slave重启,都会发送sync请求并进行主机全量同步,那就会导致主机 IO剧增从而主机宕机
  • Redis较难支持在线扩容,在集群容量达到上限时在线扩容就会变得艰难

同步原理

redis2.8之前使用的是sync同步命令,redis2.8之后使用的是psync命令
两者的不同在于:sync仅支持全量复制过程,psync支持全量和部分复制