FESCAR:阿里重磅开源分布式事务解决方案
FESCAR名字的由来:Fast & EaSy Commit And Rollback
FESCAR是啥?
被用在微服务架构中的高性能分布式事务解决方案。
微服务中的分布式事务问题
让我们想象一个传统的应用,由3个模块构成,并且这三个模块使用同一个数据源。很明显,数据一致性由数据库提供的本地事务就能搞定。
然而,一切美好都被在微服务架构中被打破。3个模块变成了3个服务,每个服务有独立的数据源(参考https://microservices.io/patterns/data/database-per-service.html)。每个服务的数据一致性由本地事务保证,但是跨服务的业务呢?如下图所示,某个业务既需要操作库存(Storage),又需要操作订单(Order),还需要操作账户(Account)。
FESCAR怎么做?
首先,如果定义分布式事务?我们认为一个分布式事务是由多个分支事务组成的全局事务,通常来说,分支事务就是本地事务。
FESCAR有三个基本组件:
Transaction Coordinator(TC):事务协调器,维护着全局事务和分支事务的状态, 它来决定全局的提交还是回滚。
Transaction Manager(TM): 事务管理器,定义全局事务的范围:开始一个全局事务,提交或者回滚一个全局事务。
Resource Manager(RM): 资源管理器,Manage resources that branch transactions working on, talk to TC for registering branch transactions and reporting status of branch transactions, and drive the branch transaction commit or rollback.
FESCAR 3 components
一个典型的FESCAR维护的分布式事务的生命周期如下:
TM向TC请求开启一个全局事务,TC生成一个XID,一个表示全局事务的唯一ID;
通过微服务的调用链,XID被广播出去(图中绿色线路);
RM向TC注册一个属于XID表示的分布式事务下的本地事务(红色箭头);
TM向TC询问是提交还是回滚XID表示的全局事务;
TC驱动XID表示的全局事务下的所有分支事务,完成提交或者回滚动作。
如下图所示:

最新文章

  1. Winform-DataGridView 实现如Excel的粘贴复制
  2. lua练手基础
  3. ArcGIS AddIN开发之COM对象写入注册表
  4. List怎么遍历删除元素
  5. 请叫我机智-巧用ios朗读kindle图书
  6. Photoshop笔记一
  7. 2016-3-25突然推送大量消息的问题及查找 -- Sangit
  8. ArrayList 学习笔记
  9. UML系列图2
  10. 【iOS】swift-ObjectC 在iOS 8中使用UIAlertController
  11. Asp.Net Core中使用Swagger,你不得不踩的坑
  12. 【FZSZ2017暑假提高组Day1】华容道游戏
  13. SEO--提高权重
  14. stund客户端使用结果说明
  15. springboot 容器启动事件
  16. Input type=number 样式清除
  17. 微信小程序 - 下拉菜单组件
  18. Fluent UDF【5】:第一个UDF
  19. Promise异步编程整理
  20. Spring笔记⑥--整合struts2

热门文章

  1. 学到了林海峰,武沛齐讲的Day51 django+数据库
  2. cursor(鼠标手型)属性
  3. Spring CommonsMultipartResolver 上传文件
  4. CF #355div2 D 宝藏与钥匙 dp 二维数组智商题
  5. codevs2370 小机房的树 x
  6. JDK_API剖析之java.lang包
  7. STCubeMX软件新建Keil和IAR工程使用步骤:
  8. kaliXSSbeef的使用
  9. localhost与127.0.0.1的区别是什么?
  10. python学习---50行代码实现图片转字符画2