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表示的全局事务下的所有分支事务,完成提交或者回滚动作。
如下图所示:

FESCAR的更多相关文章

  1. 阿里开源分布式事务解决方案 Fescar

    微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并 ...

  2. Fescar(Seata)-Springcloud流程分析-2阶段

    上文我们分析了fescar的一阶段执行过程.在一阶段中,服务起始方发起全局事务并注册到TC.在调用协同服务时,协同服务的事务分支事务会先完成阶段一的事务提交或回滚,并生成事务回滚的undo_log日志 ...

  3. Fescar(Seata)-Springcloud流程分析-1阶段

    Fescar是阿里18年开源的分布式事务的框架.Fescar的开源对分布式事务框架领域影响很大.作为开源大户,Fescar来自阿里的GTS,经历了好几次双十一的考验,一经开源便颇受关注.今天就来看了F ...

  4. 分布式事务解决方案FESCAR

    项目地址:FESCAR 以下是官网的文档.简介2019年,Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 1. ...

  5. Fescar: Fast & Easy Commit And Rollback

    Fescar is an easy-to-use, high-performance, java based, open source distributed transaction solution ...

  6. Spring Boot微服务如何集成fescar解决分布式事务问题?

    什么是fescar? 关于fescar的详细介绍,请参阅fescar wiki. 传统的2PC提交协议,会持有一个全局性的锁,所有局部事务预提交成功后一起提交,或有一个局部事务预提交失败后一起回滚,最 ...

  7. fescar分布式事务(概览)

    1. fescar分布式事务(概览) 1.1. 概述   Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 1.2 ...

  8. Fescar Quick Start

    Quick Start Let's begin with a Microservices example. Use case A business logic for user purchasing ...

  9. Fescar Example-Spring Cloud

    项目说明 本项目演示如何使用 Fescar Starter 完成 Spring Cloud 应用的分布式事务接入. 准备工作 在运行此示例之前,你需要先完成如下几步准备工作: 配置数据库 创建 UND ...

  10. 来了!阿里开源分布式事务解决方案 Fescar

    摘要: 阿里妹导读:广为人知的阿里分布式事务解决方案:GTS(Global Transaction Service),已正式推出开源版本,取名为“Fescar”,希望帮助业界解决微服务架构下的分布式事 ...

随机推荐

  1. Python 文件I/O Ⅳ

    Python里的目录: 所有文件都包含在各个不同的目录下,不过Python也能轻松处理.os模块http://www.xuanhe.net/有许多方法能帮你创建,删除和更改目录. mkdir()方法 ...

  2. Java架构师面试题——JVM性能调优

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...

  3. Socket 对象(内建)方法

    函数 描述 服务器端套接字 s.bind() 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址. s.listen() 开始TCP监听.back ...

  4. HTML+CSS知识总结2

    一.position:absolute和float属性的异同 相同点:两者都可以让元素脱离文档流,并可设置宽高 不同点:float仍会占据位置,而position:absolute会覆盖文档流中其他元 ...

  5. css grid 随笔

    原文出自Arien的博客https://www.w3cplus.com/css3/line-base-placement-layout.html 首先定义一个网格 1.可以给父容器的display属性 ...

  6. CF 354 div2 B 酒杯金字塔

    B. Pyramid of Glasses time limit per test 1 second memory limit per test 256 megabytes input standar ...

  7. Java回调

    最近在看Spring的JdbcTemplate,有碰到很多的回调场景,在这里做一个笔记. 示例: 公司的经理出差时打电话给你让你帮他处理件事情,但不能一直通着电话,于是他让你办好事情后打电话告诉他一声 ...

  8. Understand RNN with TensorFlow in 7 Steps

    待翻译 https://medium.com/@erikhallstrm/hello-world-rnn-83cd7105b767

  9. C++入门经典-例3.8-使用条件表达式判断一个数是否是3和5的整倍数

    1:代码如下: // 3.8.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...

  10. Moodle LMS 开源教育系统

    http://docs.websoft9.com/xdocs/moodle-image-guide/   帮助文档 示例图:没有细研究