阅读 211

掘金 AMA:听分布式架构 SOFA 的开源负责人黄挺聊分布式架构和开源

本周 沸点,掘金团队请来了蚂蚁金服高级技术专家,蚂蚁金服分布式架构 SOFA 的开源负责人 -- @黄挺 做了为期三天的 Ask Me Anything (AMA) 活动。我们在此精选了一些来自用户的提问及黄挺的回答。

关于黄挺:

社区小伙伴提问

你对开源的看法是? ─ @风息

说到阿里开源最多的评价是虎头蛇尾,请问 SOFA 开源的初衷是什么?以及后续项目规划又是如何?你个人对开源怎么看?

SOFA 在蚂蚁内部经过了将近 10 年的发展,开源 SOFA 的目的一方面是希望能够将哦我们在金融级的分布式架构下的一些实践回馈给开源社区,如果你看过 SOFA 的源代码的话,也可以看到 SOFA 其实使用了非常多的开源的代码,比如 Spring 等等,作为一个工程师,对于开源就是有一种追求在那边,既然长期以来得到了开源社区的诸多的好处,我们也希望有所回馈。

另外,比如蚂蚁内部,开源社区是一个更大的世界,我们也希望 SOFA 开源出来之后,能够在更多的场景下得到历练,也希望有更多的社区的朋友们能够参与到 SOFA 的开源中去,帮忙试用,提 PR,提 Bug,提 Feature Request。

SOFA 包含了分布式架构中的各个组件,目前我们已经开源了一些,比如 SOFABoot,SOFARPC,SOFAMesh 之类的,后面每个组件,我们准备好一个就会开源一个,目前开源的每个产品的 RoadMap,都可以在对应的产品页面中找到,比如 SOFARPC:www.sofastack.tech/sofa-rpc/do…

另外,提问中也将了阿里开源的产品有些是虎头蛇尾,其他的我不敢说,但是 SOFA 一直以来在蚂蚁内部都被重度地使用,我们内部有将近 2000 个 SOFA 的应用,不可能开源之后,后面就不维护了,这个大家可以放心。

包括阿里开源的产品里面也有非常多得一直在持续维护的产品,比如 fastjson,druid,有些甚至进入了 Apache 基金会,并且成功孵化。

分布式的线上代码更新和服务重启有什么好的方法么? ─ @wking

分布式的线上代码更新和服务重启有什么好的方法么?

分布式的架构下,应用的代码更新发布上线的确没有单体应用的架构下来得这么容易。目前业界也有比较多的发布方案可以借鉴,比如蓝绿发布,灰度发布,金丝雀发布等等,来保证代码的更新在分布式的环境下可以做到充分的验证。

关于服务重启这个问题,可以从两个方面去看,一个是服务如何做到平滑的关闭,一个是服务如何做到平滑的启动。

关于平滑的关闭,一般上的做法是先从服务注册中心里面把对应的节点拿掉,等一段时间上游系统收到的地址列表里不再有对应的节点,并且对应的节点已经没有请求在处理了,那么就可以开始关闭了。

关于应用的平滑的上线,首先应用在启动完成之后,最好先做一遍自检,检查应用自己是否当前是健康的,健康了之后,再对外提供服务,这个过程一般上被称为 Readiness Check,目前 SOFABoot 中也提供了这个能力:www.sofastack.tech/sofa-boot/d…

除了 Readiness Check 之外,因为 Java 的 JIT 的问题,一个应用刚刚启动的时候,往往性能相对比较差,这个时候,就要做服务的预热,在 SOFARPC 中,也提供了服务预热的能力:www.sofastack.tech/sofa-rpc/do…

SOFA 开源项目想成为 Committer 要有哪些要求?─ @萨维塔

SOFA 开源项目想成为 Committer 要有哪些要求?尤其是 SOFA-RPC 这块?

可以先看下我们的 issue,里面有一些比较简单的问题,可以来了解下背景,尝试提一个 PR:github.com/alipay/sofa…,也可以从我们的 RoadMap 了解下:www.sofastack.tech/sofa-rpc/do…,从 RoadMap 中认领一个任务。

对于中间件,是如何定义的?─ @文敦复

我想请问下,对于中间件,是如何定义的?我的理解是项目中除了代码之外,依赖的第三方组件就算中间件:MQ,REDIS 理解对不对?

很多都可以算到中间件的范围内,比如 Java 里面的应用服务器(Tomcat,JBoss 之类的),RPC 框架,服务注册中心,定时任务框架,数据分库分表相关的中间件,搜索,MQ 等等。我认为只要是为上层的业务应用提供通用服务的都是可以算到中间件的范围内。

你是如何成为一名架构师?─ Chatc鲸鱼

请问如何成为一名架构师?网上有很多教程觉得不大可靠,想知道你是如何成为一名架构师

我觉得我个人的成长的过程还是选对了一个比较好的团队,然后这个团队一直面临比较大的挑战,在应对这些挑战的过程中,逐步积累了经验。

除了在技术上夯实自己的基础之外,也是需要选择一个比较有挑战的场景,让自己可以长期在舒适区之外,更快地让自己成长。

你的技术成长历程?─ @Assassintor

我想了解下你的技术成长历程,可以吗?😊

刚毕业的时候我到阿里巴巴 B2B 实习,做诚信通产品的研发,期间因为对开源产品比较感兴趣,所以和当时的同事一起组织了一个开源兴趣小组,一起研究 Spring,Tomcat,JUC 等等,后面也和一个几个同事一起开发了阿里的 HotCode 的第一个版本,期间对于技术的理解自我感觉有非常大的提升。

后来出于对于技术的兴趣以及追求,来到了蚂蚁金服中间件团队,开始负责 SOFA 相关的产品的研发,在这个过程中,我本人也得到了比较大的成长,之前更多的是在研究开源中间件的代码,理解了一些产品的理念,但是实际的参与比较少,真正参与到中间件的研发才深入地理解到这块领域的事情。

我觉得个人的成长的过程中,是道和术的相辅相成,一起提升的过程,道是指对技术的的大观的理解,这个可以通过阅读更多的书,有一个好的 mentor 来帮助你,这个过程往往是顿悟的过程。另一个是术的提升,这个更多的是实际的技能的提升,这个更多需要通过长时间的实践多多去磨炼。

开源会对现有系统造成一定的安全隐患,你怎么考虑?─ @mooniitt

我想问 有没有考虑过开源会对现有系统造成一定的安全隐患呢

开源在我看来可以得到社区更多的,更加迅速的反馈,包括有些人可能发现安全隐患,也会直接以更加快速地方式直接提供 PR,帮助大家更好地 Fix。

这也是开源的魅力所在。你不是一个人在战斗,有一个社区跟着你一起战斗。

创业公司想开源项目,但担心维护成本,你的建议?─ @eman

我公司正有一个微服务框架打算开源,但是,衡量了一下,社区文档维护很麻烦,耗时耗力,创业公司有点难

只要有亮点,都可以开源。但是开源项目要做好,的确是需要热情的,需要投入精力去维护社区关系,包括文档、大家的提问等等,我跟比较多的开源的产品的 Owner 聊过,基本上大家都是花了大量的精力投入在开源上面。

黄挺 AMA 福利:《可伸缩服务架构:框架与中间件》

黄挺将从所有提问中选择一个他觉得最有价值的问题赠送对应的提问者@wking一本书籍,同样,掘金社区根据问题获得的点赞数@展豪赠送对应的提问这一本书籍,书籍《可伸缩服务架构:框架与中间件》由博文视点提供,京东购买链接:戳这,书籍如图:

两位小伙伴看到记得加清蒸好友送书给你哟,微信号:evaz0711


本期 AMA 社区小伙伴提了许多实用问题,同样感谢黄挺 认真地为掘金小伙伴解答了不少疑问。浏览更多的问答,可以到黄挺的 AMA 进行阅读和讨论。


下周 AMA:掘金小册《Redis 深度历险》、《深入理解 RPC》作者 -- 老钱

老钱 AMA 提问环节正在进行 时间:即日 - 2018.08.09,活动传送:👉戳这里

下周 AMA 邀请到的是掘金小册《Redis 深度历险》、《深入理解 RPC》作者 -- 老钱,大家有任何关于 个人成长、工作、编程语言(Python、Java、Golang)、Redis 以及老钱小册的问题可以和他沟通交流~

老钱 AMA 结束,老钱将会指定 3 名他觉得提出好问题的小伙伴赠送他掘金小册的免费码:

关注下面的标签,发现更多相似文章
评论