SOFA Weekly | QA 整理

2021-04-02 · 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、@明惑 提问:

请教一下:为什么 KVStoreStateMachine#onSnapshotLoad 是 leader 的时候,不去做;leader 节点如果之前进行过 snapshot 之后,raft log 应该会被删除吧;后续集群重启的时候,leader 不用 snapshot 怎么保证数据还原呢?

A:想一下,如果它还需要 load snapshot 的话,它是怎么变成 leader 的,如果已经是 leader 了,肯定不需要 load snapshot;理论上不会走到这个分支,只是防御性的代码,如果走到这个分支,就直接报错停止状态机了。
SOFAJRaft:https://github.com/sofastack/sofa-jraft

2、@明惑 提问:

现在创建 Grpc Server 的时候,只提供了 port 配置,考虑放开一些参数可以用户配置吗?比如 grpc 的 messageSize。

A:helper.config看一下。
SOFAJRaft:https://github.com/sofastack/sofa-jraft

3、@刘明明 提问:

请教一下:我现在想用 Go 去写一个组件当一个简易的 Sidecar 去对其他服务做健康检查。这个 Go 组件要整合 nacos 注册发现和元数据管理,后期也会整合 Istio,这个组件干的事情应该和 MOSN 类似,Go 这边 0 基础,我是写 JAVA 的,就比如这个用 JAVA 实现只需要 springboot 就好了,Go 这边我调研了下准备用  go-Micro,请问各位这个方向是否正确?

A:可以参考这个实现: https://github.com/mosn/mosn/issues/1087 这个是直接对接 zk 做的。
MOSN:https://github.com/mosn/mosn

4、@彭勃 提问:

请教一下,关于 TCC 模式下,会有发生空回滚,资源悬挂,幂等性等问题,需要通过事务控制表去管理。我此前看到同学介绍它们会将事务控制表变成 TCC 模式的一部分(2020 年初),让业务开发者不用自己关注这些问题,请问现在 TCC 模式已经做了吗?

A:目前只能支持单数据源下的防悬挂,直接利用开启 spring 本地事务,然后做一些前置操作来预防。
Seata:https://github.com/seata/seata

5、@王译锌 提问:

请教一下:既然回滚依赖于异常上报给 TM,那为什么分支事务的状态还要上报给 TC 呢?一直没想通这个问题。

A:1.方便以后出控制台可以实时查看分支事务状态; 2.比如某些分支吞了异常后,有 report 的情况下方便判断。比如:a 调 b 再调 c,b 其实已经出现异常并且本地事务下已经回滚了,此时 c 响应给 a,a 做后续处理的时候异常,此时 TC 发现 b 已经由本地事务回滚了,就无需驱动了,这样就减少了下发的数量。
Seata:https://github.com/seata/seata

本周推荐阅读