从Flink全球火爆看到被低估的“中国开源力量”

时间:2021-05-25 01:03:47

“从开源中来,到开源中去”,这种近乎乌托邦式的技术理念,支撑国际开源走过30年发展历程。放眼国内,中国开源运动起步较晚,但也有20年历史。

起初,中国开源软件并不受重视,开发者在社区的地位很低,很多人甚至认为中国开发者奉行的都是“拿来主义”,索取多,贡献少。的确,在很长一段时间里,中国基础软件依赖国外开源软件生态而生存,包括操作系统、数据库、编程语言等。但随着中国开源力量的崛起,中国开发者的身影不仅出现在Linux、MySQL、Python等基础应用领域,在以大数据、云计算为核心的世界顶尖级项目上,也同样具备话语权,甚至已占据领导者地位。

1400万次下载背后

前不久,开源大数据引擎Flink社区公布最新数据,Flink的Github Star数和贡献者人数每年正以超30%的速度增长,Github Star数超2万个,已有上千名贡献者(contributors)加入,月下载量峰值突破1400万次,连续两年蝉联 Apache基金会财年报告最活跃项目。

从Flink全球火爆看到被低估的“中国开源力量”

来源:OSS Insight

看似平淡无奇的2022年,开源生态却在悄然布局。数据显示,Flink有20万开发者关注,超过100家国内外知名公司参与代码贡献,已形成了庞大的用户和开发者生态。有意思的是,中国开发者成为Flink全球化社区的中坚力量,阿里巴巴、腾讯、字节跳动等中国企业贡献了超过一半的代码。其中,阿里巴巴对Flink核心代码贡献最大。

可以说,Flink能有今天的发展,和阿里的全力推进密切相关。在核心技术方面,阿里巴巴主导了211 个FLIP,贡献了Flink 70%以上的核心改进。人才培养方面,阿里联合Ververica累计培养了近70位Flink核心贡献者(含项目管理委员会PMC成员和活跃贡献者committer),占比超70%。社区运营方面,阿里在2018年把Flink 社区官方技术大会Flink Forward引入亚洲。在2019-2022年间,阿里连续举办了4届FFA大会(Flink Forward Asia);不定期举办各种类型线下 Meetup,已累计上百场。应用落地方面,阿里云基于Flink推出了实时计算Flink云产品和全球统一的Flink企业版平台Ververica Platform,推动Flink走向各行各业。

作为Flink的最早一批 “忠粉儿”, 阿里为之倾注的心血最多,甚至不惜把“自己的孩子”拱手相送,把Blink内核并入到Flink中。2016年,基于Flink搭建的平台正式上线,并率先应用于阿里的搜索和推荐两大场景。2019年,阿里将内部研发的Flink分支Blink正式开源,为Flink贡献了超过百万行代码;同年,阿里收购Flink母公司Data Artisans(后更名为Ververica),成为Flink社区最大的推动者。

如何更好地满足大促期间的实时大数据更新?在追求数据处理速度这条道路上,阿里从未停止探索!所以,当Flink诞生,阿里很自然地成为那个“敢吃螃蟹”的人!只不过,最初Apache Flink版本的体验并不友好,使用起来非常不方便,有些复杂功能不能用SQL直接实现,同时在规模和应用方面还缺少实践检验。为了让Flink快速走进实际业务场景,阿里巴巴在性能和稳定性方面做了诸多优化,除了供企业内部使用,还通过阿里云向整个开发者生态提供基于Flink的云产品支持,这便是早期的Blink。

流批一体时代的变革

说白了,Flink能成为阿里的“专宠”,成为大数据领域最火爆的开源项目,根本原因只有一个,那就是流批一体趋势的推动。

大数据的高速发展已走过10年,未来会强调从计算的规模化走向数据流动的实时化。以双11为例,通过大屏实时展示交易额、成交额,并实现毫秒级更新,已成为业务场景的“刚需”。包括在银行、证券等核心的金融业务场景,实时计算可以更好地监控交易行为,进行反作弊反洗钱等行为的探测。

实时计算能够支持日常生活中涉及的各个场景,背后需要一套极其强大的大数据计算能力,Flink在此种背景下应运而生。因为传统的Hadoop、Spark 等计算引擎,本质上是批计算引擎,只能对有限的数据集进行数据处理,延时性不能保证。而Flink从设计之初就从流计算开启,可以实时查阅生产场景中的数据,并对数据进行实时分析,让数据在第一时间发挥价值。凭借强一致性的计算能力、大规模的扩展性、整体性能卓越等特性,Flink瞬间赢得广大用户的青睐。

Flink最早应用于国内外的互联网场景,除了国内的阿里巴巴、腾讯、字节跳动等企业,国外的Apple、Capital One、eBay、Ericsson等全球知名公司也在使用Flink处理实时数据。从社区的活跃度来看,Flink大有取代传统计算引擎的趋势,很多企业不仅把Flink应用于流式的数据分析,还扩展到流式的数仓、数据库。

问题是,流的场景问题解决了,那批的计算场景怎么办? Flink也有更多考虑,那就是通过“流”来模拟“批”。Flink 的核心 API 最初是针对特定的场景设计的,尽管针对流处理和批处理已经实现了统一API,但用户在使用较底层的API 时,仍然需要在批处理(DataSet API)和流处理(DataStream API)之间进行选择。鉴于批处理是流处理的一种特例,社区朝着流批统一的 DataStream API 迈出了第一步,全面支持高效的批处理。在Apache Flink1.12版本推出时,流批一体真正统一运行。

正如阿里巴巴开源委员会副主席、阿里云开源大数据平台负责人王峰所言,Flink 击败Storm成为新一代流计算引擎的关键点在于,它是一款有状态的流计算,除了低延迟、高吞吐的流计算能力,它能将流计算和状态存储进行有机融合,从而在框架层支持整个流计算状态,确保数据的精准以及一致性体验。

而从实际业务角度来看, Flink流批一体架构的推出,不只是简单的技术架构革新,而是从根本上解决了实际场景的生产可用性问题。以小米为例,引入Flink之前,小米的实时计算主要以SparkStreaming为主,少部分是Storm,离线以Spark为主。2019年以后,小米将Flink广泛应用于信息流搜索推荐、广告实时样本、实时ETL等场景,逐步替换了原来的SparkStreaming。基于Flink架构的各种优势,极大地满足了业务需求,提升了资源的使用率。2020年,企业开始使用FlinkSQL,用于实时数仓建设和实时ETL开发,让整个数据链路由T+1降到秒级。2021年,企业开始接入数据湖Iceberg,通过Flink和Iceberg构建流批一体的实时数据仓库解决方案。小米今天实时的业务响应能力说明,流批一体架构在开发效率提升、数据链路简化等方面拥有绝对的优势。

未来可期

很明显,作为全球最受欢迎的开源软件之一, Flink已经占据新一代流计算的霸主地位,但实时计算的创新并不会止步于此。Flink正在通过流批一体的 SQL 、流批一体的存储以及全链路的Streaming Data Warehouse(流式数仓)不断提升用户体验。

从Flink全球火爆看到被低估的“中国开源力量”

从发展渊源来看,互联网领域是Flink诞生的“摇篮”。根据不完全统计,使用Flink的非互联网企业占比已超过30%。在互联网用户的带领下,传统行业也在加入Flink实时计算的浪潮。目前,Flink已在政务、金融、制造、零售、交通出行、传媒、游戏、科技等行业大规模应用,帮助上千家全球企业更高效地进行实时业务升级。

如今,Flink已更新到1.16版本,部分子项目已更新到2.1.0 版本,不管在易用性、稳定性和性能方面,都得到全方位的改进,很多常被用户诟病的多个痛点问题也得以解决。同时,Flink社区也在一步步推动Streaming Data Warehouse(流式数仓)从概念变为现实,并走向成熟。

针对Flink未来发展, 阿里巴巴将秉承初心,积极拥抱开源,贡献开源、引领开源。另外,流批一体将会是Flink未来主攻的一个重要方向。

“Flink是阿里代表性开源项目之一,未来会持续对其进行投入。我们会继续朝着流式数仓的方向努力,真正意义上完成流批一体计算与存储的融合,让数仓的数据流动起来,为全球的用户提供更优质的服务与支持。”王峰表示。

小结:滚滚历史洪流中,有争议、有吵闹,有愤懑不平的由开源到闭源,但整体趋势向好。Flink今天的成功,再次证明开源对社会的发展、对技术创新带来的推动作用,有目共睹。这种免费、灵活、安全和可靠的服务形式,使得诸多用户得以更加经济、高效地使用软件,进而快速迈向数字化转型征程中。尤其,当开源软件与云计算、云原生技术相互促进、交汇发展,技术创新浪潮再次迸发,中国开发者开始以更加积极的心态拥抱开源,并成为开源世界的中坚力量。