• 架构学习提炼笔记(三):高性能架构设计技巧——读写分离


      读写分离的基本原理是:将数据库读写操作分散到不同的节点上。

      读写分离的基本实现是:数据库服务搭建主从集群,一主一从,一主多从都可以,数据库主机负责读写操作,从机只负责读操作。主机通过复制将数据同步到从机,每台数据库都存储了所有的业务书,业务出服务器将写操作发给数据库主机,将读操作发给数据库从机。

       

      读写分离操作主要有两个复杂度引入:

      1.主从复制延迟。

      常见解决思路是:

      a.写操作后的读操作指定发给数据库主服务器。但是这样和业务绑定比较深,对业务的深入和影响比较大。

      b.读从机失败后,再读一次主机。可从数据库访问层统一封装,代价较小,但可能造成对主机压力较大的风险

      c.关键业务读写全部指向主机,非关键业务采用读写分离

      2.分配机制

      常见解决思路有:代码封装和中间件封装。

      代码封装是通过在代码中抽象一个访问层,实现读写操作分离和数据库链接管理,例如,基于 Hibernate 进行简单封装,就可以实现读写分离,基本架构图为:

       

      这种方式实现简单,可以根据业务做较多定制,但是开发工作量较大,主从切换时可能需要重启。

      中间件封装,是指通过一套独立的系统,实现读写操作分离和数据库链接操作。对于业务服务器来说,中间件服务器就是数据库操作服务器,所有的操作都被其代理了。基本架构图是:

       

      中间件的方式,实现非常复杂,服务器性能要求也很高,但是它可以实现支持多编程语言和业务服务器无感知切换,如果有足够的人力财力以及多编程语言的要求,可以采用中间件方式实现读写分离。一般推荐直接使用代码封装的方式。

  • 相关阅读:
    pdo连接的时候设置字符编码是这样的
    mysql8.0+修改用户密码
    mysql账户添加远程访问
    php中的动态变量的一个应用
    redis scan迭代模糊匹配
    限制用户频繁提交
    js判断checkbox是否选中
    mysql 分组取每个组的前几名的问题
    Yii框架和Vue的完美结合构建前后端分离项目
    JS发送跨域Post请求出现两次请求的解决办法
  • 原文地址:https://www.cnblogs.com/wenpeng/p/10687390.html
Copyright © 2020-2023  润新知