SOFA Weekly | sofa-common-tools 发布新版本,QA 整理

2021-03-12 · 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 ” 的形式回复

@孙军超 提问:

请教一下  jraft-rheakv  rocksdb 的 get put 操作,耗时要 5 秒钟,是服务端配置需要优化吗? 以下是我的服务端配置截图。

A:kill -s sigusr2 可以看到性能指标度量,官方文档请看一下有相关说明。

SOFAJRaft:https://github.com/sofastack/sofa-jraft

@戚金奎 提问:

请教一个问题:如图,目前服务都是通过 openfeign 远程调用,如果 setScore 所在的服务抛出了异常,是能直接出发事务回滚吗(我本地的无法出发回滚),还是需要在这个 seata1 里面接受一下返回值然后抛出异常才可以回滚吗(目前我这边是这种可以回滚)?

A:决议全局提交/回滚的只能是
@GlobalTransactional 注解的发起者,它 catch 到异常才会触发回滚;远端的异常应该是没抛给调用者,或者被框架拦截了异常。

Seata:https://github.com/seata/seata

@谭玖朋 提问:

这两个地方调用 rollback 有特殊意义吗?我发现在此之前没有更新操作啊。

A:这个地方应该是一个编码的习惯,在 autocommit=false 的时候,返回前都做一次 commit 或者 rollback 操作,确保当前的事务能够提交或者回滚,同时释放数据库的锁(哪怕前面并没有事务和锁)。

Seata:https://github.com/seata/seata

@戚金奎 提问:

请教一个问题:如果出现如图的这种情况, 执行的这个全局事务在获取全局锁之后,会获取 m 字段最新的值,再和自己的 before_image 里面记录的值去比较,发现不一致,全局事务失败并回滚。

A:所有写场景要被 globaltransational 覆盖,不允许直接去数据库改数据。否则就会出现在全局事务被决议回滚的时候,别的地方把这个数据改了。

Seata:https://github.com/seata/seata

@姜世存 提问:

请教一个问题,这个 LoadLevel 注解有什么作用

A:所以别的业务要继承 Seata,写入口加入 globaltransational 注解,只读无需加注解。

Seata:https://github.com/seata/seata

@winyQ 提问:

项目里 Seata 用 AT 模式,可以在项目里再集成 JTA 吗,两个并存有没有什么问题?

A:JTA 是 XA ,无法跟 AT 兼容。

Seata:https://github.com/seata/seata

本周推荐阅读

本周发布

本周发布详情如下:

1sofa-common-tools 发布 v1.3.3 版本,主要变更如下:

  • 修复 log space factory 的懒初始化模型问题

    详细参考:
https://github.com/sofastack/sofa-common-tools/releases/tag/v1.3.3