开源2026年10月9日· 约 23 分钟

SeaTunnel 3.0.0 正式发布:927 次提交之后,它不再只是一条"数据管道"

#数据管道#连接器#数据集成
Twitter 微博

SeaTunnel 3.0.0 正式发布:927 次提交之后,它不再只是一条"数据管道"

重点一|连接器版图:从"数据平台"延伸到"业务系统"#

过去 SeaTunnel 的连接器清单,主角一直是数据库、消息队列和数据湖。3.0.0 把边界往前推了一大步——过去只能自己写脚本对接的 SaaS 系统,被正式收编:

  • 营销与广告:Google Ads、Facebook Ads、TikTok Ads
  • 客户与协作:Salesforce(Source + Sink)、Zendesk(Source + Sink)、Airtable、Linear、PostHog
  • 支付与电商:Stripe PaymentIntents、Shopify

另一头是云与新形态存储:GCS、百度 BOS、Azure Queue Storage、Azure Cosmos DB、Amazon DocumentDB、Couchbase、NebulaGraph 顶点写入、Google Bigtable、Deep Lake。CDC 家族补上 DB2 CDC 与 Vitess CDC,物联网与消息侧则补齐 MQTT、NATS JetStream、Google Pub/Sub 与 SNMPv2c SET sink。

国内用户还有几个贴心收获:MaxCompute 支持 Schema Name 与免密认证、split 改为 Round-Robin 分配,YashanDB 方言与 Catalog 也就位。

此外,Python Source 与 Python Transform 双双落地——内置能力覆盖不到的长尾系统,直接用 Python 写,不必再等社区排期。

落到你的实际工作里,变化在哪? 过去"业务系统数据进仓"这一段,几乎是每家公司各自写脚本的高发区:接口分页、限流、增量标记、字段映射,每接一个系统重写一遍,且无人值守。现在这一段被纳入了同一套配置、同一套容错与监控体系——一条链路就能贯通"广告投放 → 订单支付 → 工单客服 → 数据仓库"。对数据团队来说,这不只是少写几个脚本,而是把最脆弱的一段纳入了 SLA。


重点二|CDC 与多表同步:把"实时"做细,把故障隔离做实#

如果说连接器决定"能连什么",CDC 决定"能不能一直稳"。

3.0.0 在这块的投入相当密集:PostgreSQL CDC 支持 ADD COLUMN 表结构变更(#11922)、SQL Server CDC 支持 Schema Evolution(#10890);MySQL-CDC 支持 GTID 位点启动(#11123)、Oracle-CDC 支持 SCN 启动(#11171);MongoDB-CDC 新增 timestamp 停止模式(#11815)与 latest-offset 免快照启动(#11053);PostgreSQL-CDC 新增 committed-offset 与 snapshot-only 启动模式(#11380)。

还有两处"控制力"增强:一是 binlog file/pos/row、GTID、SourceTimestamp 被暴露出来(#10667),排障时终于能看清数据停在哪一刻;二是 Schema 变更事件支持 include/exclude 过滤(#11044)——上游加个注释,不会再惊动下游整条链路。

与之呼应的是 多表同步走向体系化。这一版里,IoTDB、InfluxDB、Neo4j、Cassandra、RabbitMQ、Pulsar、RocketMQ、Amazon DynamoDB、BigQuery 等连接器集体补上了多表读写能力;Transform-V2 新增多表规则匹配模式(#11099)。更重要的是两项兜底机制:

  • 表级故障隔离(#10600):单张表炸了,不再拖垮整批同步任务,失败策略在 timer flush 路径上同样生效(#11537)。
  • Error Data Bypass(死信队列)(#10306):Transform 与 Sink 阶段的坏数据可以被旁路记录下来,而不是让整批作业失败。

落到你的实际工作里,变化在哪? 动辄上百张表的同步场景里,最怕的不是某张表出错,而是"一张表出错 → 全批回滚 → 早上才发现"。表级隔离 + 错误数据旁路把故障从"全局事故"降级为"局部可处理事件",值班体验会有本质差别。


重点三|Zeta 引擎:先预检,再跑;出问题能兜底#

这一代 Zeta 最大的变化是"先把话说在前面"。

新增的 dry-run 模式支持分层渐进式校验,Kafka、S3 等连接器还提供连通性预检。配置写错、地址不通、账号没权限,在提交任务前就被拦下,而不是跑半小时后去日志里翻线索。对经常提交上百个作业的团队,这几乎是运维体验的分水岭。

恢复能力也在补强:支持从最近一次完成的 checkpoint 恢复作业(#11421),并新增 force stop。可观测性上,Job Detail 的实时指标图表可选择、新增 worker 资源 REST API、支持在 v2 REST API 上动态查看与调整日志级别——排查线上问题时,不用再为改一行 log4j 配置去重启集群。

文件类连接器还新增 S3/OSS/FTP/SFTP/HDFS/Local 的持续发现,配合 checkpoint 门控的 post_sync_action 与保留策略(#10563),让"增量文件同步"真正可托管。

落到你的实际工作里,变化在哪? 以前排查一个同步任务,平均要花掉的不是"修"的时间,而是"复现和定位"的时间。dry-run 把最常见的三类错误(配置、连通性、权限)前移到提交前;动态日志级别把第二类问题(运行时行为不明)从"重启集群"变成"调一次 API"。


重点四|为 AI 与 RAG 铺路#

这条线在 3.0.0 里已经成形:文件连接器新增 PDF 解析器与 Markdown/PDF 的 RAG 元数据、新增 TextChunk transform 做文本切块、Embedding 支持多模态、新增 mem0 连接器,并在 API 层定义了 Knowledge Sync 元数据字段契约。

拆开看,它其实是一条完整的流水线:读进来——文件连接器支持 PDF 解析(#10105),并为 PDF(#11571)与 Markdown(#10844)输出可选的 RAG 元数据,Markdown 源还会按 document id 路由分片(#10964);切开来——新增 TextChunk transform(#11414);向量化——Embedding transform 支持多模态输入(#9996),模型调用可靠性得到增强(#10863),并修复了自定义 LLM 数组响应解析、Amazon Embedding 重试选项不生效等问题(#11235、#12193);落下去——mem0、Deep Lake 等面向向量的新连接器加入,Milvus 一侧补齐了标量字段写 null(#11216)、枚举器分片分配算法优化(#10868)与分区创建修复(#10589)。

配套的工程细节也一并补上:API 层定��了 Knowledge Sync 元数据字段契约(#10990),Markdown 的 RAG 元数据已与该契约对齐(#11740),表结构配置解析支持向量索引(#10582);命令行侧新增 OrcaRouter AI 网关(#11997)与 bedrock-mantle(#11548)两家 LLM provider,模型选型不再被单一厂商绑定。

换句话说,SeaTunnel 不只是把数据搬进湖仓,它开始承担"把非结构化数据整理成知识库可用形态"这一整段前处理。

落到你的实际工作里,变化在哪? 做 RAG 的团队都知道,真正耗时的不是选哪个向量库,而是 PDF 解析、切块策略、元数据清洗这一串"脏活"。SeaTunnel 把这些步骤纳管之后,知识库的更新可以和数据同步一样被调度、被监控、被回溯——而不是一个跑在本地的、没人敢动的 Python 脚本。更进一步,切块策略与元数据字段一旦有了统一契约,更换向量库或 Embedding 模型就从"重写一遍管道"降级为"改一个配置项"。


重点五|性能与资源:一次"默认值重设"级的改动#

这一节的每一项都不起眼,但叠加起来是 3.0.0 里最容易被忽略、也最可能在升级后立刻感受到的变化。

写入时机由引擎统一调度。 STIP-23 分两阶段落地了引擎级 timer flush:Phase 1 建立核心流程与 FlushSignal 机制(#10800),Phase 2 完成 JDBC 接入(#10801);随后 Doris、StarRocks、ClickHouse、MongoDB、Elasticsearch、Hudi、HugeGraph 陆续接入。Spark / Flink 引擎上的空白,则由 Prometheus sink 在 checkpoint 时强制 flush 补上(#11827)。JDBC Sink 还新增了 batch_interval_ms(#10609),低流量场景下不必再"攒够一批才写"。

一个默认值的重设,值得单独提醒。 Kafka 的 reader_cache_queue_size 默认值从 1024 降到 2(#10954)。这是针对高分区、多表场景下 OOM 的直接修复。如果你升级后发现 Kafka Source 的吞吐在极端高负载下有回落,可以显式把它调回更大的值——但请先确认内存水位是否真的有余量。

状态存储为换后端铺路。 Zeta 通过 StateStore 抽象解耦了 Hazelcast IMap(#10812),并新增逻辑状态存储的可观测指标(#11024)。这是基础设施级的改动,短期无感,长期决定了 checkpoint 性能能优化到什么程度。

性能从此有标尺。 社区搭起了长期基准测试框架 STIP-32(#11671),新增 checkpoint 完成基准(#12026)与每日核心基准套��,并提供 stain trace 用于数据血缘与性能分析(#10491)。

落到你的实际工作里,变化在哪? 前四项是"升级后可能会观察到的差异":写入节奏更可控、内存更稳、checkpoint 行为更一致。最后一项则是给你的建议——以后再做性能选型,可以先看社区基准,再下结论。


那些"悄悄丢数据"的坑,被堵上了#

277 项修复里,最值得拎出来的是一批"静默数据丢失"问题——不报错,只是少了几条:

  • Kafka exactly-once sink 在 checkpoint 时丢第一条记录(#11541)
  • StarRocks 批量写入静默丢数据(#11431)
  • TiDB CDC 在特定场景下静默丢失 row event(#11113)
  • SQL Server CDC 的 DDL 历史查询 LSN 边界问题导致 schema 事件丢失(#10970)
  • Postgres-CDC 从 savepoint 恢复时跳行(#11864)
  • DECIMAL 运算精度丢失与除法取整错误(#11724)、Zeta SQL 数值函数静默值损坏(#11697)
  • ClickHouse sink 丢失时间戳偏移(#12285)

稳定性方面,master 切换后任务永久卡死(#10836)、stop-with-savepoint 挂起(#11489)、master 切换后 IMap 仍在从 S3 加载导致的恢复失败(#10562)这类让人半夜起床的问题已修复。安全层面修复了日志 REST API 的路径穿越漏洞(#10628)、加固 XML 解析的 XXE 风险(#11250),连接器插件下载也统一走 HTTPS。


致谢:3.0.0 的贡献者名单#

这个版本由 143 位贡献者共同完成,其中 114 位是首次向 SeaTunnel 提交代码的新朋友(名单中以 ★ 标注)。以下按主要贡献方向分组,括号内为合并提交数,组内按提交数降序排列。

连接器生态 Connector-V2 · 84 位

zhangshenghang(95),nzw921rx(92)★,goutamadwant(55)★,yzeng1618(25),corgy-w(19),CosmosNi(13),det101(9)★,CloverDew(8),QuakeWang(8)★,Nikk8091(6)★,ClaireLytt(5)★,liunaijie(5),programmerloverun(5)★,ss666(5)★,yigitcan-ozturk(5)★,hutiefang76(4)★,PDGGK(4)★,zhiliang-wu(4)★,GabrielBBaldez(3)★,heye1005(3)★,LeonYoah(3),loustler(3),surafel58(3)★,Tlinian(3)★,1328837476-hug(2)★,1991santhu(2)★,Adamyuanyuan(2),chocoboxxf(2)★,fatmanverse(2)★,JAEKWANG97(2)★,kuleat(2)★,NganWave(2)★,NixonWahome(2)★,onceMisery(2)★,rucciva(2)★,siwen-yu(2)★,srijan-singh(2)★,thehkkim(2)★,waterWang(2)★,yuluo-yx(2)★,zhaoysg(2)★,ZYZ666-RGB(2)★,1322630531(1)★,abolfazlmadanii(1)★,AmanMishra1996(1)★,Anthippi(1)★,Aryadeepta(1)★,asrajawat(1)★,assokhi(1)★,Best2Two(1)★,BobSong-dev(1)★,CBOSSX(1)★,CNF96(1)★,cyl-uuu(1)★,Dream95(1)★,gnehil(1),hyoj-dev(1)★,ic4y(1),ILOVEZERI333(1)★,JacobZheng0927(1)★,jjj-n(1)★,kawaii-box(1)★,Linz1248(1)★,liziing(1)★,merlau(1)★,moneycat957(1)★,Muktha9491(1)★,officialasishkumar(1)★,puneetdixit200(1)★,qingzheguo-flash(1)★,RohanExploit(1)★,saloni-eng(1)★,SatyamPandey-07(1)★,smoggy666(1)★,ThorneANN(1)★,tomma-a(1)★,vsantonastaso(1)★,Wan95u(1)★,wybaby168(1)★,yuge1805(1)★,zhangqs0205(1),zhangweiwen(1)★,zhengxiang378928908-code(1)★,zhupitertop(1)★

Zeta 引擎与执行层 · 16 位

dybyte(26),JeremyXin(16),chl-wxp(13),nielifeng(8),ricky2129(8)★,hyboll(3),suhyeon729(3)★,junjunclub(2)★,Kareemingit(2)★,lm-ylj(2),agarwalrahul2702(1)★,hiSandog(1)★,luciobvjr(1)★,Marx-Carvalho(1)★,Sephiroth1024(1)★,tagadearpit(1)★

E2E 与测试保障 · 5 位

DanielLeens(110)★,davidzollo(59),FenjuFu(2)★,xinnyuli(2)★,fly1d(1)★

CDC 实时同步 · 1 位

li3zhi4(2)★

Transform 与 AI 能力 · 6 位

SEPURI-SAI-KRISHNA(9)★,MyeoungDev(3),BinTaoMa(2)★,loupipalien(2),aksmf1442(1)★,yht0827(1)★

Core / API 内核 · 4 位

CryoThrust(4)★,LiJie20190102(2),xxzuo(2),rameshreddy-adutla(1)★

文档与易用性 Docs · 4 位

DanielCarter-stack(113)★,danielnadean(7)★,zooo-code(7)★,zhang-arvin(5)★

构建、CLI 与发布工程 · 23 位

SEZ9(15),hawk9821(9),KaustAbhinand(2)★,xiaochen-zhou(2),15037143579(1)★,77amyfly(1)★,Chris79OG(1)★,CriysHot(1),doyong365(1)★,HexMox(1)★,icekimchi(1)★,jinniiii233(1)★,jouzi5(1)★,kuswardhanietidims-svg(1)★,lce-mo(1)★,misi1987107(1),MuraliMon(1)★,niumy0701(1)★,ocean-zhc(1),OmkarK-7(1)★,Rangsh(1)★,ShivRajSolanki(1)★,tomatotomata(1)★

统计口径:基于 GitHub apache/seatunnel 仓库 2.3.13...v3.0.0 区间内的 934 个提交统计(与 Release Note 的 927 存在少量 merge 提交差异)。分组依据为提交信息中的模块标签,一位贡献者只归入其最主要的一个方向;Co-authored-by 与 Review 贡献未单独计入。★ 的判定标准为"该用户名在 2.3.13 之前是否已有提交",若同一位贡献者曾以其他账号提交过代码,可能会被计为首次贡献者。如有遗漏或希望调整署名,欢迎提 Issue 或 PR 更正。


一起把 3.0.0 推向生产#

3.0.0 是社区用 927 次提交换来的、一个"更敢用在关键链路上"的版本:它变宽了(30 个新连接器)、变清楚了(dry-run 与可观测)、也变稳了(表级容错与一批静默丢数修复)。

建议先在非核心链路试点,用 dry-run 校验存量配置,再把结论反馈回社区。遇到任何问题,欢迎通过 GitHub Issue、邮件列表或微信群告诉我们——你提交的一个 issue,很可能就是下一个版本的头条修复。而如果你第一次提交 PR 就在这个版本被合并了,那么恭喜,上面那份名单里有你。

下载与完整 Release Note:https://github.com/apache/seatunnel/releases/tag/v3.0.0

Apache SeaTunnel,让数据集成更简单。


附录|破坏性变更与迁移说明(Breaking Changes / Migration Notes)#

本附录完整汇总 3.0.0 的所有不兼容变更、行为变更、弃用项与迁移指南,对应官方 Release Note 的 "Breaking Changes / Migration Notes" 章节。3.0.0 是大版本,升级前请预留一次回归窗口。

A. API 与配置层:不兼容与弃用#

  1. Expression API 弃用,统一改用 Condition(#11882)。纯配置用户无感,做过 API 二次开发或自定义 Transform 的同学需要改代码。
  2. JDBC 的 table_prefix / table_suffix 选项弃用(#11176)。仍在使用的配置需要改为完整表名写法。
  3. dialect upsert API 参数重命名:uniqueKeyFields → pkNames(#10367)。自定义 JdbcDialect 实现需同步修改。
  4. CatalogFactory 的 optionRule 校验存在向后兼容问题并已修复(#11165)。自定义 Catalog 若依赖旧校验行为,升级后请重新测试。

B. 校验逻辑全面迁移至声明式 OptionRule(影响面最广)#

这是 3.0.0 改动最密集的一块:大量连接器把原来写在代码里的命令式校验,迁移为声明式 OptionRule。好处是报错更早、更准;代价是错误文案变了——依赖 grep 日志关键词做告警的脚本需重新校准;部分过去"能跑"的宽松配置,现在会在启动阶段被拦下。

  • 数据库 / 存储 / 检索:JDBC(#11106)、MongoDB(#11886)、HBase(#11803)、Cassandra(#11964)、Iceberg(#11921)、Redis(#11225)、Elasticsearch(#11122)、Neo4j(#12047)、Couchbase(#12076)、Aerospike(#12090)、HugeGraph(#12075)、Amazon DynamoDB(#11821)、BigQuery(#12272)、S3 Redshift(#12274)
  • 消息队列:Kafka Source(#11157)、Pulsar(#11985)、RabbitMQ(#11795)、RocketMQ(#11158)、ActiveMQ(#12004)、Amazon SQS(#12217)
  • 文件 / 网络 / 其他连接器:File HDFS 与 S3 sink(#11881)、Socket(#11214)、EdgeSocket(#11384)、email(#11817)、IoTDBv2 SQL dialect(#11839)、Prometheus 批量大小(#11738)、GraphQL(#12273,对应 issue #11007)
  • Transform 与内建校验:Transform-V2 全量迁移(#11095)、FilterRowKind(#11763);Doris 移除冗余的命令式校验(#11858)

C. 运行时行为变更#

  1. checkpoint 触发失败时作业会直接失败(#10448)。过去可能表现为长时间挂起,现在是明确失败——依赖"挂着等自愈"的运维习惯需要调整。
  2. REST API 语义更严格:提交作业与 start-with-savepoint 在 checkpoint 缺失时会返回 400(#10509),而不是静默启动。调用 REST 接口的上层平台需适配该状态码。
  3. rename transform 的大小写转换改为与 locale 无关(#11994)。在部分 locale(如土耳其语)环境下,转换结果与旧版本可能不同。
  4. PrometheusWriter 迁移到引擎级 FlushSignal(#11778)。写入时机改由引擎统一调度,监控数据的落库节奏会随 checkpoint / timer flush 变化。
  5. Assert Sink 移除固定 sleep,且只断言自己的表(#11995)。依赖 Assert 连接器做断言的 E2E 用例需检查是否受影响。

D. 构建、依赖与打包#

  1. seatunnel-shade 模块重构(#9993),依赖坐标有变化;顺带修复了 IMap 存储 SPI 在 shade 打包中丢失的问题(#10884)。自行打包或做二次分发时需要同步调整。
  2. Docker 基础镜像切换为 seatunnelhub/openjdk:8u342(#10500、#10644)。基于旧镜像做的定制镜像需重新构建。
  3. seatunnel-translation-base 移除连接器专属测试依赖(#11075)。依赖该模块编写测试的项目需自行补齐依赖。
  4. Flink 支持多并行度,并从 API 层移除 Flink 专有逻辑(#10107)。使用 Flink 引擎且做过 API 层扩展的同学需检查。

E. 迁移指南#

  • 官方新增 JDBC-to-JDBC 迁移指南(#11490),从旧版本迁移建议先读。

F. 内部变更(不影响使用者,列出以求完整)#

  • CI:移除无效的 Build ruleset source pin(#12291)
  • E2E:稳定 Paimon 不兼容 schema 测试(#11608)

实操建议#

  1. 先在测试环境用 dry-run 跑一遍存量配置,把启动阶段被拦下的报错收齐,再切生产。
  2. 优先回归你自己用到的连接器:B 组清单里出现的连接器,才是对你有实际影响的部分。
  3. 有二次开发的团队先过一遍 A 组与 D 组:Condition 改造、pkNames 重命名、shade 坐标变化这三项会直接编译失败,越早发现越好。

原文链接:https://www.cnblogs.com/seatunnel/p/23239448

评论

© 2026 松岛川树