SOFA Weekly | SOFA Weekly | 社区本周 Contributor、QA 整理、新手任务计划

2021-11-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&MOSN 社区本周 Contributor

weekly.jpg

每周读者问答提炼

欢迎大家向公众号留言提问或在群里与我们互动

我们会筛选重点问题

通过 “ SOFA WEEKLY ” 的形式回复

@zjw 提问:

请教个 SOFARegistry 的问题,sessionServer 启动后,地址是上报给 Meta 的吗?如果 sessionServer 意外关闭,地址是什么时候怎么摘除的?

A:session 会定时向 Meta 发送请求对自己的地址进行心跳续约,session 宕机后,Meta 端一段时间接收不到心跳就会摘除宕机的 session,然后广播给所有其他的 session。目前是靠心跳,超时之后 Meta 会把 session 或者 data 剔除。

「SOFARegistry」:https://github.com/sofastack/sofa-registry

@滕川 提问:

如果 leader 节点挂了,新选举的 leader 节点如何知道各个 follower 节点的 match index。

A:leader 不需要知道,leader 节点就直接发 appendEtries 即可。如果哪个 follower 还缺更之前的 log,那么它拒绝掉这次 appendEntries 就可以了, leader 会有相应的回退处理逻辑。

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

@橙橙不是澄澄 提问:

Raft 里面为什么不要 observer 呢?恰好之前看到 ZooKeeper 里面有这个角色。

A:Raft 里面可以有类似的角色,叫 learner。learner 不参与选举,只接收 leader 日志,JRaft 也支持 learner。

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

@邓君武 提问:

SOFAJRaft 文档中说支持 MULTI-RAFT-GROUP,目前 SOFAJRaft-RheaKV 这个存储组件中用到了。那么如果我想根据 SOFAJRaft 实现一个分布式的业务系统,MULTI-RAFT-GROUP 该怎么用呢?

A:MULTI-RAFT-GROUP 主要用于解决 SIGLE-RAFT-GROUP 单点瓶颈问题(存储或是吞吐),多个 group 中每个 group 都有一个 leader,可以把 leader 打散到不同的机器上,提高并发度。JRaft 天然支持 MULTI-RAFT-GROUP ,使用的话可以参考 RheaKV。

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

SOFAStack&MOSN:新手任务计划

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

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

SOFARPC

  • Easy

在服务引用和发布时,使用枚举值替代字符串硬编码

优化集成 Nacos、ZK 注册中心的文档

  • Medium

让用户使用@SOFAService 后不需要再写@Component

优化 SOFARPC 的异步编程体验

  • Hard

JFR 埋点

「详细参考」:https://github.com/sofastack/sofa-rpc/issues/1127

Layotto

  • Easy

fail fast,让 Layotto 启动报错时自杀

为 Java SDK 新增分布式锁 API

为 Java SDK 新增分布式自增 ID API

  • Medium

开发 Python SDK

升级由 Rust 开发的 Wasm demo

  • Hard

集成 Jaeger 等 tracing 系统

支持 Dapr Config API

「详细参考」:https://github.com/mosn/layotto/issues/108#issuecomment-872779356

本周推荐阅读

weekly.jpg