SOFAArk Committer 专访|看它不爽,就直接动手改!


0ad7c42c3de903317ac9e61c482a290a.gif

fc6a7a674cbc2cd397ae66388dbbeea6.png

fc64caaeaf6057a0fb470d98d11187c2.png

吕冰洁(花名:尚之)

蚂蚁集团技术专家

我们团队是在做蚂蚁集团内部 Serverless 项目,深度依赖 SOFAArk。SOFAArk 作为 Serverless 项目的核心热部署组件,在无感接入、快速启动方面有很大的诉求。

因此为 SOFAArk 2.0 提供了最核心的内嵌式运行模式,同时对 1.0 版本存在的一些问题做了较多的性能优化。

2022 年 03 月 07 日

吕冰洁@zjulbj 被投票选为

 SOFAArk Committer

9f6aa1f76d66aada4f27643a369a825c.png

Before

我主要是负责让传统的 SOFABoot 的应用平滑迁移到 SOFAArk 上。

开始走了很多弯路,接入成本上可能需要半个月到一个月。最初选择了新建应用切流这种比较间接的方案,基于这个方案做迁移过程中的平滑迁移、切流工具。

但是没解决根本问题,只是通过工具减少了部分工作量。

过程

我们就尝试通过修改架构把这些问题解掉,推动自己深入了解底层,思考它为什么是这么设计的,为什么导致现在的问题?

通过研究之后,发现最开始 SOFAArk 是面向终态去设计的,是比较理想化的容器。但实际落地过程中,业务是逐步演进而来的。刚接入就要感知特别大的变化,涉及部署脚本、镜像、测试脚本等一系列的改造,导致业务无法快速享受 SOFAArk 带来的红利

我们就借鉴之前的经验,比如 Tomcat 最开始是一个容器,后面往内嵌化发展。我们内部的 CloudEngine 最开始也是一个容器,后面往 SOFABoot 演进也是一个往内嵌化的发展。

After

所以从我们整个迁移和落地的角度,设计了这套方案,修改其中的相关代码。

从原来需要 2~3 周到现在的一天,降低迁移的成本,省去了大量迁移工作。也为我们后面全站规模化、商业化的一键开启 ark 奠定了基础。

提问

Qustions

&

解答

Answers

1

作为业务研发深入中间件开发底层

如何看待自己作为业务研发的身份接触到开源?

作为业务研发,深入到开源组件的底层设计,不仅对我们自己使用组件有很大的帮助,也能让我们和开源社区的组件同步节奏,不至于脱节。

另外我们解决了实际问题,其他的使用方肯定也会遇到同样的问题。那我们是不是可以把已有的经验,回馈到开源社区帮助到更多的人。我觉得这是一个良性循环的开源环境,而不是向开发者提一些需求 pr 就结束了。

你觉得解决这个问题的难点在哪里?

主要的难点还是我以业务研发的身份参与到整个 SOFAArk 中间件的开发中

首先我需要对它的整个设计有清晰的把握,尽管之前有半年的使用经验,也依然花费了一周的时间才搞懂了核心架构。还好 ark 的文档写得很详细,大大降低了我的理解成本。

在沟通的过程中有没有什么困难的?

沟通没有困难,毕竟大家都是技术,其实都是相通的。只要把自己的使用场景说清楚,中间过程遇到的一些具体问题说清楚。然后结合整个社区的生态,思考一下自己的需求处于什么样的定位,毕竟大家都是基于问题出发。

也是通过这次深入开发底层,让我们更清晰的认识到大家都是绑在一条船上的,也更理解开发者,毕竟大家初心都是为了共同的目标去努力。

2

业务研发和开发者的双重身份

是否有可持续性?

这个状态还会一直持续下去吗?

目前我已经成为了 SOFAArk 2.0 的核心开发人员,还会推进 SOFAArk 在蚂蚁主站大规模落地,作为开发的角色维护下去的。本身我们的 Serverless 产品它下面依赖的部署组建就是 SOFAArk,我们要去大规模落地的过程中,涉及到对 ark 的一些支持问题,所以我们可能需要深入到底层去剖析,让组件真正的更易用。

业务研发深入到中间件底层设计,在开源社区是一个普遍的现象吗?

我理解应该是都有这样的现象,比如说我们用到动态热部署的能力,那我们对启动优化的东西,后面也会把它那个反馈到 SOFABoot、 Spring Boot 社区。

在我们自己落地过程中遇到的问题,想到的创新解决方案,如果是通用的话,会往各个社区去提 pr、做一些反馈的进行同步。

比如,我们在 SOFAArk 启动加速这一块,针对 Classloader 做了启动类加载的优化,启动速度平均提升了 50% 左右。

目前这个已经在 Spring Boot 提了 pr,他们那边正在跟进;

SOFABoot 这边也有相关的同学在保持跟进,之后我们会在我们主站率先去做一个 backport 的支持。

3

业务研发专属经验分享

SOFAArk 负责人说你是一个追求细节、追求极致的同学。

我们团队是做 Serverless 产品的,产品的要求是“更快、更高效、性能更好、体验更好”。

这就要求了我们在做代码优化的过程中去追求细节、追求极致,也是我们整个团队的风格。

有了这种特殊经历后,有哪些经验可以分享给其他业务研发的吗?

作为业务研发,最开始我对 ark 也不是很了解的,刚接手 ark 的迁移的东西,也没敢想说去对 ark 做这么大的改造。

一切基于我们团队的问题出发,一步步深入了解它的原理,去尝试实践自己想法,最终做出了开源的贡献,回过头来看才发现自己做了这么多。

大部分业务研发不太愿意去参与这种开源贡献,可能就是把它想得比较难了。

大家不用担心深入底层开发是很有门槛的事情,只要你带着问题出发,其他的都不是问题!

看他不爽,就直接动手改吧!

   本周推荐阅读  

6ccc6236532a8f2ffd6b2ef213019253.png

社区文章|MOSN 路由框架详解

e112fda253c0db44ecf433ece5111d81.png

HAVE FUN | SOFARegistry 源码解析

396fc86a617d0f90a918e866d0c637b3.png

BabaSSL:支持半同态加密算法 EC-ElGamal

fa5f7035f471b75f4b809ae012c43ffa.png

恭喜 吕冰洁 成为 SOFAStack committer!

79707bba8edd158f2a1c9f33286c650b.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值