写点什么

把数套数据传输通道一键“折叠”成 SeaTunnel:同程工程师周晓晨的实战笔记

作者:白鲸开源
  • 2025-08-20
    天津
  • 本文字数:2597 字

    阅读完需:约 9 分钟

周晓晨,在同程旅行负责数据通道建设,Apache SeaTunnel 深度贡献者。从 2022 年为 Apache Kylin 提交第一行 PR 起,他已在 StarRocks、Paimon、Scala 动态编译、SeaTunnel-Web 等十余个核心模块留下印记。本文将以“选型—落地—共建—展望”为主线,透视同程旅行如何把 SeaTunnel 从备选方案变成统一数据通道,并通过 Operator、Sqoop 迁移工具、Fluss Connector、Scala 编译等二次开发,让开源项目真正长在企业的土壤上;也记录了一位程序员如何在社区里完成“使用者→贡献者→深度贡献者”的身份蜕变。

个人介绍:在旅行与代码之间切换的“多面手”

周晓晨,现任同程旅行数据通道负责人,GitHub ID “xiaochen-zhou”。日常除了与 Paimon 和 StarRocks 等数据库打交道,他还是一位军迷和铁杆球迷——绿茵场上的战术推演与码海中的架构设计,在他眼里都是同一套“排兵布阵”的艺术。



正是对“连接”与“协同”的痴迷,让他在 2022 年第一次把代码 Push 到了 Apache Kylin。自此,他在开源世界的旅程正式启程。

社区贡献一览:把“踩坑”变成“铺路”

  1. StarRocks 连接器增强


  • 支持 FE 节点的高可用: #6792

  • 支持多表读取: #8789

  • 修复 Starrocks 在设置 QUERY_TABLET_SIZE 参数下的数据丢失问题:#8768


  1. Paimon 连接器增强


  • 支持 Like(#9484)、Between(#8962) 谓词下推

  • 支持 Time 类型: #8880

  • 修复 DECIMAL 类型转换过程中的精度丢失: #9480


  1. 支持 Scala 动态编译在社区 Java 和 Groovy 的基础上,新增对 Scala 动态编译的支持,以便更好地与大数据生态进行集成 #9625

  2. Transform 插件集成 Zhipu AI: #8790


这些看似零散的 PR,最终在同程旅行的技术选型过程中被串成了一条“证据链”——证明 SeaTunnel 不只是“能用”,而且“好用”“敢用”。

为什么同程旅行选择了 SeaTunnel?

目前,同程旅行已在某个新业务的数据通道服务采用了 Apache SeaTunnel。周晓晨表示,后续公司有在更大范围内应用 Apache SeaTunnel 的计划,以逐步实现数据通道组件的统一。


现在来看,公司现有的数据通道组件包括 Sqoop 和内部自研的实时及批处理组件。而未来,SeaTunnel 将作为统一的解决方案,整合并替代现有的数据通道组件。


Apache SeaTunnel 之所以被同程旅行采用并被锚定为数据通道的统一解决方案,是因为它是经过公司进行全方位的竞品对比分析后,精挑细选出来的最适合公司场景需求的产品。


周晓晨认为,公司最终采用 Apache SeaTunnel,主要基于以下几个方面的考虑:


  1. 社区活跃度高=问题响应速度快 Apache SeaTunnel 拥有一个非常活跃的开源社区,开发者和用户的参与度都很高。在社区中,问题能够快速得到响应,功能需求也能得到及时的反馈和迭代。这种活跃的社区生态,不仅能提供持续的技术支持,还能帮助我们快速解决实际问题。

  2. 专为数据同步而生的“超跑”——Zeta 引擎 Apache SeaTunnel 内置的 Zeta 引擎是专门为高效数据同步设计的。相比通用型的数据处理框架,Zeta 引擎在数据同步场景中有着更优的性能表现和更低的资源消耗。

  3. 批流一体的架构设计=一套 DSL 打天下 Apache SeaTunnel 的批流一体架构非常灵活,这种统一的架构设计,减少了我们在不同场景下切换工具的复杂性,同时也让开发和维护更加高效。


综合来看,Apache SeaTunnel 在性能、功能以及社区支持等方面都非常符合其场景的求,因此最终成为不二之选。


选型只是起点,真正的挑战是如何让 Apache SeaTunnel 在复杂的存量架构里“无感落地”。于是,二次开发逐渐展开。

基于 SeaTunnel 的二次开发

基于 Apache SeaTunnel,同程旅行的二开主要围绕以下几个方面展开:


1. SeaTunnel-Operator


目前,公司各部门的组件正在逐步向云原生架构迁移,而公司现有的云平台仅支持通过 Operator 的方式进行部署。为了更好地支持云原生环境下的 Apache SeaTunnel 部署,公司开发了 SeaTunnel-Operator,以实现更高效的管理和部署。


2. Sqoop 任务迁移工具


目前,公司用于数据传输的服务较为分散,包含 3~4 套不同的系统,包括开源的 Sqoop,以及内部分别用于实时数据传输和批处理的通道组件。为了提升数据传输服务的统一性和效率,公司的目标是基于 Apache SeaTunnel 构建一个统一的数据通道,替换现有的几个分散服务。


为实现这一目标,同程旅行开发了一套工具,用于将现有服务(包括 Sqoop 等)的脚本自动转化为 Apache SeaTunnel 的脚本,以实现任务无缝迁移。


3. Fluss Connector


当前,部门正在部分业务中落地 Fluss 组件。为更好地适配业务需求,部门已增加对 Fluss 的支持,实现了新业务自检“即插即用”。


4. Scala 动态编译为更好地支持大数据生态,公司在社区动态编译的基础上支持了 scala 语言的动态编译,打通了大数据生态的最后一公里。


此外,同程旅行的二开还涉及到一些脏数据收集及管理等特性的开发,在此不再赘述。


当二次开发把“能用”升级为“好用”,周晓晨开始思考:还能为社区回馈什么?

对于 SeaTunnel 的期待:Web 的下一程

和很多 Apache SeaTunnel 的用户一样,周晓晨同样非常期待 SeaTunnel-Web 的功能能够更加丰富。“SeaTunnel-Web 能不能再丝滑一点?” 他希望更多前端、产品、运营背景的贡献者加入,让配置、血缘、监控、告警像“搭乐高”一样直观。


向外呼吁的同时,他也向内审视,把自己三年多的开源故事提炼成一条可复制的方法论。

个人开源之路:从 PR 到 Community

2022 → 2025,周晓晨用亲身经历写下注脚:


2022 年,我第一次给 Apache Kylin 提交的 PR 被合并,到现在已经过去 3 年多了。开源真的很有意思,能让我和全球的程序员一起交流、学习,大家为了同一个项目、同一个目标一起努力。


作为一个开源爱好者,周晓晨对于开源,以及开源社区的建设有着自己的深刻见解。Contributor 是社区最小却最活跃的细胞——每一次 Commit、每一次 Code Review、每一次 Issue 回复,都在为项目注入新的基因。他们不仅仅是技术贡献者,通过代码、文档、测试、反馈等多种形式,为项目的不断完善和进步贡献力量。同时,Contributor 也是社区文化的践行者。


从大家在 GitHub 和社区群里的交流中,周晓晨感受到 Apache SeaTunnel 社区不仅是一个专业和包容的社区,更是一个充满趣味和活力的社区。如果你正在寻找一个能把代码价值放大 100 倍的地方,SeaTunnel 社区就是最好的杠杆。


无论你是 JDBC 调优的“老法师”、Flink 内核的“调参侠”、还是第一次提交 PR 的“萌新”,这里永远有一张空椅子等着你。就现在——Fork、Clone、Push,下一位 SeaTunnel Committer,可能就是你!

发布于: 刚刚阅读数: 3
用户头像

白鲸开源

关注

一家开源原生的DataOps商业公司。 2022-03-18 加入

致力于打造下一代开源原生的DataOps 平台,助力企业在大数据和云时代,智能化地完成多数据源、多云及信创环境的数据集成、调度开发和治理,以提高企业解决数据问题的效率,提升企业分析洞察能力和决策能力。

评论

发布
暂无评论
把数套数据传输通道一键“折叠”成 SeaTunnel:同程工程师周晓晨的实战笔记_大数据_白鲸开源_InfoQ写作社区