
其实就是放宽中间短暂不一致的限制,减少锁的粒度范围。

柔性事务 需要做业务改造,比较复杂。
一致性,最终一致。
隔离性,业务方保障
并发性能,略微衰退,常规事务一般左右。
场景 长事务,高并发,长事务尽量拆分成短事务。

所谓BASE 柔性事务,其实就是XA事务操作,使用业务操作去实现事务各个环节的控制。
TCC 使用代码模拟了XA事务的操作。
三块操作本身就是独立的事务。
1、Try , 其实就是prepare ,完成业务检查,预留了相关资源。例如先检查钱包是否够钱,够钱就把钱加入到冻结表里去。好处是高并发时,会主动扣掉需要消耗的资源,不会冻结整个资源。
2、confirm,真正执行业务逻辑。真正扣钱,打到别人账户里面去
3、cancel ,释放try 预留的资源。
图中所示,一个try事务会先锁定两个服务的所需资源,然后confirm成功后,才会最后cancel掉这些预留的资源。
编辑
删除
1、允许空回滚,可能try过程中,某个节点没收到,会直接cancel掉,但是try的时候并没有预留这部分资源,那cancel的时候就需要设置空回滚。
2、防悬挂控制,首先try的时候延迟,但是调用方超时了,执行cancel请求回滚,后来try收到又执行了,就会悬挂这部分资源。
3、幂等设计,重试各种事务操作,就要做好幂等处理,多次操作结果都是一次的。
1、特点,直接提交事务,没有try。
2、回滚操作设计要求较高。
3、大多数都用saga模式,业务侵入较少。
特点:
1、自动生成反向sql。

支持柔性事务的分布式框架。
只靠一个TC来操作,好处是所有记录都在TC,坏处是TC需要做高可用。


hmily:


shardingSphere 实现很多事务集成。
