博客
关于我
02.Seata介绍
阅读量:774 次
发布时间:2019-03-21

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

Fescar与Seata:分布式事务的开源解决方案

Fescar是阿里巴巴开源的分布式事务中间件,专注于解决微服务场景下的分布式事务问题。它以高效且对业务侵入最小的方式,帮助开发者应对分布式事务中的挑战。Fescar的全称是“Fast&Easy Commit And Rollback”,最初由阿里内部的TXC(Taobao Transaction Constructor)和阿里云的GTS(Global Transaction Service)精炼而来。

Seata与Fescar的关系

Seata是Fescar的升级版本,自2019年4月起,Seata也被用来表示这款开源分布式事务解决方案。Seata由四个英文单词组成,简单易学且具有扩展性:Simple(简单)Extensible(可扩展)Autonomous(自治)Transaction Architecture(事务架构)

Seata介绍

Seata是一款开源的分布式事务解决方案,致力于为用户提供高性能和简单易用的分布式事务服务。它支持四种事务模式:AT、TCC、SAGA和XA,为用户提供一站式的分布式事务解决方案。

分布式事务问题及Seata的解决方案

分布式事务问题是指在分布式系统中,多个节点之间需要完成一系列原子操作,但由于网络延迟、网络故障等因素,难以实现本地事务的强一致性。Seata通过高效的协调机制,解决了这一问题。

Seata通过以下方式解决分布式事务问题:

  • 事务协调器(TC/Transaction Coordinator):维护全局事务和分支事务的状态,驱动全局提交或回滚。
  • 事务管理器(TM/Transaction Manager):控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。
  • 资源管理器(RM/Resource Manager):控制分支事务,负责分支注册,状态汇报,并接受事务协调器的指令,驱动分支(本地)事务的提交和回滚。
  • Seata管理分布式事务的典型生命周期

  • 事务管理器(TM)要求事务协调器(TC)开始新的全局事务:TC生成全局事务标识符(XID)。
  • XID通过微服务的调用链传播:确保所有参与事务的服务了解全局事务上下文。
  • 资源管理器(RM)将本地事务注册为XID到TC所管理的全局事务的分支:确保各服务事务与全局事务关联。
  • 事务管理器(TM)要求TC提交或回滚XID对应的全局事务:决定全局事务的最终结果。
  • 事务协调器(TC)在XID对应的全局事务下驱动所有分支事务完成提交或回滚:确保全局事务的强一致性。
  • Fescar与Seata的核心区别

    Fescar和Seata的主要区别在于发展历程和技术架构。Fescar最初是为了解决阿里内部的分布式事务问题而开发的,而Seata是对Fescar进行了全面升级,填补了更多分布式事务场景下的痛点点,提升了性能和可靠性。

    结论

    Seata作为Fescar的升级版本,不仅继承了Fescar的核心思想,更在性能、可靠性和灵活性方面进行了优化。在分布式事务领域,Seata通过高效的分布式协调机制,帮助开发者轻松应对复杂的分布式事务问题,成为开源分布式事务解决方案中的佼佼者。

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

    你可能感兴趣的文章
    Plotly:如何结合 make_subplots() 和 ff.create_distplot()?
    查看>>
    Plotly:如何绘制累积的“步骤“;直方图?
    查看>>
    Quartz进一步学习与使用
    查看>>
    Plotly条形图-根据正/负值更改颜色-python
    查看>>
    PLSQL developer12安装图解
    查看>>
    PLSQL Developer调试 存储过程和触发器
    查看>>
    PLSQL window操作
    查看>>
    plsql 存储过程 测试
    查看>>
    plsql 安装后database下拉没有东西
    查看>>
    PLSQL_Oracle PLSQL内置函数大全(概念)
    查看>>
    PLSQL_案例优化系列_体验逻辑结构如何影响SQL优化(案例3)
    查看>>
    PLSQL中INDEX BY TABLE的 DELETE操作
    查看>>
    plsql学习笔记---plsql相关概念,以及基础结构
    查看>>
    plsql数据库异常---plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致
    查看>>
    plsql查询乱码问题解决
    查看>>
    PLSQL的DBMS_GETLINE
    查看>>
    quartz简单demo,教你最快使用quartz
    查看>>
    PlutoSDR学习笔记(一)—函数API手册
    查看>>
    Quartz安装包中的15个example
    查看>>
    Quartz学习总结(2)——定时任务框架Quartz详解
    查看>>