数据库从单机到分布式的挑战和应对
从应用使用单机数据库开始
所有的业务数据都放在一个数据库中来管理
数据库垂直/水平拆分的困难
数据库减压是思路有三个:
- 优化应用
- 引入缓存、加搜索引擎
- 数据库拆分:把数据库的数据和访问分到多台数据库
数据库拆分可以水平拆分或者垂直拆分
垂直拆分是把一个数据库中不同业务单元的数据分到不同的数据库里
带来的影响:
- 单机的ACID保证被打破。要么放弃原来的单机事物,要么引入分布式事物
- 一些join操作会很困难
- 外键约束场景受影响
水平拆分是根据一定的规则把同一业务单元的数据拆分到多个数据库中
带来的影响:
- ACID也有可能被打破
- join也有可能被影响
- 外键约束场景受影响
- 依赖单库的自增序列生成唯一ID会有影响
- 逻辑上的单表查询可能要跨库
单机变成多机后 事务如何处理
1.了解分布式事务
分布式事务是指事务的参与者,支持事务的服务器,资源服务器以及事务管理器分别位于分布式系统的不同节点上。
分布式事务模型和规范
首先X/Open组织定义了分布式事务处理模型—DTP模型(分布式事务处理参照模型),其中有三个组件,Application Program,Resource Manager和Transaction Manager。
- Application Program(AP):应用程序。定义了事务边界,并定义了构成该事务的应用程序的特定操作。
- Resource Manager(RM):资源管理器,应用程序通过资源管理器对资源进行控制。
- Transaction Manager(TM):事务管理器,负责协调和管理事务