RWSplittingAndLoadBalancing - juedaiyuer/researchNote GitHub Wiki
#读写分离和负载均衡#
为什么要读写分离
- 写负载是不能狗分担的,只能在主上进行写操作
- 读操作主从都可以
读写分离方式
- 由程序实现读写分离
- 由中间件来实现读写分离
##程序实现读写分离##
优点
- 由开发人员控制什么样查询在从库中执行,因此比较灵活
- 由程序直接连接数据库,所以性能损耗比较少
缺点
- 增加了开发的工作量,使程序代码更加复杂
- 人为控制,容易出现错误
##中间件实现读写分离##
工具
- mysql-proxy
- maxScale
优点
- 由中间件根据查询语法分析,自动完成读写分离
缺点
- 由于增加了中间层,所以对查询效率有损耗(QPS降低50%~70%)
- 对于延迟敏感业务无法自动在主库执行
###maxScale###
MariaDB发布
插件
- Authentication 认证插件
- Protocal 协议插件
- Router 路由插件(readconnroute,readwritesplit)
- Monitor 监控插件
- Filter&Logging 日志和过滤插件
安装
yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 -y
rpm -ivh ...
##如何实现读负载均衡##
软件
- LVS
- Haproxy
- MaxScale
硬件
- F5