1、能够理解读写分离的目的;
2、能够描述读写分离的常见实现方式;
3、能够通过项目框架配置文件实现读写分离;
4、能够通过中间件实现读写分离;
业务背景描述:
时间:2014.6.-2015.9
发布产品类型:互联网动态站点 商城
用户数量: 10000-12000(用户量猛增)
PV : 100000-500000(24小时访问次数总和)
QPS: 50-100*(每秒访问次数)
DAU: 2000(每日活跃⽤户数)
之前业务中是单台MySQL提供服务,使用多台MySQL数据库服务器,降低单台压力,实现集群架构的稳定性和高可用性,数据库的一致性和完整性 replication,通过业务比对和分析发现,随着活跃用户数增多,读取数据(查数据)的请求变多,故注重解决数据读取的压力。
模拟运维设计方案:
根据以上业务需求,在之前业务架构的基础上实现数据的读写分离。
数据库中间件代理服务器:
MySQL的读写分离介绍:
1、读写分离的目的:
实际是数据库负载均衡的方式。
当数据库请求增多的时候,单例数据库不能满足业务的需求。需要进行数据库实例的扩容。多台数据库同时响应请求,也就是说对数据库的请求,进行负载均衡。
但是由于数据库服务的特殊原因,数据库扩容基本要求:数据的一致性和完整性。所以要保证多台数据库实例的一致性和完整性,以MySQL为例来说,官方提供了 主从复制机制。
读写分离:
数据库的负载均衡不同于其他服务的负载均衡,数据要求一致性。基于主从复制的基础上,常见的数据库负载均衡使用的是读写分离方式。写入主数据库,读取到从数据库。可以认为读写分离,是一种特殊的负载均衡方式。
可能出现的问题是刚写的数据读不到,实际业务中,读写分离存在的一个问题,不够实时性。
对于要求实时性高的业务:
1)缓存;读的时候读缓存;写主库,读缓存;
2)可以读主
3)添加完数据之后,有一个跳转的时间(5s),这5s可以进行主从复制。数据正在审核中。
还要业务代码实现。降低服务器压力。
2、读写分离常见的实现方式:
1)业务代码的读写分离