SOFA Weekly | SOFATracer 发布新版本,QA 整理

2021-04-16 · 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、@藜蒿 提问:

请问一下,SOFATracer+SpringBoot 如何在 spring-mvc-digest.log 增加 rest 请求的请求体数据在 json 日志中。需要打印 request 数据,不单单是 url 上的,可能是 post 请求放在 body 里面的。A:可以用这里的命名空间:

A:这个暂时不行,不过你可以通过手动埋点的方式去拿这些信息,可以提个 issue ,详细描述下场景诉求。
SOFATracer:https://github.com/sofastack/sofa-tracer

2、@南桥 提问:

请问下 select * for update,  在 Seata 的事务中,除了会加一个全局的锁,还会加数据库锁吗? 如果一条记录在分布式事务中,已经加了 for update 读。 那么这条记录再在数据库本地事务中,不加 @GlobalLock,加 for update 读,能读到吗?

A:不会加全局锁,先加本地锁。
A:如果要根据读的结果来写,为了得到分布式事务下的已提交数据,需要 for update。数据库层面可以快照读,但是无法当前读(for update 会阻塞),上了分布式事务后,结果都是二阶段后才是准确的,因为有了分布式事务的概念,在此之下的所有本地事务,也就是数据库方的数据已经不能算是准确的了,因为在 AT 模式下随时都有会回滚数据。
Seata:https://github.com/seata/seata

3、@姜广兴 提问:

saga 模式 demo 中的服务都有对应的补偿服务,如果对接外部系统,没有提供相应的补偿服务,还可以使用 saga 模式吗?

A:可以,没有补偿服务就不补偿,可以向前重试。
Seata:https://github.com/seata/seata

4、@彭勃 提问:

看到这段,我请教一下。目前,我们自己通过再加一个 mysql MGR 集群去回避这个外部持久化单点故障的问题请问有人有过相关实践吗?您觉得可行吗?

A:可以这么做,MGR 的话性能应该就比单 DB 要下降了,但是比主备要靠谱,主备的话还是有可能丢数据,MGR 有一致性协议存在,理论上没什么大问题。
Seata:https://github.com/seata/seata

本周推荐阅读

本周发布

本周发布详情如下:
1、SOFATracer **** 发布 v3.1.1 版本,主要变更如下: