缓存和数据库架构:
主流方案:用数据service屏蔽缓存和db,读写都走service
非主流方案:异步缓存更新,通过binlog
一缓存与db一致性问题
原则:先淘汰缓存,再修改db。如果使用更新缓存在修改DB的方案不会出现下列问题
缓存+主库:
缓存+主从:双淘汰法(同步,异步timer,binlog分析)
二db主从一致性问题
不一致原因,主从同步有延迟。
解决4种方案:
1半同步复制,等到从库写完,主库再返回,利用数据库原生功能实现。缺点:主库写请求时延增加,吞吐量降低
2 强制读主库:缺点丛库只用作冗余了,没发挥读写分离优势,智能通过cache来提升性能
3 数据库中间件:所有读写都走数据库中间件,中间件记录到写库的key,在时间窗口里面读请求路由到主库,主从完成后,路由到丛库
4 缓存记录key:用一个缓存记录写请求的key,缓存过期时间为时间窗口长度,读请求时先看缓存有没有key,有读主库,无读丛库