AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

Dubbo 作者亲述:那些辉煌、沉寂与重生的故事

  • 2019-01-04
  • 本文字数:3663 字

    阅读完需:约 12 分钟

Dubbo作者亲述:那些辉煌、沉寂与重生的故事

梁飞在 2011 年开源 Dubbo 这个项目的时候,完全没有想过,Dubbo 这个名字,最后会变成一个 Apache 的商标,会成为一个在 GitHub 上有 2 万多人关注、一百多人参与贡献的超级项目。在自己退出这个项目多年后,Dubbo 仍在野蛮生长,并焕发新机。


从商业公司开源出去的产品会变成什么样?开源是否一定要按照某种既定的方式去生长?还是说开源的世界有足够的包容性、开放性,能够允许各种各样的创作在其中成长?且看本次二叉树——Dubbo 项目的故事。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    嘉宾简介

    梁飞(虚极),2009 年加入阿里巴巴,负责中间件的开发,Dubbo 开源分布式服务框架作者,HTTL 开源模板引擎作者,QCon 优秀出品人。 2012 年加入天猫,负责手机天猫 APP 的技术团队,见证了天猫双 11 无线化全过程。热衷参与开源社区建设,传播服务化,SOA,框架设计,移动应用等架构设计理念。




    Dubbo 项目诞生于 2008 年。梁飞最早进入阿里的时候,Dubbo 项目还没有 Dubbo 这个名字,那时的 Dubbo 还是一个阿里内部的系统。2010 年,Dubbo 项目进行了重构。


    “2009 年下半年主要在修 bug,到了 2010 年初的时候觉得这个架构实在是不堪重负,觉得改起来太痛苦了,于是就重写了。”


    从 1.0 进入 2.0,梁飞推动了大量的工作,同时继续在 JavaEye 写着他的博客。


    “写博客对你有什么影响?”


    “在社区里面看别人的博客,他们也在写一些开源软件,大家互相看博客,然后就认识了。推荐我来阿里的朋友就是当时圈子里认识的。”



    2011 年的阿里,憋了一股劲儿要成为一家技术人向往的企业。那个时候,开发者刚刚成为国内各大厂商争相夺取的宝贵资产。靠什么吸引最顶尖的开发者?黑客文化。工程师文化。开源文化。


    “那时候公司觉得要做一些开源的事情,一个是反哺开源界,同时也希望通过开源来提升公司的影响力。”


    当时在淘宝、在阿里 B2B,都有团队在推动开源。阿里 B2B 这边决定先拿 Dubbo 项目开源出去。


    “大概在 2011 年初做了很多剥离的工作,也把文档做了梳理。我们并没有做很强的推广,我们自己在技术群里发了一些文章,就有人开始在用了。”


    “那个时候的团队多少人?我看到你们有一张六个人团队的照片。”


    “人员的变化还是挺多的,六个人是顶峰时期,是我们知名度上来之后加入我们的。我们平时开发基本上就是一到两个为主。”


    “有外面的人来贡献代码吗?”


    “有很多人给我们贡献代码。还有很多公司请我们来跟他们讲。”

    “还有公司问说能不能我们付一点钱,这样的话他们觉得出了问题可以找我们。”

    “但是我们当时没有这种机制。”



    一年时间很快过去了,Dubbo 的用户越来越多,有知名汽车厂商、证券厂商、水泥厂商、电器厂商、电商厂商。


    “当时来这么多公司,在你的预期之内吗?”


    “超出我的预期。”


    就在这个时候,发生了一件大事:阿里巴巴集团要强化 One Company,开始进行架构调整。技术层面,整个公司大统一,就希望不要重复建设,但凡相同的项目都要合并。


    当时的淘宝有一个项目叫做 HSF,也是一个中间件服务框架,跟 Dubbo 做的事情高度重合。


    “一开始说可以让 HSF 合并到 Dubbo 里面来,给了我们三个月时间要把它们整合起来。”


    HSF 项目的作者林昊(毕玄),也是当时国内 Java 领域的知名技术领袖。在 OSGi 非常流行的时候,毕玄可能是国内能够把 OSGi 解释的最清楚的人之一。


    HSF 和 Dubbo,虽然做的事情高度重合,但是设计理念不怎么一样,虽然有些碰撞,但最终目的还是为了“强强联合”。


    “合并的时候,整个淘系都在用 HSF,而阿里金融、集团、B2B 都在用 Dubbo。”

    “时间没有达到预期,还是没合并起来。但其实我们把两边的协议都兼容好了。”

    “后来就决定反向合并,把 Dubbo 合并到 HSF 里面去。”


    “你当时觉得应该合并吗?”


    “我觉得协议能互通是有好处的,并不是坏事。我觉得他们做的挺好,把两边的设计理念全部整合在一起了。”



    不久之后,Dubbo 团队调整,去到了各个地方。从外面看来,Dubbo 项目从 2014 年之后就再也没有更新过。倒是当当网开发的扩展版本 Dubbox 后来持续发展,被圈内人评价为“墙内开花墙外香”。


    “你会不会觉得建立共识是一个特别困难的事情?”


    “我觉得任何东西必须要有一个主导,但这个东西其实没有对错。一个设计是没有对错的,有些人可能就是不会认同你这个共识,但你总是能找到认同你共识的人。”

    “我就是认为越简单越好,我的设计原则就是一定要实用。增加的复杂度越小,能带来更大的收益,我觉得就值得。”


    “那么,你要怎么吸引那些能够认同你的人到你的身边来?在他们还不知道你的时候。”


    “我会去其他团队认识人,或者在圈子里面认识人,我会跟他去聊我的理念,我会去分享。有人特别认同的话,他就会来。”



    就在所有人都以为 Dubbo 项目已经没有未来的时候,事情又出现了变化。


    2017 年 9 月,就在项目已经将近 3 年没动静的时候,Dubbo 连续发布了好几个新版本,并且开始在内部招募对 Dubbo 感兴趣的同事。新版本背后的主力开发团队是阿里巴巴中间件团队,其中一个重要的人名叫北纬,他从 2017 年 7 月开始接手 Dubbo。在一次对外公开的采访中,北纬说到:


    “我对 Dubbo 的了解主要来自梁飞在 JavaEye 的系列文章,再通过自己阅读源码,以及在内部 RPC 框架对 Dubbo 兼容的工作中学习所得。”


    梁飞曾经在 2015 年写过一个继续推动 Dubbo 的规划,找了很多人聊过:找过开源委员会,找过内部的朋友,找过外面的朋友,希望能共同把这个事情继续推起来。但是,梁飞已经没有那么多时间可以投入到 Dubbo 上。他当时在做天猫客户端。


    “不管是谁,靠一腔热血都很容易凉掉。”


    有的开源项目,通过志愿者们投入各自的业余时间活下去。但我们应该要求所有的开源项目都能做到这一点吗?事实上,用户也不会愿意将自己重要的东西跑在单纯靠志愿者们的业余时间堆砌起来的项目上——尤其是企业用户。


    Dubbo 是中间件项目,用户一定是企业。企业用户宁愿花钱,有人给他提供服务,而不是搞来一堆免费而没有保障的东西,自己为所有的问题负责。


    Dubbo 的转机,在于阿里云的流行。


    2017 年的阿里云,发现有一批客户上云之后,想要用 Dubbo。因为他们 Dubbo 已经用的很熟了,不想因为上云而被迫改变自己的使用习惯。


    于是,阿里云就把 Dubbo 服务作为自己的一个产品,卖给了这些客户。


    但是,客户们又提出了一个问题:


    “你看你们 Dubbo 都不怎么更新代码了是吧?你们自己都不维护了,我们用你的框架就觉得特别不放心。”


    这下好了,真正的客户提出要求了。提升客户对 Dubbo 的信心,成为了一件在公司层面有价值的事情。


    “怎样提升客户对 Dubbo 的信心?”


    “让它进一步升级。”


    “最好的办法是什么?”


    “捐给 Apache。”


    北纬带动着他的团队,将 Dubbo 项目捐给了 Apache。2018 年初,Dubbo 项目正式进入了 Apache 的孵化器。


    一边是 Apache Dubbo 重启后的第一个里程碑版本 2.7.0 进入社区投票阶段,并将作为社区的毕业版本;另一边,Dubbo 正在从一个微服务领域的高性能 Java RPC 框架,演进到微服务框架 Dubbo Ecosystem,打造出一个完整的微服务生态。而此时,距离去年 Dubbo 重启仅过一年有余。



    我们去找到北纬,希望他聊聊 Dubbo 的未来。北纬说,还是让梁飞跟我们多讲讲。


    “你觉得什么是开源的精神?”


    “开源的精神,就是大家的智慧能共同成长。”


    “你觉得中国的开源现在有哪些做得好的地方和不足的地方?”


    “我觉得中国的开源最缺对社区的重视,很多都只是把代码 push 出来,有些甚至连文档都不完善,好像人家爱用不用,出了问题也不是我的事。但这可能是一个初级阶段,慢慢会成熟起来。但我觉得好的地方就是,大家都相信开源的力量。”


    “您会不会觉得中国企业做开源,功利心特别重,光去看这个东西是不是有用?”


    “输出技术影响力是吧?我觉得一个开源社区要能够一直运作下去,而且能跟上时代的潮流,其实是要与时俱进的。我觉得做开源,就是期望这个东西一直有生命力,这个作品能够活多久应该作为它的核心目标。”


    “那您觉得 Dubbo 还能活多久?”


    “我觉得技术的革新其实挺快的,不革新的话,就有淘汰的危险。但是在这个节点上进行一次革新的话,我觉得它还有很长的生命力。”


    “那是什么样的革新?”


    “任何技术一定是没有终点的。没有任何架构能解决现实中所有的问题,而任何一个架构去解决前面的问题的时候,一定会带来副作用,然后就需要下一个架构去治理。这个探索的方向是没有止境的,但只有你到达了一个阶段,你才能够去想下一个阶段的很多事情。”

    “回到原点,十年前的选择一定是最正确的吗?就算当时是最正确的,现在也不一定正确对吧?因为时代在变化。如果我们今天从零开始,我们有没有更好的选择?有时候我们背了十年的包袱,反而不敢行动了。但我希望我们下一代演化的时候,我们能够提出一些颠覆式的理念,真正革新的解决我们现在面临的问题背后的那些问题,而不是头痛医头脚痛医脚。这是我们期望做的事情。”


    如常,早上 9 点多,梁飞打开邮箱,关于 Apache Dubbo 重启后的第一个里程碑版本 2.7.0 的讨论邮件还在 mailing list 里热烈进行着;另一边,Dubbo 正在从一个微服务领域的高性能 Java RPC 框架,演进到微服务框架 Dubbo Ecosystem,打造出完整微服务生态。而此时,距离去年 Dubbo 重启仅过一年有余。


    2019-01-04 10:3610608
    用户头像
    二叉树视频 InfoQ旗下短视频品牌

    发布了 98 篇内容, 共 32.1 次阅读, 收获喜欢 185 次。

    关注

    评论 2 条评论

    发布
    用户头像
    “这个探索的方向是没有止境的,但只有你到达了一个阶段,你才能够去想下一个阶段的很多事情。”喜欢这句话
    2019-08-08 18:19
    回复
    用户头像
    技术的推广和演进需要不断的努力
    2019-01-05 13:16
    回复
    没有更多了
    发现更多内容

    Java知识点锦集1

    喜羊羊

    9月月更

    Elasticsearch聚合学习之三:范围限定

    程序员欣宸

    elasticsearch 9月月更

    Solo博客静态部署到码云gitee —— 全网最详细系列

    海底烧烤店ai

    部署 博客系统 博客搭建 9月月更

    内核实战教程第五期 _ SQL 执行引擎的设计与实现

    OceanBase 数据库

    2022年区块链金融场景化应用专题分析

    易观分析

    区块链 金融

    跟着卷卷龙一起学Camera--AF

    卷卷龙

    ISP 9月月更

    软件测试 | 测试开发 | 测试开发基础|一文搞定计算机网络(一)

    测吧(北京)科技有限公司

    测试

    软件测试 | 测试开发 | 测试工程师如何突破职场瓶颈?

    测吧(北京)科技有限公司

    测试

    关于数据仓库的特点及组成的概述

    阿泽🧸

    数据仓库 9月月更

    基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v5.0版已发布

    JackJiang

    Netty 即时通讯 im开发 开源im

    软件测试 | 测试开发 | 测试人生 | 40+的年龄50W+的年薪,2线城市入职名企,他曾想放弃测试?

    测吧(北京)科技有限公司

    测试

    关于运维监控系统实践中的一些tips

    穿过生命散发芬芳

    监控系统 9月月更

    数据结构与算法 之线性表

    喜羊羊

    9月月更

    Java知识点锦集2

    喜羊羊

    9月月更

    软件测试 | 测试开发 | 测试面试真题|工作2年,从小厂到大厂,薪资翻倍是怎样的体验?

    测吧(北京)科技有限公司

    测试

    2022-09-14:以下go语言代码输出什么?A:0 0;B:0 1;C:1 1;D:1 0。 package main func main() { println(f(1)) } func

    福大大架构师每日一题

    golang 福大大 选择题

    C++学习---cstdbool和cstddef源码学习分析

    桑榆

    c++ 源码阅读 9月月更

    SpringCloud Gateway 服务网关的快速入门

    Gateway SpringCould 9月月更

    软件测试 | 测试开发 | 文未有福利 | BAT 名企大厂做接口自动化如何高效使用 Requests ?

    测吧(北京)科技有限公司

    测试

    从0到1开发微信小程序(2)——开发第一个小程序

    微信小程序专栏

    从0到1开发微信小程序(3)—小程序框架配置

    微信小程序专栏

    软件测试 | 测试开发 | 测试人生 | 入行3年,年薪36W+,从外包到知名互联网公司,疫情之下薪资不止翻倍~

    测吧(北京)科技有限公司

    测试

    渡过“寒冬”,看云原生数据库如何助力企业降本增效与持续创新

    亚马逊云科技 (Amazon Web Services)

    数据库 云原生

    【React】从0到1搭建你的React18项目

    海底烧烤店ai

    前端 React Hooks 9月月更

    StarRocks 社区一周年:极速统一,感谢遇见!

    StarRocks

    数据库

    【C语言深度剖析】深入理解const的用法(趣味小故事解析)

    Albert Edison

    指针 C语言 const 9月月更

    为什么Vue中的v-if和v-for不建议一起用

    达摩

    Vue

    软件测试 | 测试开发 | 接口测试项目实战与经典面试题解析,挑战 BAT 大厂必会!

    测吧(北京)科技有限公司

    测试

    面试突击83:什么情况会导致@Transactional事务失效?

    王磊

    Java 面试题

    从0到一开发微信小程序(1)——申请账号并安装开发环境

    微信小程序专栏

    图系列算法在转转推荐算法召回及粗排的实践

    转转技术团队

    深度学习 推荐系统 图算法 graph embedding

    Dubbo作者亲述:那些辉煌、沉寂与重生的故事_文化 & 方法_二叉树视频_InfoQ精选文章