RWSplittingAndLoadBalancing - juedaiyuer/researchNote GitHub Wiki

#读写分离和负载均衡#

为什么要读写分离

  1. 写负载是不能狗分担的,只能在主上进行写操作
  2. 读操作主从都可以

读写分离方式

  1. 由程序实现读写分离
  2. 由中间件来实现读写分离

##程序实现读写分离##

优点

  1. 由开发人员控制什么样查询在从库中执行,因此比较灵活
  2. 由程序直接连接数据库,所以性能损耗比较少

缺点

  1. 增加了开发的工作量,使程序代码更加复杂
  2. 人为控制,容易出现错误

##中间件实现读写分离##

工具

  1. mysql-proxy
  2. maxScale

优点

  1. 由中间件根据查询语法分析,自动完成读写分离

缺点

  1. 由于增加了中间层,所以对查询效率有损耗(QPS降低50%~70%)
  2. 对于延迟敏感业务无法自动在主库执行

###maxScale###

MariaDB发布

MaxScaleCore

插件

  1. Authentication 认证插件
  2. Protocal 协议插件
  3. Router 路由插件(readconnroute,readwritesplit)
  4. Monitor 监控插件
  5. Filter&Logging 日志和过滤插件

安装

yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 -y

rpm -ivh ...

##如何实现读负载均衡##

软件

  1. LVS
  2. Haproxy
  3. MaxScale

硬件

  1. F5