源码解析
在第一篇源码解析活动文中,我们介绍了 SOFARegistry 源码解析的详细介绍与具体参与方法,错过的小伙伴可以点击回顾哦,活动还在进行中...
活动发布后的一周时间,我们收到了很多来自社区小伙伴们的建议和反馈,今天在这里和大家分享一下。
活动进展
先来看看这一周的活动进展吧。
本次 SOFARegistry 源码解析任务共计发布 9 个。
截至 3 月 16 日,源码解析任务仅剩 2 个任务未被认领,剩余任务均在进行中,感谢大家的贡献!👏
各难度的源码解析任务完成度如下,我们通过这几个 issue 来追踪任务的完成进展,欢迎大家去认领还未被领走的源码解析任务哦。
待认领任务
通讯数据压缩: https://github.com/sofastack/sofaregistry/issues/200
无损运维:https://github.com/sofastack/sofa-registry/issues/198
「项目介绍💁🏻♂️」
SOFARegistry 是蚂蚁集团开源的一个生产级、高时效、高可用的服务注册中心。SOFARegistry 最早源自于淘宝的 ConfigServer。十年来,随着蚂蚁集团的业务发展,注册中心架构已经演进至第五代。
目前 SOFARegistry 不仅全面服务于蚂蚁集团的自有业务,还随着蚂蚁金融科技服务众多合作伙伴,同时也兼容开源生态。SOFARegistry 采用 AP 架构,支持秒级时效性推送,同时采用分层架构支持无限水平扩展。
「未来计划📄」
继 SOFARegistry 源码解析任务发布以来,大家反响热烈,都在问自己关心的 SOFAStack 系列的其他项目组件什么时候发布源码解析计划。
「下期活动预告🪧」
Layotto 和 SOFAArk 源码解析任务正在筹备中,预计不久后会和大家见面,小伙伴们敬请期待吧。
在任务发布前先给大家简单介绍一下两个项目及 Contributor 养成任务,大家可以先了解一下,方便后续可以更快的参与到源码解析任务中。
Layotto
Layotto(/leɪˈɒtəʊ/) 是一款使用 Golang 开发的应用运行时, 旨在帮助开发人员快速构建云原生应用,帮助应用和基础设施解耦。它为应用提供了各种分布式能力,比如状态管理,配置管理,事件发布订阅等能力,以简化应用的开发。
Layotto 以开源的 MOSN 为底座,在提供分布式能力以外,提供了 Service Mesh 对于流量的管控能力。
项目主页:
GitHub 地址:
https://github.com/mosn/layotto
### Contributor 养成任务:
Layotto
Easy
- 为actuator模块添加单元测试
- 为java sdk新增分布式锁 API
- 开发in-memory configuration 组件
Medium
- 让 Layotto 兼容 Dapr API
- 升级由 rust 开发的 wasm demo
- 用 mysql、consul或leaf等系统实现分布式自增id API
Hard
- 让 Layotto 支持通过接口调用的方式动态加载 wasm,以支持 FaaS 场景动态调度
「详细参考」:
https://github.com/mosn/layotto/issues/108#issuecomment-872779356
SOFAArk
SOFAArk 是一款基于 Java 实现的轻量级类隔离容器,主要提供类隔离和应用(模块)合并部署能力。
在大型软件开发过程中,通常会推荐底层功能插件化,业务功能模块化的开发模式,以期达到低耦合、高内聚、功能复用的优点。基于此,SOFAArk 提供了一套较为规范化的插件化、模块化的开发方案,产品能力主要包括:
- 定义类加载模型,运行时底层插件、业务应用(模块)之间均相互隔离,单一插件和应用(模块)由不同的 ClassLoader 加载,可以有效避免相互之间的包冲突,提升插件和模块功能复用能力;
- 定义插件开发规范,提供 maven 打包工具,简单快速将多个二方包打包成插件(Ark Plugin,以下简称 Plugin)
- 定义模块开发规范,提供 maven 打包工具,简单快速将应用打包成模块 (Ark Biz,以下简称 Biz)
- 针对 Plugin、Biz 提供标准的编程界面,包括服务、事件、扩展点等机制
- 支持多 Biz 的合并部署,开发阶段将多个 Biz 打包成可执行 Fat Jar,或者运行时使用 API 或配置中心(Zookeeper)动态地安装卸载 Biz
- 基于以上能力,SOFAArk 可以帮助解决依赖包冲突、多应用(模块)合并部署等场景问题。
项目主页:
https://www.sofastack.tech/projects/sofa-boot/sofa-ark-readme/
GitHub 地址: