seata 分布式解决方案:

一:什么是事务?
1.1)什么是事物?
事务是逻辑上的一组执行单元,要么都执行,要么都不执行.
eg: 张三给李四转1000元钱, 涉及到二个操作
张三的账户-1000 李四的账户+1000
上诉二个步骤要么一起成功,要么一起失败. 不存在张三的钱扣了,李四
没收到转账.
1.2)事物的特性(ACID)
什么是ACID
ACID是指数据库管理系统DBMS中事物所具有四个特性
eg:在数据库系统中,一个事务由一系列的数据库操作组成一个完整的
逻辑过程,比如银行转账,从原账户扣除金额,目标账户增加金额
①:atomicity【原子性】
原子性表现为 操作不能被分割 ,那么这二个操作 要么 同时完成 ,要
么就 全部不完成 ,若事务出错了,那么事务就会回滚,
好像什么 都 没有发生过
②:Consistency【一致性】
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,
事务开始前是一个一致状态,事务结束后是另一个一致状态,
事务将数据库从一个一致状态转移到另一个一致状态
③:Isolation【隔离性】 所谓的独立性就是指并发的事务之间不会互相影响,如果一个事务
要访问的数据正在被另外一个事务修改,只要另外一个事务还未提交,它
所访问的数据就不受未提交事务的影响。换句话说,一个事务的影响在该
事务提交前对其它事务是不可见的
④:Durability【持久性】
若事务已经提交了,那么就回在数据库中永久的保存下来
  • eata-Server设计
    seata-server是一个单独进程服务,与TM/RM的交互是RPC

image

1)Coordinator Core:最下面的模块是事务协调器核心代码,主要用来处理事务协调的逻辑,如是否 Commit、Rollback 等协调活动。

2)Store:存储模块,用来将我们的数据持久化,防止重启或者宕机数据丢失。

3)Discover:服务注册/发现模块,用于将 Server 地址暴露给 Client。

4)Config:用来存储和查找服务端的配置。

5)Lock:锁模块,用于给 Seata 提供全局锁的功能。

6)Rpc:用于和其他端通信。

7)HA-Cluster:高可用集群,目前还没开源。为 Seata 提供可靠的高可用功能。

  • 核心组件

    TC: 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚(server端)。

    TM: 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议(client端)。

    RM:控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚(client端)。

    image

开启全局事物
以@GlobalTransactional为入口,GlobalTransactionalInterceptor为切入点,稍后会讲到
TM会向TC发起一个请求(服务端使用的netty)开启一个全局事物,生成全局事物的XID,通过服务调用链路传播

开启分支事物
执行业务代码,准备开启分支事物。
分支事物开启的原理:
1.由于seata对底层的DataSource,Connection等使用DataSourceProxy,ConnectionProxy代理

2.当进行数据库操作的时候,ConnectionProxy会判断是否包含全局事物
2.1 包含全局食物
2.1.1 RM向TC发起请求注册分支事物
2.1.2 插入回滚日志(undo_log表,业务库必须新建这个表)
2.1.3 事物提交
2.1.4 向TC上报事物状态
2.2 不包含全局事物
2.2.1 事物提交

参考博文:https://www.jianshu.com/p/fe8c48f38382

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执于代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值