强制走主库方案其实就是,将查询请求做分类
。通常情况下,我们可以将查询请求分为这么两类:
1 对于必须要拿到最新结果的请求,强制将其发到主库上
。比如,在一个交易平台上,卖家发布商品以后,马上要返回主页面,看商品是否发布成功。那么,这个请求需要拿到最新的结果,就必须走主库。
2对于可以读到旧数据的请求,才将其发到从库上
。在这个交易平台上,买家来逛商铺页面,就算晚几秒看到最新发布的商品,也是可以接受的。那么,这类请求就可以走从库。
你可能会说,这个方案是不是有点畏难和取巧的意思,但其实这个方案是用得最多的
。当然,这个方案最大的问题在于,有时候你会碰到“所有查询都不能是过期读”的需求,比如一些金融类的业务。这样的话,你就要放弃读写分离,所有读写压力都在主库,等同于放弃了扩展性。
总结
- 实现不了就改需求