我们都知道互联网数据有个特性,大部分场景都是 读多写少 ,比如:微博、微信、淘宝电商,按照 二八原则 ,读流量占比甚至能达到 90%
结合这个特性,我们对底层的数据库架构也会做相应调整。采用 读写分离
处理过程:
- 客户端会集成 SDK,每次执行 SQL 时,会判断是 写 或 读 操作
- 如果是 写 SQL,请求会发到 主库
- 主数据库执行SQL,事务提交后,会生成 binlog ,并同步给 从库
- 从库 通过 SQL 线程回放 binlog ,并在从库表中生成相应数据
- 读 负载均衡 从库
看似非常合理,细想却不是那么回事
主库 与 从库 是采用异步复制数据,如果这两者之间数据还没有同步怎么办?
主库刚写完数据,从库还没来得及拉取最新数据, 读 请求就来了,给用户的感觉, 数据丢了???
针对这个问题,今天,我们就来探讨下有什么解决方案?
一、强制走主库
针对不用的业务诉求,区别性对待