87 个 PR 迭代复盘|Apache SeaTunnel 5 月版本重点更新解读

社区小伙伴们,Apache SeaTunnel 5 月份月报姗姗来迟啦!
178108736064512230f9ed9e6752b

https://github.com/apache/SeaTunnel

点击蓝字



关注我们

社区小伙伴们,Apache SeaTunnel 5 月份月报姗姗来迟啦!

据社区统计,2026 年 5 月 apache/seatunnel 仓库累计合入 87 个 PR。本月核心迭代方向为持续完善 Connector-V2,补齐各类细节,做到生产环境可用;深耕 Zeta 引擎,优化高可用、故障恢复、监控和测试;同时强化 CI 安全与回归测试,保障主干分支迭代效率。

本月报内容包含:

  • 详细梳理当月合入 PR 的功能特性、性能优化、Bug 修复及架构改进(含全量清单)。
  • 深入分析关键技术变更的实现原理与影响范围(含 patch 级代码片段)。
  • 提供性能/稳定性对比的可复现实测口径(不虚构跑分)。
  • 总结版本演进趋势与技术发展方向。
  • 文章末尾列出 2026 年 5 月所有 PR 提交者(GitHub 用户名、贡献分类统计、贡献度排名)。

1. 当月总体画像

1.1 四大维度统计(87 PR)

17810873616666e89b3595b0e8167

从数据上来看,本月更像“把能力做实”的月份:大量修复集中在 HA/恢复/边界条件/资源与内存风险/可观测等生产痛点。

1.2 模块分布

  • seatunnel-connectors-v2:32
  • seatunnel-engine:21
  • seatunnel-connectors-v2/connector-cdc:8
  • seatunnel-e2e:6
  • docs:3
  • other:17

2. 当月功能特性与工程演进梳理

2.1 Connector-V2:HTTP Source 支持二进制下载(#10956

这是本月最具“用户可感知”的连接器能力升级之一:把 HTTP Source 从“拉 JSON/text”扩展到“拉文件/二进制”。

从 PR patch 的变更摘要可直接验证(15 files changed, +758/-17):

  • 新增 format = "binary"
  • 新增 binary_chunk_size(默认 10MB)对大文件拆分;
  • 输出 schema 固定为 (data: bytes, relativePath: string, partIndex: long)
  • 限定 BATCH 模式;
  • 同步补齐 UT/E2E/文档(中英文)。

官方示例:


























env {  parallelism = 1  job.mode = "BATCH"}source {  Http {    url = "http://example.com/files/report.pdf"    method = "GET"    format = "binary"    binary_chunk_size = 10485760    schema = {      fields {        data = bytes        relativePath = string        partIndex = long      }    }  }}sink {  LocalFile {    path = "/tmp/download"    file_format = "binary"  }}

影响范围与升级建议:

  • 对存量任务:只要默认 format=text 不变,影响可控;但升级后建议用小流量验证下游 transform/sink 是否正确处理 bytes 类型字段。
  • 对大文件:binary_chunk_size 把单次处理的峰值内存从“文件大小级别”压缩到“chunk 级别”,显著降低 OOM 风险(可用 RSS/GC 指标做量化验证)。

2.2 Engine/Zeta:dry-run 渐进式校验(#10763

[Feature][Zeta] Implement proper dry-run mode with progressive validation layer0

工程价值:

  • 把配置错误从“运行时失败”前移到“提交前/启动前失败”,降低生产回滚成本。
  • 为后续做更复杂的“渐进式校验层”(例如 connector 参数校验、schema 约束、权限/资源预检)提供框架基础。

2.3 生态能力试点与工具链

本月的特性提交还体现为“控制面/可观测/边缘采集/开发者生态”的补齐:

  • #10878STIP-24 Phase 1 EdgeSocket ingress(边缘采集 MVP)
  • #10491:数据血缘与性能分析 trace
  • #10184:Python SDK Client(SeaTunnel REST API)
  • 多表与 schema 演进(RabbitMQ/Cassandra/SqlServer CDC/Postgres-CDC 等)

3. 性能优化与资源风险治理

3.1 Kudu:依赖升级解决 Flink 1.15+ 兼容性风险(#10974

该 PR 的价值更偏“可运行性/兼容性”,但标题为 Improve+Upgrade,被归为“性能优化”类。

实现原理:

  • 升级 kudu-client 版本以减少与 Flink 1.15+ classpath 冲突风险;
  • 去除对 Kudu shaded Guava 的显式引用,避免依赖内部 shaded API 漂移导致的运行时问题。

可复现实测口径(建议):

  • 在 Flink 1.15+ 环境跑同一份 Kudu 作业,比较:
    • 作业启动成功率(是否卡住/是否出现 NoClassDefFoundError)
    • 启动耗时分位数(P50/P95)
    • 30 分钟稳定性(是否出现 slot allocation/release loop)

3.2 Kafka:默认缓存队列深度从 1024 降到 2 防 OOM(#10954

标题明确写出:Reduce default reader_cache_queue_size from 1024 to 2 to prevent OOM

量化解读(可验证推导):

  • 队列深度上限减少 512 倍(1024 -> 2)。
  • 若单条缓存对象占用较大(例如包含反序列化后的 row),该默认值调整可显著降低峰值内存与 GC 压力。

建议对比指标:

  • RSS 峰值、GC 次数、Young/Old GC 耗时、OOM 发生率、吞吐变化(rows/s)。

4. Bug修复与架构改进是5月主旋律

4.1 Zeta:master failover 导致 job 永久卡住(#10836

标题信息已给出影响范围:affects BATCH / bounded source / job shutdown phase

此问题可能导致典型生产危害:

  • 作业进入“应结束”状态但无法完成 -> 资源泄漏、重复调度、数据落库不一致风险上升。

建议上线验证:

  • 模拟 master failover(或节点故障)后,观察:
    • job 是否能走完 shutdown phase 并终态一致
    • 状态清理是否存在竞态(可结合 #10687 等修复一起观察)

4.2 安全修复:日志 REST API 路径穿越(#10628

[Fix][Zeta] Fix path traversal vulnerability in log file REST API endpoints

建议运维动作:

  • 升级后在网关/Ingress 层补充访问控制(仅授权用户可访问日志 API)。
  • 配合安全扫描验证路径穿越已被阻断(构造 ../ 请求)。

4.3 竞态/恢复链路治理(#10687 / #10842 / #10877 等)

这些修复共同指向 Zeta 在 5 月显著加强“故障后恢复链路”的健壮性,尤其是节点失败后的 state 清理竞态与 restore 过程信息复用。

5. 关键技术变更深度分析

5.1 HTTP 二进制下载(#10956):设计、语义与影响范围

核心点:

  • format=binary

    将 HTTP 响应体作为 raw bytes;
  • binary_chunk_size

    控制大文件拆分;
  • 输出 schema 固定化,便于下游 sink 实现明确的写入语义;
  • 限定 BATCH,避免与流式“持续下载”语义混淆。

对用户的直接价值:

  • HTTP 既能“拉接口数据”,也能“拉文件”,降低链路复杂度。

风险与建议:

  • chunk 拆分后,下游 sink 必须具备“按 relativePath+partIndex 拼接/写入”的语义;建议优先配合官方提供的 binary file sink 或具备 bytes 写入能力的 sink。

5.2 SQLite upsert 语法修正(#10880):为什么是 EXCLUDED

SQLite 的 upsert 语义要求在冲突更新时引用 EXCLUDED.<col>而非 VALUES(<col>)。该 PR 把 SQL 拼接修正为:

- `col`=VALUES(`col`)
+ `col`=EXCLUDED.`col`

并新增单测做精确断言,降低回归风险。

5.3 Milvus 错误异常引用修复(#10975):排障成本的“非功能性”优化

单行 diff 却是高价值修复:



- loadStateResponse.getException()+ queryResultsR.getException()

修复后错误信息更真实,避免排障路径走偏。

5.4 Zeta flaky test 修复(#10891):把时序依赖变为可控状态

patch 显示测试从“真实 submitJob + 等待队列”改为“mock server + mock JobHistoryService + 构造 pendingJobDAGInfo”,减少非确定性因素,提升 CI 稳定性。

6. 性能/稳定性对比:统一可复现模板

5 月 PR 大量属于兼容性修复、稳定性治理、默认参数安全性调整,并不一定自带 benchmark/JMH 报告。为了让结论可验证,建议按变更类型选择指标:

  • 默认参数变更类:RSS 峰值、GC、OOM、吞吐变化。
  • chunk/切分策略类:峰值内存、端到端耗时、输出一致性(hash)。
  • 依赖升级兼容类:启动成功率、启动耗时分位数、长跑稳定性。

通用复现模板:

  1. 固定数据规模与并行度;
  2. 固定环境(CPU/内存/网络);
  3. 固定观测指标;
  4. 仅切换变更前/后版本;
  5. 保留原始日志与指标文件。

7. 感谢所有贡献者

在五月的时光里,Apache SeaTunnel 项目能够蓬勃发展、功能日益强大,离不开每一位贡献代码的小伙伴。衷心感谢大家的辛勤付出与无私奉献,是你们用一行行代码,为项目注入了源源不断的活力!

以下为 5 月份贡献者名单:

178108736240905e862ade06750bd
1781087363449304fa93d68553547

(排名规则:按当月合入 PR 数降序;贡献分类为本文四象限分类的计数汇总。)

  • 附录:2026 年 5 月全部合入 PR 清单(87 条)

下表按合入日期排序,逐条列出当月所有 merged PR(含标题、提交者、分类、模块),可帮助读者快速定位:

178108736516586f128edc6e82019
178108736665918de80d151210dbc
178108736757771f8331938bfad74
1781087368400dc64a61276f650be
1781087369468c80694a7f6e1a83a
17810873703175b04678cd63d5604
1781087371040eda1cf2ef4ddec27
178108737191958a4fa8135d66d5d
1781087372774a85afa45b8077fd6

Apache SeaTunnel

Apache SeaTunnel是一个云原生的多模态、高性能海量数据集成工具。北京时间 2023 年 6 月1 日,全球最大的开源软件基金会ApacheSoftware Foundation正式宣布SeaTunnel毕业成为Apache顶级项目。目前,SeaTunnel在GitHub上Star数量已达9k+,社区达到7000+人规模。SeaTunnel支持在云数据库、本地数据源、SaaS、大模型等170多种数据源之间进行数据实时和批量同步,支持CDC、DDL变更、整库同步等功能,更是可以和大模型打通,让大模型链接企业内部的数据。




同步Demo

MySQL→Doris | MySQLCDC | MySQL→Hive | HTTP → Doris | HTTP → MySQL | MySQL→StarRocks|MySQL→Elasticsearch |Kafka→ClickHouse

新手入门

SeaTunnel 让数据集成变得 So easy!/ 3 分钟入门指南
0 到 1 快速入门 /初探/深入理解
分布式集群部署 | CDC数据同步管道 | Oracle-CDC
图片

最佳实践

中控技术天翼云多点OPPO | 清风马蜂窝孩子王哔哩哔哩唯品会众安保险兆原数通 | 亚信科技|映客|翼康济世|信也科技|华润置地|Shopee|京东科技|58同城|互联网银行|JPMorgan
图片

测试报告

SeaTunnel VS GLUE | VS Airbyte | VS DataX|SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比
图片

源码解析

Zeta引擎源码解析(一) |(二) |(三)| API 源码解析 |2.1.1源码解析|封装 Flink 连接数据库解析





仓库地址:
https://github.com/apache/seatunnel
网址:
https://seatunnel.apache.org/
Apache SeaTunnel 下载地址:
https://seatunnel.apache.org/download
衷心欢迎更多人加入!
我们相信,在Community Over Code(社区大于代码)、「Open and Cooperation」(开放协作)、「Meritocracy」(精英管理)、以及「多样性与共识决策」The Apache Way 的指引下,我们将迎来更加多元化和包容的社区生态,共建开源精神带来的技术进步!
我们诚邀各位有志于让本土开源立足全球的伙伴加入 SeaTunnel 贡献者大家庭,一起共建开源!
提交问题和建议:
https://github.com/apache/seatunnel/issues
贡献代码:
https://github.com/apache/seatunnel/pulls
订阅社区开发邮件列表 :
dev-subscribe@seatunnel.apache.org
开发邮件列表:
dev@seatunnel.apache.org
加入 Slack:
https://join.slack.com/t/apacheseatunnel/shared_invite/zt-3uouszk3m-PtLLNyZsJVqE5Gb6gn24mA
关注 X.com:
https://x.com/ASFSeaTunnel


17810873756604510eaca9d9dfb38
1781087376493e5255f601542cec0
17810873774892fe8a1d1e5050dd4