博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里重磅开源FESCAR,解决开发者分布式事务问题
阅读量:6948 次
发布时间:2019-06-27

本文共 1010 字,大约阅读时间需要 3 分钟。

专注于Java领域优质技术号,欢迎关注

作者:阿飞的博客

FESCAR名字的由来:Fast & EaSy Commit And Rollback

FESCAR是什么

被用在微服务架构中的高性能分布式事务解决方案。

微服务中的分布式事务问题

让我们想象一个传统的应用,由3个模块构成,并且这三个模块使用同一个数据源。很明显,数据一致性由数据库提供的本地事务就能搞定。

阿里重磅开源FESCAR,解决开发者分布式事务问题

local transaction

然而,一切美好都被在微服务架构中被打破。3个模块变成了3个服务,每个服务有独立的数据源(参考https://microservices.io/patterns/data/database-per-service.html)。每个服务的数据一致性由本地事务保证,但是跨服务的业务呢?如下图所示,某个业务既需要操作库存(Storage),又需要操作订单(Order),还需要操作账户(Account)。

阿里重磅开源FESCAR,解决开发者分布式事务问题

distribution transaction

FESCAR怎么做?

阿里重磅开源FESCAR,解决开发者分布式事务问题

distribution transaction

首先,如果定义分布式事务?我们认为一个分布式事务是由多个分支事务组成的全局事务,通常来说,分支事务就是本地事务。

阿里重磅开源FESCAR,解决开发者分布式事务问题

define distribution transaction

FESCAR有三个基本组件:

  • Transaction Coordinator(TC):事务协调器,维护着全局事务和分支事务的状态, 它来决定全局的提交还是回滚。
  • Transaction Manager(TM): 事务管理器,定义全局事务的范围:开始一个全局事务,提交或者回滚一个全局事务。
  • Resource Manager(RM): 资源管理器,管理分支事务处理的资源,与TC通信以注册分支事务并报告分支事务的状态,并驱动分支事务提交或回滚.
阿里重磅开源FESCAR,解决开发者分布式事务问题

一个典型的FESCAR维护的分布式事务的生命周期如下:

  1. TM向TC请求开启一个全局事务,TC生成一个XID,一个表示全局事务的唯一ID;
  2. 通过微服务的调用链,XID被广播出去(图中绿色线路);
  3. RM向TC注册一个属于XID表示的分布式事务下的本地事务(红色箭头);
  4. TM向TC询问是提交还是回滚XID表示的全局事务;
  5. TC驱动XID表示的全局事务下的所有分支事务,完成提交或者回滚动作。

如下图所示:

阿里重磅开源FESCAR,解决开发者分布式事务问题
参考:https://github.com/alibaba/fescar

转载地址:http://xsenl.baihongyu.com/

你可能感兴趣的文章
openjdk 7编译记录
查看>>
数据结构 ConcurrentHashMap
查看>>
spring boot 初始化是怎么扫描类的
查看>>
css3实现圆形进度条
查看>>
C++学习需要看的书籍
查看>>
jQuery的常用方法
查看>>
mysql联查时为空补全和jdbc获取最后插入生成的id
查看>>
[Android] ArcFace人脸识别 Demo
查看>>
人脸识别 闸机开发分享
查看>>
iOS开发 怎么适配iOS9
查看>>
Jquery选择器性能发现
查看>>
iptables从入门到应用
查看>>
WindowsAPI详解——TerminateProcess 终止|杀死其它进程
查看>>
java入门:dos命令运行java文件
查看>>
MySQL基本知识点
查看>>
自动加入域脚本
查看>>
黑莓10应用多源自Android
查看>>
创建Oracle表空间
查看>>
vm,vbox 虚拟机设置开机自动启动(创建虚拟机快捷方式的命令)
查看>>
用GoAccess分析Nginx的日志
查看>>