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

2021-08-20 · 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、@胡希国 提问:

想和大家请教一下 MOSN 的热升级方案,就是我看到 MOSN 也是通过接收到 hup 信号然后 fork 的方式生成的一个新的子进程,(确切来说是 forkexec),和 Envoy 的解决方案应该是相同的,那为什么说和 Nginx 不一样呢?这种也是存在父子进程关系的吧(我看到 Envoy 是存在的),那为什么说没有继承 listenerfd 而需要通过 uds 来传递呢?

A:Nginx reload 的过程是 master 不会退出,只是新 fork 了子进程。MOSN 是先启动一个 MOSN 进程,然后通过 socket 把 fd 继承过去之后,老的 MOSN 会退出。

MOSN:https://github.com/mosn/mosn

2、@鹏程万里 提问:

FailureHandler 怎么实现自定义类呢?需要做回滚失败的通知。

A:自己创建一个 Failurehandler bean return 一个实现类。

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

3、@随风 提问:

请问下,如果 A 方法和 B 方法上都有注解 GlobalTransactional,那么 A 方法可以直接调用 B 方法吗?

A:可以的,用的还是一个 xid。

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

4、@zero 提问:

有分布式数据库了还需要用 Seata 吗?

A:分布式数据库解决的是单个 connection 中每个 SQL 请求到了不同的库上的事务。一个分布式数据库背后可能有 N 个数据库被操作,内部用 xa 保证了事务。

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

本周发布

本周 SOFAJRaft 发布 1.3.8v版本。主要更新如下:

  • Snapshot 支持并行压缩/解压缩,充分利用多核,加速在 snapshot 较大的时的 load 和 save 速度;

  • CliService 提供 learner 到 follower 的转换 API;

  • 修复 install snapshot retry 失败的 bug;

  • 修复 RheaKV 在成员发生变更时没有刷新路由表的 bug。

详细参考:

https://github.com/sofastack/sofa-jraft/releases/tag/1.3.8

新手任务计划

作为技术同学,你是否有过“想参与某个开源项目的开发、但是不知道从何下手”的感觉?

为了帮助大家更好的参与开源项目,SOFAStack 和 MOSN 社区会定期发布适合新手的新手开发任务,帮助大家 learning by doing !

SOFA-Boot

  • 发布服务时 增加 interfaceType 校验;

  • 增加 SOFATracer 插件。

详见:

https://github.com/sofastack/sofa-boot/issues/841

Layotto

  • 选择喜欢的组件实现分布式锁和分布式自增 id;

  • 让 Layotto 能够简单方便的部署在 Kubernetes 上;

  • 提供 Dockerfile,以便用户用 docker 部署 Layotto 。

详见:

https://github.com/mosn/layotto/issues/108#issuecomment-872779356

本周推荐阅读

更多文章请扫码关注“金融级分布式架构”公众号