美文网首页mysql
主从同步一致性解决方案

主从同步一致性解决方案

作者: 没睡醒的鱼 | 来源:发表于2018-07-27 16:24 被阅读100次

    背景

    读写分离提高了资源的利用效率的同时也引出了一个问题,就是由于延时(网络传输,操作)而引起的数据库主从不一致的问题,对于这个问题,给一下集中解决方案。

    半同步复制

    • 先对主库进行一个写操作
    • 等主从同步完成,写主库的请求才返回
    • 读从库,读到最新的值

    优点:利用数据库原生功能,比较简单
    缺点:主库的写请求时延会增长,吞吐量会降低

    数据库中间件

    • 所有的读写都走数据库中间件,通常情况下,写请求路由到主库,读请求路由到从库
    • 记录所有路由到写库的key,在主从同步时间窗口内(假设是500ms),如果有读请求访问中间件,此时有可能从库还是旧数据,就把这个key上的读请求路由到主库
    • 主从同步时间过完后,对应key的读请求继续路由到从库

    优点:能保证绝对一致
    缺点:数据库中间件的成本比较高

    缓存记录写key

    当写请求发生的时候:

    • 当某个key要发生写操作时,记录在缓存里,设置缓存超时时间为主从同步时间,假设为500ms
    • 修改数据库

    当读请求发生的时候:

    • 先到缓存里查看有没有对应的key
    • 如果有,说明这个key上刚发生过写操作,此时直接从缓存中读取值并返回
    • 如果没有,说明这个key上近期没有发生过写操作,此时将请求路由到从库,继续读写分离

    优点:相对数据库中间件,成本较低
    缺点:引入了一个缓存组件,并且读写数据库时都多了一步读写缓存操作

    相关文章

      网友评论

        本文标题:主从同步一致性解决方案

        本文链接:https://www.haomeiwen.com/subject/ipdgmftx.html