关于数据库:首个国人主导的开源数据集成工具揭秘-Apache-顶级项目-SeaTunnel-背后的故事

4次阅读

共计 8523 个字符,预计需要花费 22 分钟才能阅读完成。

“将来十年,世界的开源要看中国。”

在 CSDN《开源访谈录》的采访中,Apache 孵化器导师、Apache SeaTunnel PMC Member& Mentor 代立冬说下了这样的一句话,从他在 Apache 孵化器里看到的我的项目来看,由来自中国的开发者主导的开源我的项目比重越来越大。

代立冬自己与“侠之大者”的郭炜一起,种下的 SeaTunnel 在开源之力的作用下,曾经成为了 Apache 顶级开源我的项目,而这也是第一个由国人主导的数据集成畛域的我的项目。

5 年时光悄悄而逝,近 25 万行代码,200 余位贡献者,寰球合作。在这背地,有哪些鲜为人知的故事,经验过哪些挫折?为什么要立下“这个轮子我造定了”的豪言壮语?在本文中,郭炜和代立冬一起为咱们揭开了 SeaTunnel 如何从无到有,走向开源,走向世界。

同时,郭炜、代立冬、刘天栋与咱们相约 CSDN,分享 Apache 顶级我的项目的经验与教训,一起共赴开源将来。欢送扫码观看直播回放。

作者 | 郭炜、代立冬

责编 | 唐小引

出品 | CSDN(ID:CSDNnews)

2023 年 6 月 1 日,在儿童节这天,首个由国人主导的开源数据集成工具 Apache SeaTunnel 正式发表从 Apache 软件基金会孵化器毕业成为顶级我的项目。历经 18 个月的孵化,这个我的项目终于水到渠成。但也正如一个“呱呱坠地”的婴儿一样,Apache SeaTunnel 新的旅程,其实才刚刚开始。

从最早的 Waterdrop 到现在的 Apache SeaTunnel;

从实时数据处理系统到新一代一站式高性能、分布式、海量数据集成解决方案工具;

从 2018 年 1 月的第一行代码到现今的 24.5 万行代码;

从不到 10 人的贡献者到 200+ 位贡献者;

从苦寻首位用户到数千家企业上生产环境;

从寻找 Mentor 到顺利成为 Apache 顶级我的项目。

……

Apache SeaTunnel 社区外围人员将讲述这其中的跌宕起伏,并以时间轴为线索为你出现它开源之路背地的故事。

Apache SeaTunnel 诞生的背地

始终以来,咱们在数据处理过程中面临着诸多挑战,其中之一就是须要反对在泛滥数据源之间的无缝集成和高速同步。过后调研了市面上已有的数据集成工具,发现大多反对的数据源都十分无限,往往反对了上游的数据源,却找不到上游数据源的连接器。而且在面临大规模数据量时往往性能太低,操作也简单且不足灵活性。于是,咱们萌发了做一个开源数据集成工具的想法!

在外围团队的一番打磨之后,Apache SeaTunnel 诞生了。它不仅反对上百种数据源(Database/Cloud/SaaS),同时反对海量数据的实时 CDC 和批量同步,能够稳固高效地同步万亿级数据。

除了根本的数据读取和写入性能,Apache SeaTunnel 区别于个别数据集成工具的性能有:

引擎与 Spark、Flink 解耦,领有本人专为数据集成场景设计的引擎 Zeta,更快、更稳固、更省资源,意味着 Apache SeaTunnel 同时反对三种执行引擎——Spark、Flink,以及 Tunnel 自研的引擎 Zeta Engine;

  • 具备 Web 界面更加直观易于操作;
  • 反对连贯 100+ 连接器,数据处理类型丰盛,满足生产须要;
  • 独特的 Checkpoint 功能设计,加强数据存储能力等。
  • 这使得 Apache SeaTunnel 可能实现:
  • 反对上百个数据源、传输速度更快、高准确率;
  • 升高复杂性,基于 API 开发的连接器能兼容离线同步、实时同步、全量同步、增量同步、CDC 实时同步等多种场景;
  • 提供可拖拽和类 SQL 语言界面,节俭开发者更多工夫,提供了作业可视化治理、调度、运行和监控能力。减速低代码和无代码工具的集成;
  • 简略易保护,反对单机 & 集群部署,如果抉择 Zeta 引擎部署,无需依赖 Spark、Flink 等大数据组件。

别看 SeaTunnel 当初具备这么多能力,回到两年前,过后还叫 Waterdrop 的 SeaTunnel 定位是让 Flink 和 Spark 应用起来更简略,所以整个架构设计都是基于 Spark 和 Flink 之上的,这就有了社区的第一次大探讨——连接器必须做到和具体引擎无关。

为什么要做到连接器和引擎无关?

首先,咱们先看下连接器的作用。连接器负责将具体的上下游数据源买通,是数据集成的要害组成部分,Waterdrop 过后的架构根本是将 Spark 和 Flink 的连接器引入进来实现,应用的是 Spark 和 Flink 原生 API,这样须要别离开发一套代码,晚期批和流还是不同的 API,意味着同一个数据源为了实现批同步和流同步,须要开发两套代码。而且思考到 Spark 和 Flink 大版本兼容性问题,代码的开发量和保护老本切实太高。

于是在 2022 年初,社区发动了重构连接器的探讨,指标是定义 SeaTunnel 本人的连接器 API 与具体的引擎解耦,不依赖具体引擎 API,真正实现批流一体,同一个数据源只须要一套代码就能够同时运行在 Spark 和 Flink 引擎上。

在探讨的初期有不少人拥护,感觉 Flink 和 Spark 这些引擎很成熟,强依赖它们也没什么问题。还有些贡献者感觉咱们应该放弃 Spark 全面依赖 Flink,在 Flink 的根底上把性能做好做欠缺。而且重构连接器 API 意味着,之前的 50 多个连接器的工作须要从 0 开始。

但通过与业界泛滥大神的交换和探讨后,社区不久就确定了不依赖引擎的连接器是必须要做的,“不能带着桎梏跳舞”,新的 API 将使连接器开发变得更简略,那些老的连接器也能很快在新的架构下反对起来。

事实证明,当这个指标确立后,社区花了一个月设计新的连接器 API,许多热心的贡献者参加进来,咱们仅仅用了 4 个月的工夫就实现了 100 多个连接器的反对,速度之快是不可设想的,而且新 API 真正实现了反对多引擎的能力。

实现了这个连接器与引擎无关之后,“罗唆实现个专一于数据集成的新引擎吧,一劳永逸!”,SeaTunnel PMC Chair 高俊无意间说起的一句话,激发了社区贡献者一发不可收拾的低落激情。

为什么要自研新引擎?

“什么,要自研引擎?”听到这个要自研集成引擎的音讯,社区炸裂了,立马又发动了是否必须要本人造一个引擎的空前热火的强烈争执。

次要争论点有几个:

  • 从简略易用方面来看,Spark 和 Flink 都须要企业有大数据平台,这对于那些中小企业来说是一个很大的技术累赘,大家须要一个更简略,应用老本更低的引擎来升高 SeaTunnel 的应用门槛。
  • 从性能上来看,Spark/Flink 都是为计算而生的,它们解决的次要是 ETL 架构中 T 的问题,而数据集成次要是解决 ELT 中的 EL 过程,像 Join、Aggregation、开窗计算等这些个性不是数据集成关注的重点。数据集成引擎应该专一于集成,而不是计算,所有的代码优化和架构设计应该从进步作业的性能和稳定性进去,所以咱们须要一个专门为集成场景设计的引擎,它应该有极佳的性能,极度稳固和占更少的资源。特地是当同步的表比拟多时,能不能用较少的资源(比方 1 核 CPU)就实现这些表的实时同步?
  • 从业务场景来看,Flink/Spark 自身并不能满足 CDC 多表同步、整库同步,CDC 过程中的 DDL 变更同步等这些个性,如果要反对这些个性就须要批改 Flink/Spark 的源码。咱们无奈确定这些个性能不能被 Spark/Flink 社区承受,因为这和他们次要解决的问题的方向(ELT 中的 T,专一于数仓中的计算解决)是不统一的。如果不被承受,那须要咱们本人保护一个 Spark/Flink 的版本,这简直是不可能的,从这个角度来看,SeaTunnel 本人做一个集成引擎也是必须。

过后社区的很多贡献者都参加了探讨,有的人感觉这是在反复造轮子。当然,最终社区还是达成了共识,决定开始一个业余集成引擎的设计和开发,我记得还有贡献者收回了“这个轮子我造定了”的宣言。

就这样,社区一咬牙一跺脚,把专一于解决同步畛域问题的引擎 Zeta 给做了进去。在去年 10 月份,咱们胜利公布了 Zeta 的正式版本。过后名字叫 SeaTunnel Engine,大家感觉应该起一个耳熟能详而且合乎这个引擎定位的名字。

于是社区就开始了头脑风暴,通过了约两周的探讨,咱们在泛滥候选的名字里抉择了应用 Zeta 这个名字,Zeta 是目前可观测到的宇宙中最快的行星,也有不少用户亲切的叫它为“泽塔奥特曼”——宇宙中最强的奥特曼力量,一起守护光的信奉!咱们心愿“泽塔奥特曼”引擎让集成这件事变得更简略、更高效、更稳固、更省资源。

开启孵化:为什么要退出 Apache 软件基金会?

其实 Apache SeaTunnel 在从 Waterdrop 改名之前,就有退出寰球最大的开源组织 —— Apache 软件基金会的打算。郭炜(SeaTunnel Mentor)在 SeaTunnel 退出 Apache 孵化器时就说过:

当初 Apache Sqoop 服役了,如何解决数据源之间数据买通的问题,没有一个特地优良的开源我的项目来解决。而当初数据源的品种繁冗,如果只是一家企业解决本人应用的几个数据源之间的买通,根本无法解决更多的人应用更多数据源买通的问题,如果呈现新的数据源还须要从新编写。而开源就是“聚沙成塔、海纳百川”的模式,能够让每个企业、每个人方便快捷地应用开源数据源连接器,同时如果有本人应用的数据源也能够奉献到开源我的项目当中。这样,一个连通各个数据源的开源我的项目就能够像滚雪球一样,越滚越大,让更多的用户更容易地连通各种各样的数据源,从而实现数据整合当中的“飞轮效应”。

还有重要的一点在于,在此之前,Apache SeaTunnel 的一些外围贡献者和导师曾经有开源我的项目 DolphinScheduler 的胜利孵化教训,因而对于 SeaTunnel 进入孵化器大家都充满信心和期待。尽管进入 Apache 孵化器的过程并非一帆风顺,然而后期的教训让团队不至于无从下手,而是井井有条地进行。

具体来说,SeaTunnel 前身 Waterdrop 的外围贡献者与 DolphinScheduler 社区在 2018 年就建设了亲密的分割,DolphinScheduler 的搭档们对 Waterdrop 也始终亲密关注,Waterdrop 无论是从我的项目自身的代码品质,还是将来在数据集成畛域的后劲来说,都是一个“潜力股”。所以当 Waterdrop 跟咱们一起磋商是否能够一起接着做,没有通过很长时间的犹豫,咱们就投入人力和精力到 Apache SeaTunnel 的研发中,并在不久后推动其进入 Apache 孵化器,咱们以凋谢的心态,心愿可能让 SeaTunnel 在开源的力量下,高效、精确、疾速地进行跨数据源的同步、转化数据,让大家在多数据源的场景下,能够疾速、简略地实现本人的指标。咱们置信在「Apache Way」的领导下,Apache SeaTunnel 会取得更多的反对,减速我的项目的成长。

进入 Apache 基金会,寻找 Mentor 往往是最后且要害的一步。但与其余须要摸着石头过河的我的项目不同,Apache SeaTunnel 在孵化器探讨阶段就曾引起寰球 Apache 孵化器导师的关注,“导师”数量远超过一般孵化我的项目,以至于 Apache 孵化器负责人 Justin 邮件揭示“导师不能过多”。也有导师在寰球 Apache 孵化器探讨邮件列表里表示遗憾,Apache 孵化器我的项目“旱的旱死,涝的涝死”,有的我的项目要到处寻求导师才能够进入孵化器,有的我的项目则须要大家争抢导师。

很快,Apache SeaTunnel 在 Jean-Baptiste Onofré、Kevin Ratnasekera、Willem Ning Jiang(姜宁)、Ted Liu(刘天栋)、Lidong Dai(代立冬)、Guo William(郭炜)、Zhenxu Ke(柯振旭)7 位 Mentor 的帮忙和指引下很快步入 Apache 孵化器的正规。

姜宁是位开源“新手”,最终成为了咱们的 Champion。姜宁是国内最资深的 Apache Member 之一,2023 年再次入选 Apache 软件基金会董事,成为首位连任 Apache 基金会董事的华人。

代立冬是 Apache DolphinScheduler 我的项目的 Chair,在开源畛域有丰盛的教训。和 Apache SeaTunnel 也很有渊源,Apache SeaTunnel 很多性能也有他帮着组织设计,并一起建设 Apache SeaTunnel 社区。在参加 Apache SeaTunnel 建设的这一年多的工夫里,他又陆续负责了多个 Apache 孵化我的项目的 Mentor,并在 2022 年被选举为 ASF Member。

Apache Member Jean Baptiste Onofré 和 Kevin Ratnasekera 也都是在 Apache DolphinScheduler 孵化期间熟识的人,他们都有着丰盛的我的项目孵化教训。

之后,郭炜、Ted Liu、柯振旭也退出到 Mentor 行列中来,让 Apache SeaTunnel 的孵化之路更加顺利。

为了正式进入 Apache 孵化器,咱们也参考成熟我的项目,对 Apache SeaTunnel 进行了整体上的我的项目代码标准;为与国内接轨,还对我的项目文档也进行了大量的英文翻译和校对工作,Apache 我的项目网站也全副进行了英文化。这些整顿让 Apache SeaTunnel 我的项目更加标准和“国内范儿”。

此外,退出孵化器后,咱们在我的项目性能上进行了比拟大的改变,其中最重要的变动,就是上文提到的数据同步专用引擎 Zeta 的研发和公布。这个能够为用户提供高吞吐、低延时、强一致性的同步作业保障的引擎在 2.3.0 版本中正式公布,作为 Apache SeaTunnel 默认应用的引擎。它实现了与 Flink 和 Spark 引擎的解耦,让用户能够不依赖 Flink 和 Spark 独立运行,自治集群(无中心化)、数据缓存、可管制速度、共享连接池、断点续传、耕细粒度的容错设计、动静共享线程等独特性能,也让 Apache SeaTunnel Zeta 引擎前所未有地简略易用、更省资源、更稳固、更疾速,能够做到全场景数据同步反对。

Apache Way 的摸索

就像咱们退出一家新公司须要理解这家公司的文化一样,参加 Apache 开源我的项目之前,咱们也须要理解 ASF 的文化,即 The Apache Way。

深刻进入开源就会发现,开源不只是开放源码这么简略的一件事,开源还关乎社区的治理、沉闷、沟通交流、文化等,这就须要咱们对 Apache Way 有更加粗浅的了解。

鉴于此前的教训,Apache SeaTunnel 在进入 Apache 孵化器初期就对 Apache Way 的重要性有着粗浅的了解,比方对于开源社区来说,Community Over Code 的理念要植根心中,为此也须要社区做出筹备和致力,尽可能升高每个有趣味参加我的项目人的门槛,甚至打造 0 门槛,比方制订社区激励打算、制作新手入门指南、精选 Good First Issue、重要 Feature 停顿跟踪、通过定期的用户访谈获取反馈和优化倡议、定期解答社区对于我的项目和社区的疑难等。

社区奉献不仅限于代码,非代码的奉献甚至有时会施展比代码更加有价值的作用,比方利用自身影响力为我的项目引发关注做奉献,写作我的项目相干技术和非技术文章,参加社区组织的各种流动、在各种机会和场合为 Apache SeaTunnel“代言”,把它举荐给更多的用户等,都是参加社区的渠道。

同时,Community Over Code 还强调凋谢、交换、单干,Apache SeaTunnel 秉持着这些理念,保持社区内与海内外社区放弃沟通,互相学习交换,保持与 Apache 社区建设沟通,所有探讨产生在邮件内、Issue 中,并通过社区自媒体渠道颁布我的项目和社区的重大进展和打算,让社区放弃公开通明。

从进入孵化期至今,Apache SeaTunnel 先后与多个海内外开源我的项目举办线上线下 Meetup 20 余场,包含已先于 Apache SeaTunnel 顺利从 ASF 孵化器毕业的 Apache Shenyu、Apache InLong、Apache Linkis,Apache Doris、IoTDB、StarRocks、TDengine 等成熟开源我的项目,以及在美国、印度等海内地区与 Trino、APISIX、Shopee、ALC Indore 联结举办的 Meetup 等。

社区之间的单干与交换推动开源技术的倒退和利用,Apache SeaTunnel 与其余开源我的项目单干,独特解决了技术难题,有利于晋升开源生态的整体程度,拓展了开源生态的边界。

通过工夫的积攒,社区已有了质的变动。从社区的邮件探讨、GitHub 的数据展现中,你会发现 Apache SeaTunnel 的社区开始真正变得沉闷与多元化。从下表咱们能够看到 Apache SeaTunnel 在 Apache 孵化器一年多的社区数据变动。

能够看到,社区与贡献者就像是“鱼”与“水”之间的共存,越来越多贡献者参加进社区,给社区这条“鱼”一直带来陈腐的生命之水,让 Apache SeaTunnel 社区蓬勃发展;水也因为社区的这条大鱼一直跳跃而流动起来,流得更快、更远。鱼水共生,能力生生不息。

从孵化器毕业

通过为期 18 个月的孵化,社区依据 Apache 成熟度评估模型,从代码、许可和版权、版本公布、品质、社区、一致意见、独立性 7 个方面进行审慎评估后,认为 Apache SeaTunnel 毕业的机会曾经比拟成熟,便开始筹备从 ASF 孵化器毕业事宜。

Apache 我的项目成熟度评估模型

比方,在代码成熟度上,社区经验过多个版本的降级与新增性能,晋升了 Apache SeaTunnel 的性能和性能,进一步提高了数据源之间的高效同步与转换能力;在社区建设方面,如上所述,通过多场海内外线上线下的 Meetup 流动,Apache SeaTunnel 社区提供了交换和分享的平台,促成了开发者之间的交换和单干,扩充了开源我的项目的影响力。此外,Apache SeaTunnel 也增强了与上下游生态我的项目的集成,如 Flink、Spark、TiDB、OceanBase、IoTDB 等,促成了不同我的项目之间的协同倒退,晋升了整个开源生态的互操作性和整体性能。

在 Apache Member 的领导下,Apache SeaTunnel 4 月份在社区发动了毕业探讨,并依据 ASF 孵化器的领导意见改良有余,一直修改。最终,Apache SeaTunnel 通过毕业投票,在 2023 年 5 月 17 日通过 ASF 董事会决定,如愿退出 TLP 行列!

将来之路:中国开源如何走向世界

Apache SeaTunnel 的指标是“连贯万源,同步如飞”,力争成为世界第一流的数据集成工具,将来也将与更多的上下游生态我的项目进行集成。同时,也将持续承当起推广开源文化的使命,促成开发者之间的交换和单干,为开源社区的倒退提供更多平台,激发更多人参加开源我的项目并做出奉献。

值此重要时刻,咱们呐喊更多人参加到 Apache SeaTunnel 贡献者中来!

最初,对于 Apache SeaTunnel 来说,从 ASF 毕业的路线并不是一帆风顺,仅以咱们在开源世界摸索的一点教训,对中国开源生态倒退表白一些观点和倡议:

  • 增强开源文化建设

在中国,开源文化的流传和遍及依然须要进一步增强。须要激励更多的开发者和企业参加到开源我的项目中,促成常识共享和合作。同时,也须要进步对开源的认知和了解,推动开源在教育、企业和政府等畛域的广泛应用。

  • 进步开源我的项目的品质和影响力

中国的开源我的项目在数量上曾经有了肯定的积攒,但在品质和影响力上仍有晋升的空间。须要重视我的项目的技术创新和实用性,激励更多的高质量我的项目涌现。同时,要积极参与国内开源社区,与国内我的项目进行单干和交换,进步我的项目的知名度和影响力。

  • 增强开源社区建设和治理

开源社区是开源我的项目胜利的关键所在。须要建立健全的社区治理机制,促成社区成员的参加和奉献。同时,要提供良好的沟通和合作平台,激励开发者之间的交换和单干。此外,还须要增强对社区成员的培训和反对,进步其技术和治理能力。

  • 增强开源与产业的联合

开源技术在推动产业翻新和倒退方面具备重要作用。须要增强开源技术与各个行业的联合,推动开源技术在企业和公共服务畛域的利用。同时,要踊跃培养开源技术生态圈,促成开源我的项目和产业链的协同倒退。

总而言之,中国开源曾经获得了一些问题,许多国内开源我的项目在国内上也取得了宽泛的认可和应用,但还有很多工作须要持续致力。通过增强开源文化建设、进步我的项目品质和影响力、增强社区建设和治理以及增强开源与产业的联合,能够进一步推动中国开源生态的倒退,促成技术创新和产业降级。

作者简介:

郭炜,Apache 基金会成员,Apache DolphinScheduler PMC Member,Apache SeaTunnel Mentor。

代立冬,白鲸开源联结创始人,Apache DolphinScheduler PMC Chair & Apache SeaTunnel PMC Member& Mentor,Apache 孵化器导师,Apache Local Community Beijing 成员。

本文由 白鲸开源科技 提供公布反对!

正文完
 0