分布式笔记
事务的实现原理
1、通过数据库锁保障事务的隔离性
2、通过redo log(重做日志),保障事务的持久性
3、通过Undo log(撤销日志),保障事务的原子性和一致性。
redo log,事务提交后,如果系统崩溃,恢复时用 redo log 重做这些操作,保证数据“持久化不丢”
undo log 如果事务提交失败,回滚未提交事务(事务失败时撤销更改)
CAP:一致性、可用性、分区容错性
2PC:
1、事务协调者向事务参与者发送通知,事务参与者开启事务、执行事务,不提交,并将执行成功或失败的结果返回给事务协调者。
2、如果所有事务参与者都返回了成功,事务协调者会发送提交的请求,所有参与者会提交事务。
2、如果部分事务参与者返回了失败,事务协调者发送回滚的请求,所有参与者会回滚事务。
优缺点:
性能问题:执行过程中,数据库事务没有提交,导致数据库一直阻塞,不适合高并发性能场景。
可靠性问题:2PC非常依赖协调者,当协调者发送故障,尤其是第二阶段,所有参与者都会处于锁定事务资源的状态中,无法继续完成事务操作。
数据一致性问题:二阶段中,如果协调者向参与者发送commit,导致部分参与者没有收到commit消息。
3PC:添加了超时和
1、准备阶段 canCommit
2、预提交阶段 preCommit
3、提交阶段 DoCommit
优点:
相比于2PC,加了超时机制。
缺点:
数据不一致的问题
TCC:
confirm和cancel接口需要做幂等
优点:锁粒度更细。数据最终一致性。可靠性
缺点:增加了开发成本,与业务高度耦合
幂等操作:请求同一个资源,请求参数一样,无论请求多少次,执行逻辑和执行结果都一样。

浙公网安备 33010602011771号