读写分离
高性能数据库集群的第一种方式是“读写分离”,其本质是将访问压力分散到集群中的多个节点,但是没有分散存储压力。第二种方式是“分库分表”,既可以分散访问压力,又可以分散存储压力。
基本原理
关于读写分离,基本原理是将数据库读写操作分散到不同的节点上,基本实现:
1.数据库服务器搭建主从集群,一主一从、一主多从都可以。
2.数据库主机负责读写操作,从机只负责读操作。
3.数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据。
4.业务服务器将写操作发给数据库主机,将读操作发给数据库从机。
这里是“主从集群”,而不是“主备集群”。“从机”的“从”可以理解为“仆从”,仆从是要帮主人干活的,“从机”是需要提供读数据的功能的;而“备机”一般被认为仅仅提供备份功能,不提供访问功能。
读写分离本身的实现逻辑并不复杂,但有两个细节点将引入设计复杂度:主从复制延迟和分配机制。
主从复制延迟
以MySQL为例,主从复制延迟可能达到1秒,如果有大量数据同步,延迟1分钟也是有可能的。主从复制延迟会带来一个问题:如果业务服务器将数据写入到数据库主服务器后立刻