CP 各个分布式事务,等待彼此,一起提交或一起失败,弱可用。(由于一起提交分布式事务,降低可用性所以是基本可用)
=======>解决了一致性C、分区容错性P
适合场景:银行账户
AP 各个分布式事务,分别提交,如果失败进行一个补偿机制,达到最终的一致性。(软状态、最终一致性)
=======>解决了一致性A、分区容错性P
适合场景:物联网数据采集
seata是代理了数据库的database的增删改查的对象
解决方式:
1、XA模式
强一致性比较耗时,依赖数据库的acid支持,二阶段提交(资源锁定行锁,其他事务无法进行并发操作)
2、AT模式
弱一致性,行锁(其他字段还可以进行并发访问),分布式事务可以先提交,
undo-log生成快照(释放行锁后,其他事务可以获取到行锁进行操作)
如果回滚,undo-log进行回滚,然后删快照
如果是提交,提交之后,然后删快照
存在脏数据的可能性
3、TCC
try:资源检查和预留
confirm:业务执行和提交
cancel:预留资源的释放
优点:
一阶段提交事务后,释放数据库资源,性能好
相比AT无需生成快照,无需全局锁,性能最强
不依赖数据库事务,而是依赖补偿机制,可以用于非事务型数据库
* 空回滚逻辑写在cancel阶段
* 业务悬挂写在try阶段
* 幂等写在cancel阶段
4、Saga模式
长事务解决,没有隔离性,需要自己编写状态机+补偿回滚逻辑
一阶段:直接提交本地事务
二阶段:成功什么都不做,失败则通过补偿业务回滚
事件驱动,吞吐性强
浙公网安备 33010602011771号