只需一步,快速开始
主题 648|帖子 648|积分 1944
这是《Redis设计与实现》系列的文章,系列导航:Redis设计与实现笔记
为什么低效: 主节点 BGSAVE 要消耗大量的CPU、内存、IO资源 主节点发送需要消耗网络资源 从节点需要载入,且载入期间处于阻塞状态
struct redisServer{//...char *masterhost;int masterport;//...}复制代码
这里书上说: 在同步操作执行之前,只有从服务器是主服务器的客户端,但是在执行同步操作之后,主服务器也会成为从服务器的客户端。 正是因为主服务成为了从服务器的客户端,所以主服务器才能通过发送写命令来改变从服务器的数据库状态。 我想了想,似乎一般确实都是客户端改变服务端的数据的,所以这么说倒也在理,但是服务端不是也可以给客户端发送数据么?所以这里可能和 Redis 的具体实现有关?
一个固定长度(默认1MB)的 FIFO 的队列,当主从不一致时可以计算并从中获取缺少的命令。 由于固定长度,所以如果缺的多了就只能进行完整重同步了。 大小一般设为 断连平均时间 * 每秒的命令数,安全起见再乘以2。
毕竟只有 ID 一致同步才有意义,否则说明换主人了,那还是全同步吧
min-slaves-to-write、min-slaves-max-lag 可以防止发生脑裂现象
您需要 登录 才可以下载或查看,没有账号?立即注册
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
小秦哥