JavaWeb开发思维导图之——Redis高级之命令传播阶段(157)

一 概述

  • 说明
  • 命令传播阶段的部分复制
  • 服务器运行Id(runid)
  • 复制缓冲区
  • 主从服务器复制偏移量(offset)

二 说明

1
2
3
1-当master数据库状态被修改后,导致主从服务器数据库状态不一致
2-此时需要让主从数据同步到一致的状态,同步的动作称为命令传播
3-master将接收到的数据变更命令发送给slave, slave接受命令后执行命令

三 命令传播阶段的部分复制

3.1 命令传播阶段出现了断网现象

1
2
3
1-网络闪断闪联-忽略
2-短时间网络中断-部分复制
3-长时间网络中断-全量复制

3.2 部分复制的三个核心要素

1
2
3
1-服务器的运行id(run id)
2-主服务器的复制积压缓冲区
3-主从服务器的复制偏移量

四 服务器运行Id(runid)

4.1 概念

1
2
1-服务器运行id是每一台服务器每次运行的身份识别码
2-一台服务器多次运行可以生成多个运行Id

4.2 组成

1
2
1-运行Id由40位字符组成, 是一个随机的十六进制字符
2-例如:fdc9ff13b9bbaab28db42b3d50f852bb5e3fcdce

4.3 作用

1
2
1-运行id被用于在服务器间进行传输,识别身份
2-如果想两次操作均对同一台服务器进行, 必须每次操作携带对应的运行id

4.4 实现方式

1
2
3
1-运行id在每台服务器启动时自动生成的
2-master在首次连接slave时,会将自己的运行id发送给slave
3-slave保存此id, 通过info server命令, 可以查看节点的runid

五 复制缓冲区

5.1 概念

1
2
3
4
5
1-复制缓冲区, 又名复制积压缓冲区
2-是一个先进先出(fifo)的队列,用于存储服务器执行过的命令
3-每次传播命令, master都会将传播的命令记录下来, 并存储在复制缓冲区
4-复制缓冲区默认数据存储空间大小是1M
5-当入队元素的数量大于队列长度时,最先入队的元素会被弹出,而新元素会被放入队列

5.2 组成

1
2
1-偏移量
2-字节值

5.3 工作原理

1
2
3
1-通过offset区分不同的slave当前数据传播的差异
2-master记录已发送的信息对应的offset
3-slave记录已接收的信息对应的offset

5.4 作用

1
2
1- 用于保存master收到的所有指令
2-仅影响数据变更的指令, 例如set, select

5.5 数据来源

1
当master接收到主客户端的指令时, 除了将指令执行, 会将该指令存储到缓冲区中

六 主从服务器复制偏移量(offset)

1
2
3
4
5
6
7
8
1-概念: 一个数字,描述复制缓冲区中的指令字节位置
2-分类
1-master复制偏移量: 记录发送给所有slave的指令字节对应的位置(多个)
2-slave复制偏移量: 记录slave接收master方过来的指令字节对应的位置(一个)
3-作用: 同步信息, 比对master与slave的差异, 当slave断线后,恢复数据使用
4-数据来源
1-master端: 发送一次记录一次
2-slave端: 接收一次记录一次

七 思维导图

javaweb-xmind-redis-hig-data-broad-7