短事务强一致性
2阶段提交协议
TCC协议
3阶段提交协议
开源实现
阿里seata
上面提到的3个一致性协议,比较适用于短事务以保证期强一致性,在使用过程中,容易影响性能和可用性
微服务时代的事务处理原则
- 假定网络或者服务是不可靠的
- 将全局事务建模成一组本地ACID事务
- 引入事务补偿机制处理失败场景
- 事务始终处在一个明确的状态(不管成功还是失败)
- 最终一致性
- 考虑隔离性
- 考虑幂等性
- 异步响应式,尽量避免直接同步调用
协同saga
依赖执行和回滚状态机
优点:
没有单点问题
缺点:
增加、删除状态上下游都需要发生变化
编排saga
有集中编排统一安排执行或者回滚
saga不保证隔离性
语义锁