柔性事务 - 图1

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

    柔性事务 - 图2

    柔性事务 需要做业务改造,比较复杂。

    一致性,最终一致。

    隔离性,业务方保障

    并发性能,略微衰退,常规事务一般左右。

    场景 长事务,高并发,长事务尽量拆分成短事务。

    柔性事务 - 图3

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