架构设计
概述
SeaTunnel 是一个分布式数据集成平台,采用插件化架构。连接器层与执行引擎解耦,同一套连接器可在不同引擎上运行。
┌─────────────────────────────────────────────────────────────┐
│ 作业配置 │
│ (HOCON / SQL / Web UI) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ SeaTunnel 核心层 │
│ (作业解析器、协调器、调度器) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Source │────▶│ Transform │────▶│ Sink │
│ 数据源连接器 │ │ (可选) │ │ 目标连接器 │
└───────────────┘ └───────────────┘ └───────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 执行引擎 │
│ SeaTunnel Engine (Zeta) / Flink / Spark │
└─────────────────────────────────────────────────────────────┘
核心组件
1. Connector API
与引擎无关的统一 API,用于开发 Source、Transform、Sink 连接器。
| 组件 | 说明 |
|---|---|
| Source | 从外部系统读取数据(数据库、文件、消息队列) |
| Transform | 数据转换(字段映射、过滤、类型转换) |
| Sink | 将数据写入目标系统 |
2. 执行引擎
| 引擎 | 适用场景 |
|---|---|
| SeaTunnel Engine (Zeta) | 数据同步、CDC、低资源消耗 |
| Apache Flink | 复杂流处理、已有 Flink 基础设施 |
| Apache Spark | 大规模批处理、已有 Spark 基础设施 |
3. 翻译层
将 SeaTunnel 统一 API 转换为引擎特定实现,实现连接器跨引擎复用。
数据流
Source ──▶ [分片] ──▶ Reader ──▶ Transform ──▶ Writer ──▶ Sink
│ │ │
│ ▼ │
│ Checkpoint/状态 │
│ │ │
└──────────────────────┴────────────────────────┘
容错机制
核心特性:
- 基于分片的并行读取
- 分布式快照实现精确一次语义
- 自动故障转移和恢复
模块结构
seatunnel/
├── seatunnel-api/ # 核心 API 定义
├── seatunnel-connectors-v2/ # Source & Sink 连接器
├── seatunnel-transforms-v2/ # Transform 插件
├── seatunnel-engine/ # SeaTunnel Engine (Zeta)
├── seatunnel-translation/ # 引擎适配器 (Flink/Spark)
├── seatunnel-core/ # 作业提交 & CLI
├── seatunnel-formats/ # 数据格式处理
└── seatunnel-e2e/ # 端到端测试
作业执行流程
- 解析 - 读取并验证作业配置
- 规划 - 生成带并行度的执行计划
- 调度 - 将任务分发到 Worker 节点
- 执行 - 运行 Source → Transform → Sink 管道
- 监控 - 跟踪进度、指标和检查点