Redis version 3.2 standaloan模式架构图
2022-06-30 21:14 虎背熊腰 阅读(54) 评论(0) 编辑 收藏 举报
2:应用架构图

3: 技术架

QA
1: 关于slave的AOF
从节点通过readSyncBulkPayload-> replicationCreateMasterClient -> createClient 执行链路从而实现cs模式client-> server 模拟伪客户端的请求,把数据写入aof_buf
2: 关于主从同步讲解
- replicationCron函数触发主从同步
- slave-1:连接master,并把当前fd注册在main-Thread epoll上,注册回掉函数syncWithMaster完成握手协议。握手中会发送psync,psync支持offset复制增量复制参数(无offset 发送 -1),master返回fullsync则全量复制,master返回not suport,则slave会发送sync全量复制,最后在epoll上注册readSyncBulkPayload,通过异步事件实现复制。
- slave-2 管理自身的slave节点,发送PING检查心跳,断开超时的slaves,fork进程同步数据给需要全量复制的slave, 释放空闲主从复制队列内存
- master-1:管理自身的slave节点,发送PING检查心跳,断开超时的slaves,fork进程同步二进制数据给需要全量复制的slave, 释放空闲主从复制队列内存。
- master-2:收到psync事件,判断同步模式,全量同步模式下判断当前有无全量同步slave节点或是rdb bgsave进程有则等待replicationCron触发同步,fork全同步进程并把slave状态设置为SLAVE_STATE_WAIT_BGSAVE_END【通过wait3 获取同步结果】状态(方便master 时时同步客户端的请求数据),等待rdb同步结束则改状态为KSLAVE_STATE_ONLINE
- Master-3: 增量同步情况先阻塞同步replication_backlog数据,同步完后master命令实时写入slave。(propagate 同时同步命令和写入到repl_backlog)
4: 数据架构

QA
1:OBJ_ENCODING_EMBSTR 和 OBJ_ENCODING_RAW 的区别
OBJ_ENCODING_EMBSTR robj 和 sds 分配在同一快内存
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架