首先 分析下 从库读取操作场景。 为什么会不一致? 因为主从同步有延迟,同步频率是
个配置数据库主从同步的属性可配置的,那么我们默认让他1秒钟同步一次。那么这种
延迟导致数据不一致就是发生在这一秒钟之内的未同步而已。
承接上述场景 极端一点,假如我在读取从库时距离主从同步发生还差0.0001毫秒,也就
是说在这个0.0001 毫秒之后我就可以在从库中读取到主从一致的数据了。解决主从同步
导致数据不一致的切入点就在这里。
借助redis 这个缓冲中间件。我们按照某种规则将新增的更新的(此种操作都会发生在
主库操作上)数据按照 用户ID+业务ID+其他业务维度 做成KEY 将其存储在 redis中并
设置失效时间就是1秒; 从库做查询时按照 上述key 去redis 中查找如果存在 则读取主
库,如果不存在说明数据已经同步到了从库直接查从库即可。
此种方案有点投机取巧的意味。但实战过很好用。。。既做到了数据一致性,又最大限
度的做到了主从数据库间的读写分离;
————————————————
版权声明:本文为CSDN博主「逗比骑士」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shukebai/article/details/88670964