对话鲁直:蚂蚁金服中间件的开源头羊 | 穿山甲专访

image.png

谈话中,鲁直反问的“你为何不开源?”这句话让我印象深入。-- 老王数据库

二月初春,在西子湖畔的细雨中,我拜访了蚂蚁金服中间件团队,和 SOFA 技术负责人鲁直作了一次深刻交谈,更妙的是,鲁直也是负责 SOFA 开源事务推动的人,而这样一个切实践行开放核心模式的开源项目,也正是我很是感兴趣的。服务器

两个技术人的谈话,天然是朴实而直白的,话题主要围绕着 SOFA 和开源主题展开,但愿也能同样引发同是技术人的你的共鸣。微信

image.png

人物介绍 受访者:鲁直,蚂蚁金服 SOFA 开源负责人。 采访者:老王,开源布道人,有 20 年互联网从业经历的技术老兵。网络

虽然我和鲁直在微信上已经联系好久了,但这仍是第一次见面。交谈中,我了解到鲁直是 2009 年加入阿里巴巴工做,已经有十年了。刚开始是在 1688.COM 作业务系统,对中间件技术很是感兴趣,也会常常研究各类中间件的实现和功能。后来在 2013年时,为了更深刻地学习研究中间件框架,转到了蚂蚁金服中间件团队,从那个时候开始就一直在作 SOFA。架构

目前鲁直在 SOFA 的团队主要负责的工做包括几个部分。其中一个主要部分就是  SOFA 开源相关的工做。SOFA 的产品体系很是广,包括已经对外开源的部分、内部整个微服务体系,以及 SOFA 框架等等——而这些开源相关的工做主要是由鲁直负责推进的。负载均衡

固然,做为技术负责人,鲁直既要带技术团队也要作技术工做。谈及这一点,鲁直说:<br />“我以为作技术管理,跟普通的管理不太同样,由于技术管理最重要的一个点是除了管理以外,还要保持必定的技术判断力和敏锐度。对一些新技术,包括团队中遇到一些重大的技术问题,你都要有一些方向性的判断。虽然最后不必定是你具体解决的,可是在整个团队的技术攻坚和技术选型上,要一块儿确立方向。”框架

我之前也作过十余年的技术管理,我很可以感觉这种状况,重大问题技术负责人更要迎难而上。less

SOFA 5 落子 Service Mesh

就我了解的状况,如今 SOFA 已经发展到了 SOFA5 了。在 SOFA4 阶段,主要的任务是将开源体系捋清楚了,而后开始按步骤地开源;到如今发展到了 SOFA5。我想知道从 SOFA4 发展到 SOFA5,是什么让蚂蚁金服中间件团队判断 SOFA4 的阶段性目标已经达成,能够迈进到新的 SOFA5 阶段了呢?分布式

 “从整个业界趋势上来说,SOFA4 的架构相对来讲仍是偏传统一些,更可能是对咱们以前的技术框架的整理和梳理。在这个阶段,SOFA 的代码通过了很是多的优化和重构,才达到了对外开源的要求,从而 SOFA 走上了开源核心的模式,逐步分阶段的将各个部分进行了开源。”鲁直讲到,“可是,从咱们对业界的总体判断上来讲,将来无疑是云的时代,因此说要考虑怎么让全部的业务系统可以提供云的能力,好比说 Serverless。”ide

接着这个话题,鲁直讲了他对云计算的理解:“一方面云计算确定要为整个业务的发展提供更加方便的基础资源,能够不用去关心底层的基础设施。Serverless 字面的意思就是说‘无服务器’——我不用关心服务器怎么来的,不用关心基础设施,只要关心业务代码就能够了。那反过来对于云服务商来讲,通过了这一层抽象,其资源利用率会更高,能够有更多的利润空间,这是一个共赢的局面。对于用户来说,这种好处是实实在在的,能够更少关注基础设施,只关心代码就能够了。”

 “咱们但愿在 SOFA5 的方向上,在这个新的迭代中,去让业务——包括让将来咱们开源出来各类功能、各样服务模式——都更多地去关心本身的业务代码,而不用再过多地关心基础设施。”鲁直说。

在 SOFA5 中,一个重要的方向就是 Service Mesh 这个方向,这将是 SOFA5 中很是重要的特性。鲁直强调了其对 Service Mesh 技术的看好:“我认为 Service Mesh 是迈向将来往前走的很是关键的一步,让业务不用再关心基础设施。经过 Service Mesh,咱们能够将不少技术能力直接放到基础设施里面,而业务能够不用感知到这一层。原来可能须要花几个小时或者更多的时间解决的基础设施问题,如今能够经过 Service Mesh 解决掉。”

“目前咱们咱们已经在生产环境中应用了 Service Mesh。咱们在这方面有很是大的决心,咱们但愿可以在今年,在更大的范围中去落地 Service Mesh。当前这个阶段更聚焦在这种技术的内部落地上,但愿用好了,再给社区作更多的贡献。”

Service Mesh 这个词最先是由开发 Linkerd 的 Buoyant 公司于 2016 年提出的,随着 Linkerd 的传入,Service Mesh 也进入国内技术社区的视野。Service Mesh 也被翻译为“服务网格”。Linkerd 则是业界第一个 Service Mesh。 Service Mesh 是一个基础设施层,用于处理服务间通讯,负责实现请求的可靠传递。在实践中,服务网格一般实现为轻量级网络代理,一般与应用程序部署在一块儿,可是对应用程序透明。 Service Mesh 的部署模型,有两种状况:

◈ 对于一个简单请求,做为请求发起者的客户端应用实例,会首先用简单方式将请求发送到本地的 Service Mesh 实例。这是两个独立进程,它们之间是远程调用。Service Mesh 会完成完整的服务间调用流程,如服务发现负载均衡,最后将请求发送给目标服务。这就是 Sidecar,它在原有的客户端和服务端之间加多了一个代理。 ◈ 多个服务调用的状况,Service Mesh 出如今全部的服务的下面,这一层被称之为服务间通信专用基础设施层。Service Mesh 会接管整个网络,把全部的请求在服务之间作转发。在这种状况下,上面的服务再也不负责传递请求的具体逻辑,只负责完成业务处理。服务间通信的环节就从应用里面剥离出来,呈现出一个抽象层。

若是有大量的服务,Sidecar 之间的链接就会造成一个网络,这个就是服务网格名字的由来。

“咱们将以 Service Mesh 为跳板再往前走。”鲁直表示,“Serverless 更多的仍是应该聚焦在其字面自己,其含义就是‘无服务器’,后面的技术都是为了让无服务器承载具体的业务。”

Serverless 这个概念虽然提出来已经有几年了,目前 AWS 在 Serverless 和 FaaS 方面处于比较前沿的位置,可是在国内,Serverless、FaaS 这些技术的发展仍是相对比较滞后。

鲁直指出,“我以为 Serverless 想要成功,仍是要从覆盖业务的整个广度上打开,不然可能仍是停留在 FaaS 上,那场景就比较受限。”

Service Mesh 将是微服务的下一个时代,关于它还在持续进行理论研究和实践探索。

鲁直说:“坦白来说,我以为 istio 的理念很是好,可是在整个工程设计上,若是放到蚂蚁金服这样体量较大的环境里面,可能跑起来还须要作一些工做。咱们但愿今年 Service Mesh 在蚂蚁金服有了更大规模落地以后,能够把咱们在 Service Mesh 方面的一些实践经验用到产品环境的工程中去实践,而后贡献出去。目前更多的一些工做,是将整个体系上进一步完善,铺到更多业务上,而后将这些经验反哺到整个 Service Mesh 的设计上,让它走的更远。”<br />也就是说,蚂蚁金服在 Service Mesh 上跟 istio 的技术路线是一致的,可是会从工程的角度更多地推进它的发展。

咱们但愿可以在咱们进行了生产验证以后,再慎重地推送给开源社区。这也是蚂蚁作开源贡献的一向理念。

鲁直:“咱们但愿可以在咱们进行了生产验证以后,再慎重地推送给开源社区。这也是蚂蚁作开源贡献的一向理念——咱们但愿一个东西通过了内部一段时间的成熟以后,再去开源。通过了大规模的内部验证以后,它的稳定性上有了必定的保障,就贡献给外部社区使用,再去拓展更多一些使用场景,包括完善和解决一些以前没有遇到一些问题。”

协力 Seata 分布式事务框架

2007 开始,蚂蚁金服自主研发了分布式事务中间件 XTS,在内部普遍应用并解决金融核心场景下的跨数据库、跨服务数据一致性问题,最终以 DTX 的云产品化展示并对外开放。而与此同时,阿里巴巴中间件团队发布 TXC,为集团内应用提供分布式事务服务,通过多年的技术沉淀,于 2016 年产品化改造为 GTS,经过阿里云解决方案在众多外部客户中落地实施。

2019 年 1 月,基于技术积累,阿里巴巴中间件团队发起了开源项目 Fescar,蚂蚁金服也开源了本身的分布式事务框架,并与 Fescar 合并一块儿共建分布式事务解决方案。这个发展既在情理之中,也在乎料以外,我确实好奇这期间发生了什么,是如何和 SOFA 中间件团队的发展结合的,他们下一步会有什么计划?

鲁直说:“分布式事务是蚂蚁金服在 2007 年作的创新,是基于 TCC 原理,咱们在内部实现了这个模式。TCC 理论相对仍是比较简单的,可是它要落地,须要花费比较长的工程实现上的打磨才行。分布式事务这个技术在蚂蚁金服已经走过了 12 年的时间了。在蚂蚁金服最核心一些业务上,包括支付、交易、帐务等等系统都在使用这套分布式事务框架解决和孵化的。”

在分布式事务这一块领域上,在业界来看目前相对来讲比较空白,尚未很是好的分布式事务框架。提及来合并的初衷,鲁直表示,“既然阿里巴巴和蚂蚁金服都在这个方向作了一些开源的工做,因此咱们把这两个部分的努力结合起来,取长补短,以适用于更多的分布式事务业务场景,蚂蚁金服加入 Seata 社区共建,在 Seata 0.4.0 版本中加入了 TCC 模式,为你们提供一个更加宽泛的分布式事务的解决方案。”

具体来讲,“阿里巴巴的 Seata 提供是 AT 模式,对业务来讲,不用有太多感知,可是它覆盖的场景有限,若是能够接受这样的状况,用 AT 模式更好。而蚂蚁金服由于有更强的金融方面的要求,就须要采用 TCC 模式,业务接入成本更高,可是它能作到很是好的分布式执行。将来还会提供像 XA 这样的模式,去适应更宽泛业务场景,这在这一块上,蚂蚁金服和阿里巴巴会结合在一块儿提供一个融合的框架。”

Seata 为解决微服务架构下的分布式事务问题交出了一份不同凡响的答卷。而 Seata 的愿景是让分布式事务的使用像本地事务的使用同样简单和高效,但愿可让 Seata 适用于全部的分布式事务场景。

如何作开源

做为开源核心模式的项目,我但愿了解蚂蚁金服中间件的开源通常会作哪些工做,是否有比较完善的流程和规则?<br />“首先,最基础的确定是代码,并提供对应的示例,而后咱们会提供贡献者指南这样的指引文档,由于本质上咱们但愿打形成一个开源社区,社区的参与度对咱们来讲是很是重要的东西,有人会上来提 issue,也有人来解答,有人提功能需求,有人提 PR 等等”,鲁直说。

Linux 中国曾经开发过一个用于测算开源项目活跃度的一个模型[1],咱们认为从过去感性地看一个开源项目是否是活跃,已经开始逐渐进步到经过理性数据评估了,可是这须要排除一些数据做弊的状况,就像以前不少人会用项目的星标数来评估项目的活跃度,这固然很粗糙。咱们今年还会继续配合 2019 年度的开源年报,而提供数据支持,到时候咱们确定会给 SOFA 相关的项目作一个考察。但愿能够切实地反映出来 SOFA 在开源方面的工做。<br />从以前的脉络上看,到了 SOFA5,还会继续沿袭开放核心的模式,即:核心部分开源,与本地业务强关联,可是跟核心不是强关联的部分不开源。

从蚂蚁金服自身的实践来看,他们已经切实地践行了开源核心模式。

而对于开源核心模式,有人唱衰,也有人说好,各类观点都有。但从蚂蚁金服自身的实践来看,他们已经切实地践行了开源核心模式,这是我在国内第一个深刻了解过的真实落地的开源核心模式项目。

说到开源模式,鲁直表示:“作开源,我以为首先确定要作一个心理准备,就是说你要有一个核心部分,再在这个基础上作扩展,在维护的成本上确定有必定的上升,可是你要接受这样的成本——我以为这种成本是能够接受的。……项目自己要设计好,具有必定分拆的可能性。若是不具有分拆可能性,那无法作了。像微内核这样的设计方式就会比较适合——就是开源一个核心模块,而后再去扩展,各类模块是可插拔的。”

而对于开源工做是如何作的,鲁直说:“咱们没有专门作开源的人,也没有专门作内部代码的人,咱们是把这两部分放在一块儿,既作开源又作内部代码,由于这样一个好处是,既熟悉外部的代码,又熟悉内部的代码,这个边界本身能够把握比较好。咱们更可能是制定一些规则。好比说跟业务层强相关的部分,你开源出去也没人用;若是说跟业务不相关的,你为何不开源?由于你开源的这个产品想要作得更好,这些能力开源出去其实没有太大问题,因此通常咱们的标准就是看是否是跟内部系统相关,是否是跟业务强相关,若是不相关就能够开源。”

谈话中,鲁直反问的“你为何不开源?”这句话让我印象深入。

谈话中,鲁直反问的“你为何不开源?”这句话让我印象深入,这其实表明了他们开源的初心,可是从商业者从公司的角度来讲,开源有没有给公司带来真正的好处?这不只仅是情怀的问题,我相信每个热爱开源的人,其实存在开源情怀或者是更理想化的想法,可是从另外一方面来讲,不管是从公司的机制上,仍是公司的业绩上,开源仍是要有实实在在的收益,可以推进公司业务发展才行。做为一个开源项目的负责人,他是怎么感觉到开源的好处呢?

对这个问题,显然他有过成熟的思考:

“最直接的好处就是更长效。从眼前看,你的名声出去了招聘是否是也容易找到更合适的人?这是最短时间的收益。长期的好处,开源社区里面你们分享了很是多的观点,从实践来看,也是这样。好比说你在一家公司里面去作的话,公司的业务场景是有限的,虽说蚂蚁金服覆盖了各类各样的业务,金融方面的基本上全覆盖了。可是其余的行业不必定都有,他们遇到这个问题,咱们可能并不会遇到,但这些问题多是将来可以遇到的,若是把一个项目以开源的方式运做,就意味着说,更大的用例场景更容易发现 bug,用的人越多,越有可能会触发这个bug,那对于就是有了进一步完善的可能。

另外,有了这样的一个社区化的发展,有更多人参与进来以后,这个项目能够更快往前发展,而不是只有你本身在。在一家公司里边,团队的人员数量确定是有限的,而有这么多人来参与,那对于这个项目的往前演进来讲有很是大的好处,反过来对公司也会带来更多好处——不管是潜在的仍是直接的。

最后,若是你的产品有商业化的支持,好比说其余系统的支撑,也可以更好提供商业化的支持。”

SOFA 开源以来,就我目前了解到的状况,大概已经有 30 家左右的企业用户在使用这套开源框架——就是直接拿开源的部分去用了。固然这主要是国内的用户,那么在国外影响力没有像国内这么大的缘由在哪儿呢?是由于咱们的项目不够国际化呢,仍是知道这个框架的人不够多呢?

鲁直说:“我以为多是两方面的缘由。一方面,咱们的确在国际化方面作的并非不少,在今年咱们会去尝试作更多的国际化工做。另一方面,更多的是文化方面的差别,你们的思惟方式可能不太同样。固然咱们会尝试走一下国际化的路线,由于开源原本就是不分国界的。”

进一步,SOFA 在社区治理这方面,“咱们但愿可以采用和参考 Apache 基金会的方式,这是一个很完善的治理模式,咱们会尝试采用这样的方式去社区治理。这对于国际化产品是有不少好处的,它更多强调的是一种治理模式,是否是以社区的方式在运做,是否是在尊重整个社区等等。”鲁直表示,“咱们会考虑跟 Apache 基金会、CNCF 进行直接接触,若是合适的话,咱们会捐献项目给基金会。若是只是一家商业公司而没有基金会的支持,你们也会有更多的顾虑。把项目捐献给基金会,给你们更多的信心,经过基金会的托管,让更多一些参与方参与,而不仅是有蚂蚁金服,你们也会有更大的信心参与进来。” 

最后,鲁直但愿致语开源社区,“其实蚂蚁金服开源的东西,也不仅是 SOFA 中间件框架,将来会开源更多的东西,包括 AI 方面的一些技术,也但愿整个社区可以多关注蚂蚁金服在开源上面将来的举措。”

相关文章
相关标签/搜索