从0开始学架构学习笔记
读写分离的基本原理是将数据库读写操作分离到不同节点上
适合读压力比写压力大很多的情况。
基本实现:
数据库服务器搭建主从集群,一主一从、一主多从都可以。
数据库主机负责读写操作,从机只负责读操作。
数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据。
业务服务器将写操作发给数据库主机,将读操作发给数据库从机。
读写分离的实现逻辑并不复杂,但有两个细节点将引入设计复杂度:主从复制延迟和分配机制。
主从复制延迟
问题:延迟达到1秒甚至1分钟以上,写入主后,没法立刻从从机读取数据。
常见解决方法:
1、写操作后的读操作指定发给数据库主服务器。 2、读从机失败后再读一次主机。 3、关键业务读写操作全部指向主机,非关键业务采用读写分离。 4、引入缓存处理。
分配机制
将读写操作区分开来,然后访问不同的数据库服务器,一般有两种方式:程序代码封装和中间件封装。
1、程序代码封装的典型案例:淘宝TDDL
2、中间件封装的典型案例:MySQL Router、Atlas(base on MySQL Proxy)
(细节待补充)