封仲淹:Storm 2.0 将会基于 JStorm,阿里巴巴全程参与

  • 郭蕾

2015 年 11 月 24 日

话题:Apache阿里巴巴语言 & 开发文化 & 方法AI

11 月 19 日,阿里巴巴集团宣布正式加入 Apache 基金会,并向 Apache 基金会捐赠开源项目 JStorm。JStorm 是一个分布式实时计算引擎。它用 Java 完全重写了 Storm 内核, 并重新设计了调度、采样、监控、HA,同时对 ZooKeeper 和 RPC 进行大幅改良,让性能有 30% 的提升, 总体而言,JStorm 比 Storm 更稳定, 更快,功能更强。关于 JStorm 的具体介绍可以参考阿里巴巴技术沙龙中关于 JStorm 的介绍。

简单来说,JStorm 是基于 Storm 的二次开发产物,用户可以无缝将应用从 Storm 迁移到 JStorm,非常方便。JStorm 是中国第一个进入 Apache 核心产品的开源项目,对于中国的开源发展来说意义重大。为了了解 JStorm 加入 Apache 基金会后的发展方向,InfoQ 记者采访了阿里巴巴共享事业部高级技术专家封仲淹。

InfoQ:首先恭喜阿里巴巴加入 Apache 基金会。谈谈你们和 Apache 基金会的渊源吧?

封仲淹:但凡写 Java 程序的程序员,肯定会知道 Apache。Apache 在整个开源界都举足轻重, 像我们熟知的 Tomcat、HTTP Server、Hadoop、HBase、ZooKeeper、Hive 等等, 太多大家熟悉的顶级项目。可以这样说,如果没有 Apache 基金会,今天绝大部分互联网公司都会举步维艰。我们大概去年 9 月份,和 Storm 社区在聊贡献 JStorm 的想法,当时 Storm 社区可能正在犹豫是否要从 Clojure 切换到 Java 体系, 但到了 2015 年 1 月,社区 Storm 开始倾向切换到 Java 体系, 因此和 JStorm 所做的事情基本一致。

后来双方开始正式讨论怎么合作, 捐献 JStorm 就被提上议程。与此同时,JStorm 团队开始全面参与 Storm 社区的发展, 尤其是 Storm 内核的设计上,贡献大量我们自己的经验,至于下一代 Storm 2.0, 基本就是阿里全程参与并基于 JStorm。 另外,因为 Storm 社区的自动化测试非常原始, 阿里巴巴已经有一套完善的 JStorm 自动化测试程序,我们后期会考虑怎么帮助 Storm 社区搭建这套自动化测试程序。

InfoQ:JStorm 正式成为 Apache Storm 里的子项目。JStorm 将在 Apache Storm 里孵化,孵化成功后会成为 Apache Storm 主干。这个可以解释下吗?JStorm 有可能成为顶级项目吗?

封仲淹:现在 JStorm 已经成为 Apache Storm 的子项目, 在 Apache Storm 里面孵化。 但社区的规划是,准备用 Java 重写 Storm, 其实这就是 JStorm 以前干的事情, 因此,双方在目标上是高度一致的,并且 Storm 社区在年前就有这个想法,但一直没有下决心做。这次 JStorm 捐献正好触发了 Storm 社区的决定, Storm 社区正在开发下一代 Storm 2.0, 而 Storm 2.0 会基于 JStorm。

InfoQ:当时为什么要考虑重写 Apache Storm?相比 Apache Storm,JStorm 有哪些重大优化?

封仲淹:早在 2012 年春节的时候,阿里就决定重写 Storm,最主要原因是目前 Storm 内核是 Clojure 语言,而 Clojure 语言很难阅读和实现。而阿里在 Storm 上应用极多, 对 Storm 有大量定制或改造需求, 如果继续沿着 Clojure 这条路走的话, 我们演化的速度会极慢,完全跟不上我们业务的演化速度。阿里 JStorm 每 2 个月发布一个大版本,而社区 Storm 每半年发布一个大版本, 这就是为什么考虑重写 Storm。

本质而言,相比 Storm,JStorm 就是 Storm 的企业版。 今天阿里在 JStorm 的体量已经世界第一,现在 Storm 社区碰到的一些问题, JStorm 在 1 年前甚至 2 年前就遇到并解决了, 这就是为什么 JStorm 会比 Storm 更稳定,更快,功能更丰富的根本原因。 至于具体的优化点, 比如 Nimbus HA、反压、监控系统、ZooKeeper 重构、资源隔离、类隔离等等特性都是因为这个根本原因触发的。

InfoQ:社区有人反馈说 JStorm 文档比较缺失,这也是很多国内开源项目的通病。你怎么看这个问题?为什么会出现这样的情况?

封仲淹: JStorm 合并到 Storm 之后,会迅速融入社区的开发,相信文档缺失的问题会慢慢得到改善。开源项目的开发是很多人协作的过程,除了有人写代码,也需要有人去写文档,国内现在的开源很大一部分的文档都是开发者自行补充,开源社区的文档和代码一样重要,也需要大家来参与和贡献。

InfoQ:加入 Apache 基金会后,阿里巴巴有什么计划?有没有考虑将 Dubbo 这样的优秀项目捐赠给 Apache?

封仲淹: 后续会与 Apache 基金会下的开源项目深度合作,比如我们正在孵化的 RocketMQ 项目,希望能尽快孵化成顶级项目。Dubbo 也是国内应用特别多的项目,是否能捐献给 Apache,这个需要 Apache 基金会来做决定。如果 Dubbo 能捐献给 Apache,那将给开源社区带来很好的帮助。

InfoQ:国内开源情况可以用『雷声大雨点小』来形容,你们认同吗?怎么看国内开源的发展?哪些地方应该加强?

封仲淹: 从阿里的角度看,国内的开源发展其实很快,很多开源贡献者都是默默无闻地投入 ,“雨点”并不小,有很多人都热爱并投入开源社区做了很多工作。如果说要加强的话,就是公司应该多鼓励员工向开源社区提交代码。这方面阿里在国内互联网公司里做得很不错。

Apache阿里巴巴语言 & 开发文化 & 方法AI