新的技术一般不大容易理解。

不容易理解的主要原因是它不能跟我们的原本的知识体系挂钩。

解决这个问题的最好方式是,给予新的技术建立一个模型,这个模型是基于日常生活的,那就都能理解了。

阿里巴巴开源的SEATA,我想了一个比喻,分享一下。

先抄一段描述,关于几个角色的分工的:

1TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的 XID。
2XID 在微服务调用链路的上下文中传播。
3RM 向 TC 注册分支事务,接着执行这个分支事务并提交(重点:RM在第一阶段就已经执行了本地事务的提交/回滚),最后将执行结果汇报给TC。
4TM 根据 TC 中所有的分支事务的执行情况,发起全局提交或回滚决议。
5TC 调度 XID 下管辖的全部分支事务完成提交或回滚请求。

专业术语太多,极大不容易懂。

我们做一个生活的例子的匹配就会好理解的多了。

假设你是一个公司的员工,你想组织比较好的几个同事出去春游。

你们公司的规矩是,谁出来组织都可以,但是需要向行政部门经理报备并且经过批准。

你分别找了张龙,赵虎,王朝,马汉,展昭,想要邀请一块出去。

其中展昭本来答应了,但是后来遇到五鼠闹东京,去不了啦。

你组织这个活动,作为发起人,你要向行政部门报备。

同时张龙赵虎等人,也需要向行政部门说明。

这个例子我们来逐一匹配下对应的SEATA的角色。

你本人对应TM,你是活动发起人,TM是全局事务发起人。

行政部门经理对应TC,他不负责发起,但是他是拍板的人。

张龙赵虎王朝马汉是RM,本地事务,他们只是负责自己是去还是不去,不管别人。

当然他们也得听行政部门经理的,也就是听TC的,至于你本人只能是提建议,不能拍板。

这件事里的几个角色缺一不可,

没有你(TM)就没有人发起,

没有张龙赵虎(RM)等就没有参与者,

没有行政部门经理(TC)给你们批钱,

那你们也玩不了。

更为要命的是,你们公司的规矩是,

一旦有一个人拒绝,

那么本次活动不能成行。(要么都成功,要么都失败,事务的约束)

因为展昭拒绝了你,他让你滚蛋。

所以你也只好回滚,Rollback啦。

你们都玩不成啦。

有可能你组织的这次活动失败了。

但是另外一个同事,人家邀请了10个人,都同意了,人家反而成功。

那是你这个TM的失职,人家TC是没问题的。

XID对应什么呢?

比如你发起的这个活动叫 回龙观0527公园游。

这个活动是确定的毫无疑义的唯一的。

不是龙泽,也不是0528,就是回龙观0527.

张龙赵虎等人说起来这件事的时候,也说的都是回龙观0527公园游。

行政部也是,而且这个名字是行政部命名的,这个就是XID。

同样的XID下是一组的相关的本地事务。

回龙观0527公园游下就包含了张龙赵虎等5个人。

展昭去不了,因此行动要取消。

需要你这个负责人(TM)来发起决议,告诉行政部负责人TC,搞不了啦,散了吧。

然后行政负责人TC挨个通知张龙赵虎,定下来了,不去了,散伙。

那么你能不能通知张龙赵虎呢?

不能。

你要搞清楚自己的身份。

你只是一个小人物,是个TM。

只能提提倡议。

决定必须是TC 行政负责人来做。

上面只是描述了一次活动发生的场景。

实际生活中,肯定不会只有一个活动,往往是抢来抢去。举例来说,你可以发起一个公园游玩,你的好朋友魏无忌也可以发起,另外一个好朋友王铁锤也可以发起,你们同为TM,都想组织活动,这个时候很可能要产生资源冲突,你想邀请赵虎,魏无忌也要邀请赵虎,王铁锤想要邀请马汉,你们几个TM产生了资源冲突,怎么办呢?

不止如此,作为RM自身,也有自己的冲突,比如王朝的媳妇儿卢晓梅不想让王朝出去玩,想让他陪着自己在家里过生活,王朝就必须平衡是听你的还是听老婆的,RM自己也冲突了。

最头疼的情形是有的人既答应了这个,又答应了那个,脚踩两只船。

作为Seata来说,就得来解决这个问题,TM之间的争夺,RM自身的争夺,你作为一个框架,你得管啊。

怎么管呢?

seata的形象化比喻相关推荐

  1. SSL/TLS原理详解

    本文大部分整理自网络,相关文章请见文后参考. 关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 ,如果你想快速自建CA然后签发数字证书,请移步 基于OpenS ...

  2. 用AI,认识西门子的另一面

    https://www.toutiao.com/a6690422029939638797/ 关于西门子Siemens,每个人都有自己的印象. 家住北京朝阳区的陈先生,给出的第一印象是家电,冰箱.洗衣机 ...

  3. 【转】SSL/TLS/WTLS协议原理

    1 SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议.这种协议在WEB上获得了广泛的应用. 2 IETF(www.ietf.org )将SSL作 ...

  4. SSL协议与数字证书原理

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  5. 【学习笔记】Spring-IOC-DI-AOP 学习笔记

    文章目录 1.Spring学前基础 依赖 maven中jar包依赖的传递性 SHA1算法 Hash相关知识 Hash碰撞 数据传输安全保证 build标签 maven常用命令 1. clean指令 2 ...

  6. learn more study less:如何高效学习

    博主狂言 几句有用的话 两个序 前言 如何使用本书 整体性学习策略-learn more study less 什么是整体性学习 结构 模型 熟悉的结构成熟结构 高速公路 整体性学习的顺序 获取阶段 ...

  7. Agile方法研究综述

    Agile方法研究综述 http://www.softline.org.cn/everyone.asp?ArticleID=254 钱乐秋② 张敬周①② 朱三元①② ①(上海计算机软件技术开发中心) ...

  8. 中台战略与中台效应!!

    数字化转型对企业的IT系统提出了更高的要求:业务与技术深度交互,适应互联网时代,实现企业运营模式的重构,加快传统业态下的业务变革.如何通过IT演进支撑企业业务变革,成为包括运营商在内的数字化转型企业需 ...

  9. 『转载』 SSL协议与数字证书原理

    SSL协议与数字证书原理 1 SSL(Secure Socket Lclientyer)是netscclientpe公司设计的主要用于weserver的安全传输协议.这种协议在WESERVER上获得了 ...

最新文章

  1. 在线作图|在线做Unifrac PCoA分析
  2. R假设检验之Mann-Kendall趋势检验法(Mann-Kendall Trend Test)
  3. 语言中knitr_R语言软件包的批量引用
  4. Android Prefence 总结
  5. 剑指offer之中判断二叉树是不是对称二叉树(递归和非递归实现)
  6. centos Error: Cannot find a valid baseurl for repo: base 解决方法
  7. 数位dp从会打模板到不会打模板
  8. linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因
  9. ll按时间排序和查看目录下文件数
  10. 元素周期表排列的规律_元素周期表的秘密【机密文件】
  11. vue中computed与watch的区别
  12. 【蓝桥杯备战】Day03
  13. vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口
  14. 华硕 ROG主题 提取主题包
  15. 日常使用计算机出现的小问题(一)win10操作系统设备和驱动器栏目中出现空白图标该如何删除?删除一次刷新又重新出现
  16. python 微信二次开发_python微信公众账号二次开发
  17. 如何设置Windows文件夹背景为黑色?(其实就是“深色模式”)
  18. 在MATLAB中创建函数
  19. 【220】【3】滑动窗口(双指针)的应用,另有序的容器应用
  20. 图形化界面扫雷(C语言+easyx实现,多图教学)

热门文章

  1. 新浪微博优化,可参考大并发
  2. U1 学会U盘分区与启动-孙宇彤-专题视频课程
  3. Maya导出当前选择没有Fbx格式
  4. #1024 程序员节 #各种由来
  5. F8观后感:Facebook不止眼前的繁荣,还有雄心和远方
  6. 记录自己的学习成长之路!
  7. java is a_java中的继承(is a )和组合(has a)
  8. 小米电视4a恢复出厂设置及遥控器真假分析
  9. 富士胶片出展世界5G大会展示8K镜头等尖端产品
  10. 6-1 求二叉树高度 (25 分)【实验三:二叉树的构造和遍历】