读写分离
本质是分散了访问压力,但无法解决存储海量数据的存储压力
即一主多从,主写从读
表的索引要合适,否则经常会出现主从同步宕机或主从数据不一致的问题
复杂度点
复制延迟
可达到1秒钟左右
常见解决方法
1.写操作后的读操作发给主服务器
2.读从机失败后再读一次主机
3.关键业务读写都指向主机,非关键业务采用读写分离
分配机制
1.程序代码封装
即抽象一个数据访问层
开源方案
TDDL(Taobao Distribute Data Layer)
特点
实现简单,根据业务可定制化
不支持多语言,多个语言的子系统需要重复实现
故障情况下,如果主从发生切换,需要修改所有系统配置并重启
2.中间件封装
即独立一套系统出来,中间件对业务提供SQL兼容的协议,业务服务器无需做读写分离
特点
支持多种语言
SQL兼容协议实现复杂度高,短期内不稳定
中间件的性能要高,稳定性要高
数据库主从切换对业务无感知