1.数据库从单机到分布式的挑战
1.1 数据垂直/水平拆分的困难
随着数据量和访问量不断的上升,数据库的压力越来越大,更换更好的硬件是一种解决方式,但是无法解决根本问题。在不靠升级硬件的情况下,能想到的处理方式就是给数据库减压。减压的思路有三个,一是优化应用;二是引入缓存减轻对数据库的压力;三是拆分数据库。
拆分的方式有两种。垂直拆分就是把一个数据库中不同业务单元的数据拆分到不同的数据库里面,水平拆分是根据一定的规则把同一业务单元的数据拆分到多个数据库中。 无论是垂直拆分还是水平拆分,最后的结果都是将原来在一个数据库中的数据拆分到了不同数据库中,所以原来单机数据库可以支持的特性现在就未必支持了。
垂直拆分会带来以下影响:
水平拆分会带来以下影响:
1.2 多实例数据库后,如何保证事务
1.2.1 分布式事务
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点上。对于传统的单机上的事务,所有的事情都在这一台机器上完成,而在分布式事务中,会有多个节点参与。
1)分布式事务模型与规范
分布式事务AP/TM/RM之间的关系:
DTP整体模型:
2)两阶段提交 2PC(Two Phase Commitment Protocol)
即在提交前有准备的过程,如果在准备过程中有一个资源失败,那么就会回滚所有资源。