Yin的笔记本

vuePress-theme-reco Howard Yin    2021 - 2025
Yin的笔记本 Yin的笔记本

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Shell
  • Tex
  • Rust
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
author-avatar

Howard Yin

304

Article

153

Tag

Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • Linux
  • MyIdeas
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • JavaScript
  • Python
  • Nvidia
  • Shell
  • Tex
  • Rust
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
  • Redis中的分布式

    • 复制
      • 旧版复制功能
      • 新版复制功能
      • 实现方法
    • Sentinel
      • 集群

      Redis中的分布式

      vuePress-theme-reco Howard Yin    2021 - 2025

      Redis中的分布式


      Howard Yin 2019-09-23 07:37:01 分布式Redis概念原理设计思路

      # 复制

      命令:SLAVEOF 主机IP地址 端口

      👆在从机上输入此命令后,从机和主机的存储内容会保持同步

      # 旧版复制功能

      同步(sync)和命令传播(command propagate)

      # 同步

      SYNC指令

      • 把主服务器的所有数据打包成RDB给从服务器载入
      • 把载入数据这段时间内的主服务器进行过的所有写命令再发给从服务器

      # 命令传播

      • 把造成主从服务器不一致的修改命令发送给同步后的所有从服务器进行执行

      # 缺陷

      断线后重连要重新执行同步,但是如果断线时间不长的话没有必要再次同步(因为大部分数据都还是一样的)

      # 新版复制功能

      不一样的同步、一样的命令传播

      # 新版同步

      PSYNC指令

      分为完整重同步(full resynchronization)和部分重同步(partial resynchronization)

      # 完整重同步

      同旧版的同步功能

      # 部分重同步

      专门用于处理断线重连的问题

      # 两个概念
      • 复制偏移量
        • 执行复制的双方都各自维护一个复制偏移量,存储主服务器向从服务器进行命令传播的字节数
        • 如果不掉线,主从服务器上的此偏移量始终相同
      • 复制积压缓冲区
        • 一个固定长度的FIFO队列,存储所有进行传播的指令
        • 以偏移量标记
      • 服务器运行ID
        • 由主服务器指定,唯一标记每个从服务器

      # 实现方法

      • 每秒发一次心跳数据检查复制偏移量,及时发现指令丢失

      断线重连之后:

      • 先验证服务器运行ID,如果是一个新加的服务器就直接完整重同步
      • 从服务器向主服务器发自己的复制偏移量
      • 主服务器在复制积压缓冲区中找这个复制偏移量是否还存在
      • 若存在则从此偏移量处发送复制积压缓冲区中的指令
      • 否则执行完整重同步

      # Sentinel

      由一个或多个Sentinel实例(instance)组成的Sentinel系统可以监视任意多个主服务器,当被监视的主服务器掉线时,自动将主服务器下的某个从服务器提升为主服务器。

      这是Redis的高可用性(high availability)解决方案。

      # 集群

      使用切片的方法将一个数据库分布到多个Redis节点中

      在集群中的某个节点进行查找时,如果在当前就有结果,则返回,否则计算key属于哪个节点

      帮助我们改善此页面!
      创建于: 2019-09-23 07:37:12

      更新于: 2019-09-23 07:37:12