架构师之路:架构设计都是相通的,从Redis来看看多机同步模型

成为架构师是很多程序员的梦想,Redis,这个非常流行的框架,里面却蕴含了很多优秀的架构设计,前面我们已经讲了很多Redis的相关知识,就如冰山一角,很多知识还需要我们进一步进行挖掘。



今天我们来讲一讲,Redis是如何做主从同步的。我认识的很多Java程序员,都能熟练使用Redis,但是对于一些基础的知识,往往不够重视,我以前也是如此,直到后来去了一个创业公司,什么东西都是从零开始,才慢慢捡回来这些基础的理论。

对于一些没有做过互联网的人来说,可能还不知道如何进行为什么需要进行主从同步,在分布式系统设计中,我们需要避免单点问题,也就是说即便是Redis的某台机器挂了,也不能影响到业务的正常使用。

可能有人会说,Redis不就是个缓存么?挂了就挂了呗,大不了直接读数据库呗,然而数据库是读写磁盘,而Redis是读写内存,两者天生IO的效率就差很大,如果大面积的缓存失效,会大大增加数据库的压力,导致服务雪崩。所以,在实际应用中,Redis的多机部署非常重要,多台机器,自然就会涉及到数据同步,今天我们来谈一谈当中的主从同步模式。

增量同步

Redis增量同步,也叫指令同步,就是从库按照顺序,重放在主库中进行的指令。就像我们小时候在电视上看到的象棋解说,参赛选手进行什么操作,他们就进行同样的操作。Redis会把指令存放在一个环形队列当中,为什么要放一个环形队列呢?因为内存的容量毕竟有限,如果备机一直起不来,不可能把所有的内存都去存指令,也就是说,如果备机一直未同步,指令可能会被覆盖掉。



如果指令被覆盖掉了,那么肯定增量同步就不行了,这个时候只好寄出我们的杀器,全量同步。

全量同步

Redis全量同步,又称快照同步。可能有些人不太理解快照的意思,快照,就跟照片一样,记录着在某一个时间点所有键值状态。在Redis中,获取一个快照的命令并不难,我们可以手动创建一个快照,也可以通过配置,后台根据相关规则创建快照。

在Redis中,我们可以通过save命令,就可以创建快照,因为Redis是单进程的,使用save命令会影响性能,所以通常我们会使用bgsave。



在redis.conf中,有着自动保存的配置,上述是Redis的默认配置,说的是在900秒内,如果有1个key变更,或者300秒内,有300个key变更,或者60秒内,有1个key变更,就会后台出发生成快照功能。

总结

成为架构师是很多程序员的梦想,其实随着经验的增长,只要多总结,你就会发现,很多系统的设计都是相通的,大部分系统的架构设计都是这种多机同步都是这种增量同步+快照的模型,多思考,多比较,相信每个人都能成为架构师。

最近主要会讲一些redis的原理与应用。近期还准备了一些AI相关的知识,整理后会和大家继续分享。大家的支持是我继续唠嗑的动力。同名公众号(沙茶敏碎碎念)

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();