作者:Thinking曹 2020-12-08 11:43:03
开发
架构
分布式 本篇给大家带来Spring Cloud Alibaba开源的一款分布式解决方案框架Seata,本篇为Seata组件的相关概念介绍,如果想使用Seata实战解决分布式事务难题还请看下一篇文章。
创新互联建站是一家专注于成都做网站、成都网站设计与策划设计,北塔网站建设哪家好?创新互联建站做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:北塔等地区。北塔做网站价格咨询:13518219792
Seata中文参考文档: http://seata.io/zh-cn/docs/overview/what-is-seata.html
前言
继上一篇文章 分布式事务解决方案及理论基础入门 介绍了分布式解决方案相关概念之后,本篇给大家带来Spring Cloud Alibaba开源的一款分布式解决方案框架Seata,本篇为Seata组件的相关概念介绍,如果想使用Seata实战解决分布式事务难题还请看下一篇文章。
一、什么是微服务架构
“微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建"
二、分布式事务的产生
1. 单体架构
一个用户完整的下单过程,在单体应用中,只需要一个在一个项目中,一个数据库里,通过调用下下单接口,下单时调用扣减库存方法和扣减账户余额来完成一笔订单。
2. 分布式架构
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用不同的数据源,在业务操作上需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证,分布式事务由此产生。
三、Seata的4种事务模式
1. Seata是什么
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,默认使用AT模式,为用户打造一站式的分布式解决方案。
2. AT 模式
前提
整体机制
通过2PC两阶段提交协议的演变:
写隔离
读隔离
1)、在数据库本地事务隔离级别 读已提交(Read Committed) 或以上的基础上,Seata(AT 模式)的默认全局隔离级别是 读未提交(Read Uncommitted)。
理解: 在全局事务提交之前,本地事务会先提交,这时候查询数据,对于本地库是Read Committed,对于全局来说是 Read Uncommitted。
2)、如果要求全局的读已提交,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句的代理。
3. TCC模式
TCC不依赖 RM 对分布式事务的支持,而是通过对业务逻辑的分解来实现分布式事务。
所谓 TCC 模式,是指支持把 自定义 的分支事务纳入到全局事务的管理中。
4. SAGA模式
概述
Seata提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。
适用场景:
优势:
缺点:
不保证隔离性
基于状态机引擎的 Saga 实现。
目前SEATA提供的Saga模式是基于状态机引擎来实现的,机制是:
示例状态图:
5. XA 模式
前提
整体机制
在 Seata 定义的分布式事务框架内,利用事务资源(数据库、消息服务等)对 XA 协议的支持,以 XA 协议的机制来管理分支事务的一种 事务模式。
执行阶段:
完成阶段:
关于XA模式的介绍这里先简单提一下,更详细的信息查阅 :http://seata.io/zh-cn/docs/dev/mode/xa-mode.html
四、Seata模型介绍
Seata的整个过程模型如下图所示:
上图中主要有三种角色:
术语介绍:
典型的分布式事务处理流程包括以下步骤:
流程图如下:
五、关于Seata架构
早在2019年,阿里开源了分布式事务框架Seata,原名叫Fescar,后来跟蚂蚁TCC方案整合后改名为Seata,截止目前2020年11月3日,Seata已经更新到v1.4.0版本了,虽然在之前的版本发布中,存在一些潜在的问题,但是通过开源团队快速修复问题,并且快速迭代发布新版本之下,目前相对较稳定。
同时相比与其它分布式事务框架,Seata架构的亮点主要有几个:
六、参考文档
Seata中文官方文档: http://seata.io/zh-cn/docs/overview/what-is-seata.html
Seata-Server下载地址: https://github.com/seata/seata/releases
分布式事务Demo: https://github.com/seata/seata-samples
Seata源码地址: https://github.com/seata/seataSeata中文参考文档: http://seata.io/zh-cn/docs/overview/what-is-seata.html
新闻名称:SpringCloudAlibaba分布式事务解决框架Seata概念入门篇
当前URL:http://www.csdahua.cn/qtweb/news34/296734.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网