diff --git a/分布式事务/seata/seata.md b/分布式事务/seata/seata.md index aca2201..0993568 100644 --- a/分布式事务/seata/seata.md +++ b/分布式事务/seata/seata.md @@ -1,3 +1,9 @@ +- [seata](#seata) + - [Seata Global Exclusive Write Lock](#seata-global-exclusive-write-lock) + - [TC - Global Exclusive Write Lock Implementation](#tc---global-exclusive-write-lock-implementation) + - [RM - Global Exclusive Write Lock Usage](#rm---global-exclusive-write-lock-usage) + + # seata seata作为兼具高性能和易用性的分布式事务解决方案,适用于微服务架构。 @@ -37,6 +43,8 @@ seata作为兼具高性能和易用性的分布式事务解决方案,适用于 - 校验是否global lock可以被获取 - 注册transaction branch,并实际获取global lock +> 在RM端,针对global exclusive write lock的check和获取大多通过Statement和Connection的代理对象来实现。例如,在`ConnectionProxy.commit`中调用`registerBranch`,从而实现对lock的实际占用。 + global write lock的释放和RM无关,当全局事务提交时,全局事务相关的global lock将会自动被TC module释放。当注册分支事务之前,会检查global lock状态,确定在branch register的过程中不会发生锁冲突。 当执行update、insert、delete语句时,在执行前后都会以undo log的形式生成data snapshot,并且,生成快照的形式会基于`select ... for update`。