前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis学习15:集群-主从复制、哨兵模式、集群

Redis学习15:集群-主从复制、哨兵模式、集群

作者头像
程序员洲洲
发布2024-06-07 08:49:27
850
发布2024-06-07 08:49:27
举报
文章被收录于专栏:项目文章

互联网的三高架构

高并发、高性能、高可用

  • 高可用的介绍:全年的时间-不可服用的时长除以全年时长的比例。
  • 业界的目标,五个9,99.999.就是全年宕机低于5.25分钟。
  • redis服务器是单点的,那么一点出问题就容易完蛋。
  • 为了避免灾难性打击,所以可以建立集群,增加可用性

主从复制介绍

  • 需要解决的问题:如何进行数据同步。
  • 那么核心的主要工作就是:master复制到slave中。
  • 这种形式就叫做主从复制。

高可用集群方案

  • 要是主机出问题了,临时从从机找一个当master,来给其他的slave推数据。
  • 如果master压力很大,也可以找一个slave追加下一级,也来当master。
  • master和slave是相对的概念。

主从复制的作用

  • 读写分离:master写,slave读。提高读写的负载能力。
  • 负载均衡:基于主从结构,配合读写分离。由slave分担master的负载,并且根据需求的变化,改变slave的数量,通过多个从节点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量。
  • 故障恢复:当master出现问题,slave提供服务,实现快速故障恢复。
  • 数据冗余:实现数据备份,是持久化之外的一种数据冗余方式
  • 高可用基石:基于主从复制,建立哨兵模式与集群,实现Redis的高可用方案。

主从复制的工作流程

  • 总述
  • 第一步:slave连master
  • 第二步:master同步数据给slave
  • 第三步:反复同步数据
  • 最起码得由两台计算机用来做两个服务器,有一个主客户端,有一个从客户端。主要来做指令的发送与接收。

工作流程第一阶段:建立连接阶段

  • 保存slave的端口号是为了对slave进行监视。
  • 同时发送指令那块进行授权可以不做,因为服务器很多是靠内网进行访问连接的。
  • 正常的方式是走配置文件的。指定对应的连接信息。
  • 注意断开肯定是从断开。从发出命令就可以了。

工作流程第二阶段:数据同步阶段工作流程

  • 注意master必须执行bgsave,不可以执行save。同时master会创建一个复制缓冲区用来接收其他写进来的数据。
  • 步骤4的请求部分同步数据是把复制缓冲区的信息进行同步。
  • 全量复制:是复制你发指令时候的全部数据。
  • 部分复制:把全量复制过程中的复制缓冲区的指令进行同步。
  • 为什么需要bgrewriteaof,因为很多指令可以进行化简的。
  • 注意数据同步阶段只包括全量复制和部分复制!
  • 第九步发送指令是第三部分的事情了!

数据同步阶段的注意事项:

主从复制第三阶段:命令传播阶段

  • slave一定要保存master的id的。
  • 复制缓冲区内部工作原理
  • AOF协议
  • 杠n和杠r是换行符和回车符
  • 同时做了编号,用来识别做到哪了,识别位置的,也就是偏移量。同时下面的叫做字节值。
  • 也就是说如果断网了,可以通过offset来弄。
  • slave和master都要记住offset。但是记住的东西可以有不同。
  • 这样做的好处是,第二次发送的时候,如果对上的offset不一样,那么就可以重新进行获取。

数据同步+命令传播阶段工作流程总结

  • 注意事项:
  • 第一次连的runid和offset都不知道,所以发一个?和-1,告诉master都要。
  • 然后master就会准备这两个东西,告诉slave。
  • fullresync是全量同步的意思。

心跳机制

  • master也会反复发ping来看slave是否在线多少。

主从复制的常见问题

哨兵模式

哨兵的定义:

哨兵的作用

启用哨兵模式

  • 系统模型如下:

sentinel.conf就是哨兵的配置文件

  • mymaster是自己定义的名字
  • 2的意思是:如果有2个哨兵认为挂了那么就认为这个master挂了,通常设置的数目是哨兵一半+1
  • 第二行的意思是:当多少秒没进行连接就认为他们是挂了
  • 最后一行是多少秒认为同步超时。
  • 把这个文件复制一份进行配置。

哨兵搭建过程略过。。

哨兵工作原理第一阶段:监控阶段

  • 最开始第一个sentinel对master进行info获取信息,然后第二台sentinel获取信息,这个时候他们获取的信息是不一样的,因为第二台获取的信息中会知道master已经有sentinel连到了,但是第一台sentinel中不会有,所以sentinel之间也会进行连接,互相通信。同时也会互相ping一下。确认连接完好。

哨兵工作原理第二阶段:通知阶段

  • sentinel1进行一个发指令hello确认连接及状态怎么样,然后收到的信息会跟2和3进行信息互通对等。
  • 下一次可能是3或者是2都是不确定的。跟master和slave进行确认。

哨兵模式工作原理第三阶段:故障转移阶段

  • 当sentinel1发现master连接不上的时候,然后标记这个master一个状态,s—down,然后他同时把这个消息传播到自己的朋友圈(内网),等到同网的其他哨兵收到这个信息,也去对这个master进行连接hello,发现也不行的时候,如果超过半数的人发现连接不上,那么状态就会改成o-down。
  • 这个时候有主观下线、客观下线两个说法。就是超过半数认为挂了,就是客观下线。
  • 一旦标记成客观下线,就开始下一个任务。
  • 这里有个投票机制。
  • 如果第一轮没有选出,那么精选次数+1.
  • 同时被选出的sentinel来开始进行处理事务。
  • 这个哨兵开始在slave中选出一个master。
  • pass掉回应慢的,然后选一个响应速度快的就可以了。
  • 同时还会选一些与原master连接密切的,连接很多的。把时间远的踢掉。

集群

业务发展中的问题

集群的数据存储

  • 一个key开始对应多个存储空间了。
  • 通过一些算法设计来进行设计一个key存储在哪个空间。
  • 如果增加了一个机器增加了存储空间,那么就会把别的槽分一些给这个新的。减去也是一样的。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 互联网的三高架构
  • 主从复制介绍
  • 高可用集群方案
  • 主从复制的作用
  • 主从复制的工作流程
    • 工作流程第一阶段:建立连接阶段
      • 工作流程第二阶段:数据同步阶段工作流程
        • 数据同步阶段的注意事项:
          • 主从复制第三阶段:命令传播阶段
            • 数据同步+命令传播阶段工作流程总结
              • 心跳机制
                • 主从复制的常见问题
                • 哨兵模式
                  • 哨兵的定义:
                    • 哨兵的作用
                      • 启用哨兵模式
                        • 哨兵工作原理第一阶段:监控阶段
                          • 哨兵工作原理第二阶段:通知阶段
                            • 哨兵模式工作原理第三阶段:故障转移阶段
                            • 集群
                              • 业务发展中的问题
                                • 集群的数据存储
                                相关产品与服务
                                云数据库 Redis
                                腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档