系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。
主从不一致
主从不一致的情况发生在主库更新的时候,向从库同步存在延迟,这个时侯业务刚好对主库更新的内容进行访问,但读的是从库,也就读到了更新前的数据。
这种不一致性是binlog主从同步的延时造成的,最大也就秒级,针对这一特性,通常有以下三种处理方式:
忽略不计
如果业务侧是可以忍受读到短时间的一个脏数据的(通常只要用户刷新一下就是正确数据),那么忽略不计其实是最经济实惠的方式,只要业务允许,那么我们的架构也可以简单一些。
强制读主
强制读主的方式就是抛弃读写分离的架构设计了

那么我们对于提升读性能当然还有缓存的方式,关于缓存的一致性在缓存篇再做讨论。
选择性读主
这是一种颇有意思的设计方式,需要缓存进行配合。
它的写过程是这样的:

- 假设一个主从同步的时延,比如说是1s
- 在写入主库之前,先在缓存set一个key,这个key是用来标的哪些数据是被更新了的(比如说更新row的表、主键等),缓存的失效时间就是主从同步的时延,也就是1s
- 后续步骤也就是写入主,主从同步,与正常流程没有区别
它的读过程是这样的:
数据库一致性:主从与主主不一致处理

本文探讨了数据库主从不一致及主主不一致的问题,包括忽略不计、强制读主和选择性读主的处理方式,以及数据库层面和上游层面解决主键冲突的策略。此外,还介绍了影子主不服务的概念,以提高数据库的高可用性。
最低0.47元/天 解锁文章
357





