在阿里巴巴的发展过程中,流数据处理一直是业务中很重要的一部分。和数据分析平台不一样,阿里巴巴内部的流数据处理平台有很多套。
在阿里巴巴的流数据发展历程里,有两个著名的流引擎JStorm和Blink依然还在产生着深远的影响。这种影响并不仅仅在阿里巴巴集团的内部,并且扩散到了全球的开源世界。比起其他用于集团内部的流计算引擎,它们更被人所熟知,今天我们就来重点分析一下这两个流计算引擎的发展。
我们先来说说Storm和JStorm
Storm是被Twitter收购以后才开源出来的流计算引擎。阿里巴巴集团是在封仲淹带领的团队下才开始使用Storm的。
我在之前讲Storm的时候说过,这种流计算引擎是用一种比较小众的函数式编程语言Clojure开发出来的。国内的Clojure专家屈指可数,因此阿里巴巴使用Storm时遇到了很多的问题。
毕竟有些时候需要去增加或者改变一些功能,而这也就意味着需要对系统进行改进或者定制,但是Clojure语言十分小众,懂这种编程语言的人尚且不多,更不用说专业去修改了,所以,这些都决定了这种工作非常难以展开。
鉴于Storm十分难以改进和定制,又是当时开源世界里最成熟的流计算引擎。于是,从2012年开始,阿里巴巴决定用Java对Storm进行重写,这就是JStorm项目的由来。
按照封仲淹的观点来说,JStorm就是Storm二次开发的产物。它可以让用户无缝地从Storm迁移到JStorm。
阿里巴巴选择用Java进行开发,这让开发进度明显加快。而且,源于阿里巴巴的应用规模、对数据实时性等种种要求,团队对JStorm也进行了很多的优化。可以这么说,JStorm的出现,解决了Storm存在的很多问题。
2015年11月19日,阿里巴巴集团正式向Apache基金会捐赠了JStorm。JStorm成为了Apache Storm下面的一个子项目,并在Apache基金会里继续孵化。
那段时间,JStorm的作者们对于开源表现出非常大的积极性。封仲淹那时也表示,整个社区的Storm 2.0会基于阿里巴巴的JStorm,用Java语言进行开发。
然而世事无常,JStorm在Apache的孵化器里待了快两年,依然没有成为Apache基金会的顶级项目。而Storm2.0这个以阿里巴巴JStorm为主的开发项目更是连影子都没有见到。
对于此事,我非常好奇,但并不真正知晓其答案。只是有次听到一个Apache圈内人士聊到过,说阿里巴巴和Storm社区之间似乎有了矛盾。
再来说说Flink和Blink
Flink是德国柏林工业大学设计的一个流计算引擎,现在是Apache的顶级开源项目。Flink这个引擎从模型的角度来看是非常先进的,但是在工程实现上却相对薄弱一些。
Flink也被阿里巴巴集团用到了自己的生产环境中,项目的领导者是曾经在微软SQL Server组以及Facebook都待过的数据库专家蒋晓伟(花名“量仔”)。
他在接受采访时表示,在Spark和Flink这两个引擎中,Flink的设计理念更为先进一些,也更符合阿里巴巴对流计算引擎的要求,这恰恰也是他的团队选择这个引擎的原因。
当然,阿里巴巴集团并没有把Flink拿来直接使用,而是对Flink进行了大量的、全方位的改造,不仅提高了Flink的性能,而且改进了不少功能。这个项目在阿里巴巴内部叫作Blink,是阿里巴巴集团内部很多业务的流处理引擎,其重要地位可见一斑。
Blink目前还未开源,但在与社区的合作上,Blink团队和Flink的开发者之间保持了更为友好的关系。Flink的开发团队多次在公开场合感谢Blink团队对Flink项目的贡献,Blink团队也把很多功能都反馈到了Flink的代码库里。
为什么JStorm和Blink同为由阿里巴巴主导的,针对Apache已有项目改良的产物,却在和开源社区的互动以及对开源社区的影响方面有着不同的结果。我想,这其中大概有几方面的原因。
首先,Flink是后起之秀,又来自德国,还是从学校里出来的。在Flink流进市场的时候,北美的主要互联网企业要么已经使用了自研的流计算引擎,要么已经基于开源的流计算引擎开展了业务,不太可能短期内更新流计算引擎到Flink,所以Flink本身就需要大客户的支撑,阿里巴巴的出现恰逢其时。
其次是Flink团队和阿里巴巴团队的互补性比较强。前者理论基础好,但是没有工业界的开发经验,后者工业界开发经验却很足,这也就让双方的合作有了基础。
最后,也可能是最重要的一点就是,这还是一个面子问题。JStorm的做法是把Storm的整个代码库用另外一个语言完全重写了一遍,这无疑是一种比较得罪人的做法。而Blink在贡献回自己的代码时,是在Flink原有代码基础上改的,并且改动时也和Flink的人做了仔细协商。我想,也许就是这两种不同的合作态度,决定了两个项目的不同结果。
除了这两个流计算引擎以外,阿里巴巴内部还有其他一些流计算引擎(包括Max Compute组自己开发的,一个完全和开源社区无关的流计算引擎),但是这些引擎公开的消息很少,我就算是有心想研究它们,却也不知道从何下手了。
不过最新消息称,经过多年不同引擎之间的内部PK,阿里巴巴在2018年终于确定了:未来Blink会是阿里巴巴集团统一的流计算引擎。
JStorm和其他的流计算引擎上的业务都会慢慢迁移过来,最终整个公司的所有流计算引擎的开发和维护资源都会集中到Blink上。这也是阿里巴巴集团内部第一次有某种数据处理产品“一统江山”。
两个流计算引擎和开源社区的交流的不同结局告诉我们,和开源社区打交道,仅仅是提供自认为更加厉害的代码给开源社区是远远不够的。尤其是贡献代码的同时却没有给予社区主要贡献者足够的尊重,往往会让事情往坏的方向发展。和社区的合作需要大量持续的互动和交流,以及对社区主要贡献者的尊重。
第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:pingxiaoli
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。