数据库设计方案
读多写少:
主从模式,主数据库进行写库,从数据库进行读库
原因:
读数据对数据库的压力大,从库用来读库可以配置多个读库来缓解读库压力
引起的问题:
主从数据一致性,解决主从复制延迟,实现主从库的数据访问
主从库数据一致也就是主从库的复制原理
主数据库接收到客户端的更新操作,首先写入binlog日志,然后提交事务,更新存储引擎中的数据,事务提交完成后,返回给客户端操作成功响应。从数据库有一个线程实时监听主库logdump日志线程,有binlog日志更新的时候将日志写到relaylog的中继日志,返回主从复制成功响应,另外一个线程回放binlog日志,更新存储引擎的数据。实现主从库的最终一致性。一个主库由线程以及网络带宽限制,一般只配备2-3个存库,一主多从的集群架构
主从复制延迟
方式:同步复制(事务线程要等待所有从库的复制响应),异步复制,半同步复制
1.缓存解决。将数据先写入缓存redis,再写入数据库,读取的时候优先从缓存中读取。
2.数据量不大的情况下直接读主库。
3.数据冗余。异步调用审核模块时连同数据一起发送。
代码层面解决主从库的读写问题
1.中间件屏蔽数据源与数据库的联系,代理多个数据库,会跨网络两次传输
2.工程配置所有数据源,每个数据源对应一个主库或从库,代码中判断SQL语句发送至哪个数据源,不利于代码维护