Redis底层数据结构与底层架构
2021-11-12 18:44:56 3 举报
关于Redis数据结构以及架构的底层原理
作者其他创作
大纲/内容
4.在salve成为新的主节点之前,会pong广播通知所有节点,停止选举并通知自己的从节点,向自己靠拢,如果master重新连上,会成为它的从节点
master
sentinel
2.生成RDB快照文件
1.如果某台主节点发生FAIL
appendsync推荐everysec 每隔一秒
RDB
0~5001
10003~16383
1.发送psync命令请求同步数据
master(salve)
Redis数据结构与底层架构
7
哨兵是通过master获取到slave的信息
pong
Client
主从复制架构
Buffer
(master)
模拟集群下master宕机 进行选举
load
5002~10003
slave
9
AOF
List
I am a String
7.加载到内存
1
Set
全量复制
4.生成RDB文件需要时间缓存区存储期间新增的key
buffer缓存
key
b
8
d
2.salve会向其他主从所有节点发送pong广播,通知节点们,该主从的主节点宕机了,slave要进行选举,成为新的master
save X YX秒内新增Y个键
在此期间新增的键
2b
1a
1.发送psync(offsetId)命令请求同步数据
哨兵集群
meet
如果salve短暂重连master
a
field1
Ping
如果主节点发生宕机,哨兵会第一时间监听到
RedisCluster
二进制
Blend
Cluster(CRC16(key) % 16384)
持久化方式
4.如果旧master重连会转变为从节点
3.将rdb文件数据发送
master(salve)
2.之后client会直接访问主节点
1.第一次进行连接,client会向master获取主节点信息
Redis集群将内存分为16384个槽位,在启动的时候就会对每个主节点进行槽位分配
2.如果判定salve传过来的offsetId包含在Buffer范围内master会将slave的offsetId之后的数据一次性同步给slave如果不在范围内则走全量同步
Hash
field2
2.将新的master节点ip传给client
不管Salve是第几次连上master
利用crc算法进行hash取模得到每个主节点应该分配的槽位
集群高可用架构
String
增量复制
value1
Zset
每个槽位可以称之为是一个节点各个节点采用gossip协议进行通讯
哨兵集群架构
RESP
3.client确认旧master宕机后将新的master设为主节点
X
5.发送buffer文件
6
缓存区存储了最近的数据其实就是一些写命令每个命令有一个offsetId
gossip协议
注意:这里不是只有一个salve会进行选举,只要是他的从节点,都会发起选举,但是有个先后顺序
3
满足重AOF写机制
3c
c
4
2
3.master会持续执行写命令保证数据一致性
fail
1.哨兵监听到master宕机选取一个salve作为新的master
5
备份原有键
value2
6.将rdb与buffer合并成一个最新的RBD文件
模拟哨兵模式master宕机
slave(master)
重写机制触发
0 条评论
下一页