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记者采访了阿里巴巴共享事业部高级技术专家封仲淹。
封仲淹:但凡写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社区搭建这套自动化测试程序。
封仲淹:现在JStorm已经成为Apache Storm的子项目, 在Apache Storm里面孵化。 但社区的规划是,准备用Java重写Storm, 其实这就是JStorm以前干的事情, 因此,双方在目标上是高度一致的,并且Storm社区在年前就有这个想法,但一直没有下决心做。这次JStorm捐献正好触发了Storm社区的决定, Storm社区正在开发下一代Storm 2.0, 而Storm 2.0 会基于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重构、资源隔离、类隔离等等特性都是因为这个根本原因触发的。
封仲淹:JStorm合并到Storm之后,会迅速融入社区的开发,相信文档缺失的问题会慢慢得到改善。开源项目的开发是很多人协作的过程,除了有人写代码,也需要有人去写文档,国内现在的开源很大一部分的文档都是开发者自行补充,开源社区的文档和代码一样重要,也需要大家来参与和贡献。
封仲淹:后续会与Apache基金会下的开源项目深度合作,比如我们正在孵化的RocketMQ项目,希望能尽快孵化成顶级项目。Dubbo也是国内应用特别多的项目,是否能捐献给Apache,这个需要Apache基金会来做决定。如果Dubbo能捐献给Apache,那将给开源社区带来很好的帮助。
封仲淹:从阿里的角度看,国内的开源发展其实很快,很多开源贡献者都是默默无闻地投入 ,“雨点”并不小,有很多人都热爱并投入开源社区做了很多工作。如果说要加强的话,就是公司应该多鼓励员工向开源社区提交代码。这方面阿里在国内互联网公司里做得很不错。