5.高性能数据库集群
1.高性能数据库集群:读写分离
读写分离的原理:
读写分离的基本原理是将数据库读写操作分散到不同的节点上
读写分离的基本实现是:
数据库服务器搭建主从集群 一主一从 一主多从都可以
数据库主机负责读写操作 从机只负责读操作
数据库主机通过复制将数据同步到从机 每台数据库服务器都存储了所有的业务数据
业务服务器将写操作发送给数据库主机 将读操作发送给数据库从机
存在问题:主从复制延迟
(例如:用户刚刚完成注册后 马上登陆,业务服务器会提示他还没有注册 而用户刚刚才注册)
解决主从复制延迟的方法有以下几个:
1.写操作后的读操作指定发送给数据库主服务器
2.读从机失败后再读一次主机
3.关键业务读写操作全部指向主机 非关键业务采用读写分离
分配机制:将读写操作区分开来 然后访问不同的数据库服务器一般有两种方式:
程序代码封装和中间件封装
程序代码封装:程序代码封装指的是在代码中抽象一个数据访问层("中间层封装")
实现读写操作分离和数据库服务器连接的管理,
中间件封装:中间件封装指的是独立一套系统出来
实现读写操作分离和数据库服务器连接的管理
2.高性能数据库集群:分库分表
业务分库:业务分库指的是按照业务模块将数据分散到不同的数据库服务器
实行业务分库后存在的问题:
1.join操作问题:
业务分库后 原本在同一个数据库中的表分散到不同的数据库中
导致无法使用SQL的join查询。
2.事务问题:
原本在同一个数据库中不同的表可以在同一事务中修改
业务分库后 表被分散到不同的数据库中 无法通过事务统一修改。
虽然一些数据库厂商提供了一些分布式事务的解决方案(例如:MySQL的XA)
但是性能实在太低 与高性能存储的目标是相违背的
3.成本问题
分表方式:垂直分表 水平分表