(资料图片)

理论

分布式 中有三个理论 ACID/CAP/BASE ,这几个单词真tm难记.只能用我自己无赖方法试着理解.

模型

分布式事务的模型.这个模型读完感觉好奇怪.感觉他和隔壁的 分布式互斥方案好类似. 都是一个协调者搞事情. 也都带出来一个新问题. 协调者挂了怎么搞. 这个模型,目前我的皮毛知识面理解下来.感觉他在,又好像不在... ...听君一席话,如听一席话....分为4个部分.

一个事务组成成员的 注册. 事务的 成功与否 .可能还有整个过程的 记录(史官)

很多年前,经常流行一句话是 你的安卓机开root了吗. 这里这个资源管理者. 应该获取了事务成员每个独立个体的 事务的 提交和回滚的权利. 也就是以前的自动事务提交现在改为手动了.谁说了算呢. 这个寄生虫说了算.

原话 : 资源管理器和事务管理器之间通讯遵循的协议规范,事务管理器通过它来管理和控制资源管理器上的原子事务访问资源.这个有必要单独一个部分吗.或者是我理解错了. 立个 flag : 等找个时间按照2阶段理论和协调者的概念自己写一个分布式事务中间件.看看会不会遇到这个部分.

方案

两阶段提交

用我自己的话总结起来就是寄生虫式事务处理. 分布式事务中的各个成员之间保留了自己的事务处理.但是执行提交和回滚不归他们管, 统一由我协调者说了算. 我说提交.我的手下就讲成员应用上的事务提交.我说回滚,就把他们的事务全部一个个回滚.

三阶段提交

三阶段提交 用自己的理解起名 : 我预判了你的预判. 比这个三阶段提交好记多了首先我先预判你成功的样子.再预判你失败的样子. 然后大家一起做事情. 成功了.就是我预判的你成功的预判结果. 失败了. 就用我预判了你失败的预判的结果实现方式上 要实现三套代码逻辑 1.try 2.comfirm 3.cancel 第一个 就是预判的准备阶段. 第二个阶段就是执行预判的成功结果 .第三个就是执行预判的失败结果.

总结 : 分布式事务我目前的工作中还没有实战接触到,按照脑海中的实现思路来讲. 三阶段提交 的方式 和两阶段比较起来 更像是 把事务的过程拉长了. 在拉长的过程中. 每个步骤都是可见的 .可以读的,当然在最后的最后.它还是保证了数据的最终一致性. 而反观二阶段提交,比较纯粹. 思路更简洁,要嘛全部成功.要嘛全部是失败,而且可以站在 目前代码中普遍的 spring事务管理的肩膀上. 稍微改造一下就可以实现.当然 缺点就是对于过程的可控性和灵活性就差了很多. 两种方案都对代码有着不可避免的入侵. 二阶段入侵要比三阶段少.2022年12月28号 20点48.下班打卡.

推荐内容