分布式事务-LCN

1.事务组(transaction group)

事务组是由同一次事务是的各个事务组成的事务组合,叫做事务组。

若存在A和B两个服务模块,分别包含a和b方法、c和d方法,则方法的调用关系为a->b->c->d

A{ a(),b()} B{c(),d()}

需要了解的是事务的七个传播行为:

2.LCN的事务原理

1.事务管理器(TM)

总体管理所有方法的本地事务,并且统一下达指令,管理方法的执行或者回滚

2.事务内部方法集合(事务方法)

控制所有内部方法集合的所有事务的提交和回滚操作,并统一管理进行统一化处理操作

2.1.事务方法开始端

    请求事务管理器(事务协调器)创建事务组生成事务组GroupId,并且进行传递GroupId

2.2.事务方法过程端

  当执行结束过程端方法后,获取到接收到TsGroupId,并且根据是否commit或者rollback进行提交并且添加到事务协调器中(根据groupId)。

  当本地事务进行提交的时候,可以选择进行等待之后再进行commit,原理可以考虑覆盖Connection的commit方法在里面进行wait或者await,之后,获取以后释放notify、signal即可。可以考虑交由Spring的事务去执行commit方法,当出现rollback,则tm或通知其他本地事务进行rollback实现。

2.3.事务方法结束端

当事务组中的事务都已经完成事务执行且没有包含rollback的事务之后,则直接进行分别通知所有的本地子事务,进行统一的提交工作即可。本地事务接收到了提交操作,取消wait、await即可直接提交。

3.连接池劫持计划

1.代理连接池:对真正的连接池进行代理工作计划,可以对connection的连接进行代理工作。

2.假关闭,并没有真正释放,而是进行task进行等待操作,等待tm之后进行提交或者回滚。

3.考虑自动超时处理,可以考虑全部回滚或者全部提交工作。

你可能感兴趣的:(分布式事务-LCN)