SOFA Weekly |QA 整理

2021-05-07 · SOFA 团队 ·

SOFA WEEKLY | 每周精选,筛选每周精华问答 同步开源进展,欢迎留言互动 weekly.jpg SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁金服自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,也是在金融场景里锤炼出来的最佳实践。

SOFAStack 官网: https://www.sofastack.tech SOFAStack: https://github.com/sofastack

每周读者问答提炼

欢迎大家向公众号留言提问或在群里与我们互动 我们会筛选重点问题 通过 “ SOFA WEEKLY ” 的形式回复

1、@Chrosing 提问:

Seata 被锁的 xid 数据 一直卡住的时候, 为啥丢失了一部分 undo_log 语句?导致直接删除 lock_table 的 xid 时候,没有回滚数据回去,当前版本 1.3.0。

A:不会丢 undolog,只可能回滚了部分,部分因为脏写了导致没法回滚,这部分的 undolog 留着;所以看起来 undolog 少了,其实是分支回滚调了,留着的都是没有回滚的。
Seata:https://github.com/seata/seata

2、@洪波森 提问:

这算一个 bug 吗,永远跑不进来?

A:不是,读不到你事务分组对应的值,就是 null。
Seata:https://github.com/seata/seata

3、@陈承邦 提问:

sharding-transaction-base-seata-at 这个包只对 Seata 做了代理,我看了一早上源码,直接用 Seata 包 好像也不影响 分布式事务

A:Seata 无法找到具体那个 datasource,Seata 只能代理 sharding-jdbc 最外层的 datasource,这个 datasource 里面有 N 个 datasource 来实现分库分表的功能,这个才是真正对数据库的
Seata:https://github.com/seata/seata

4、@杨政伟 提问:

请教一个问题,如果 A 方法调用 B 方法,B 方法启用了事务,并发生异常时,但 B 方法并没有回滚,怎么能实现 B 方法的回滚?

A:在同一个类里面被其他方法调用,是不能开启事务的,看一下 aop 的机制。a 是个实例  cglib 代理了 a 成为了一个包装了它的实例,此时你直接调了内部的实例,怎么走到它的切面去呢?
Seata:https://github.com/seata/seata

本周推荐阅读