分布式事务概念性的东西:
1.柔性事务和刚性事务
刚性事务:遵循ACID原则,强一致性。(单数据库下的事务都是刚性事务)
柔性事务:遵循BASE理论,最终一致性。允许某个时间节点,数据库的数据不一致,但是最终数据库的数据是一致的。
2.分布式事务的理论基础
BASE理论:基本可用(Basically Available)、柔性状态(Soft State)、最终一致性(Eventual Consistency)
CAP理论:一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance);组合方式CP/AP
几种实现方式:
1.最大努力送达型事务
事务A已执行完成,通过消息中间件的形式向事务B发送执行命令,如果事务B未执行成功,那么消息中间件会一直尝试发送执行命令,直到成功。
应用场景:点赞、转发、评论数量等。
2.补偿型事务
事务A执行成功并提交,接着执行事务B,事务B执行失败后,回滚事务B的同时,需要将事务A提交的数据,修改为原来的状态。
应用场景:很多场景都可以使用。
缺点:对开发人员的能力要求较高。能够理解这样做的原因是什么。
3.异步确保型
事务A提交成功,用数据库状态做标识,等待事务B执行完成后,事务B通过异步回调的方式,告知事务A自己的执行结果,事务A在根据事务B的执行结果做相应的状态调整。
应用场景:很多场景都可以使用。最常见的支付回调。