文档首页 / 实时任务与 CDC

实时任务与 CDC

来源变更经算子链处理后秒级写入目标:支持范围、编辑器用法、位点语义、DDL 跟随、监控与上线检查。

概述

与 管道任务 的区别:管道是批式(全量 / 水位增量),实时任务常驻运行、按变更事件推进位点。

支持范围

  • 来源:关系库的日志 CDC(PostgreSQL 逻辑复制、MySQL / MariaDB binlog、SQL Server CDC、Oracle)、Kafka 等。新建数据源时界面会标明每种类型的验证情况。
  • 目标:数据库表(可多目标 / 分支)或 Kafka 主题。
  • 处理:算子链(过滤、JSON 展开、类型转换、字段映射、维表关联等),可按目标拆分支。

权限与入口:data:view 查看;data:edit 新建 / 修改 / 启停。菜单:数据集成 → 实时任务

实时任务用于「来源产生变更 → 经算子链处理 → 持续写入目标(数据库表或 Kafka 主题)」的秒级同步。与管道不同,它常驻运行,按变更事件推进位点;适合「单条链路的流式加工」。

实时任务列表

图:实时任务列表

图中编号说明:

  1. 新建实时任务。
  2. 状态 / 采集方式:运行中、已暂停、等待确认(目标侧出现删除 / 结构冲突,需要人处理)等;下方小字是采集方式,如「实时 · CDC」。
  3. 累计 / 脏数据:已应用到目标的行数与被隔离的脏数据数。

实时任务编辑器

图:实时任务编辑器

图中编号说明:

  1. 来源:任务名称、来源数据源、来源表;右上角标签显示采集机制,例如「日志 CDC(PostgreSQL 逻辑复制)」。
  2. 算子链:按顺序添加算子(过滤、JSON 展开、类型转换、字段映射、维表关联等),可上移 / 下移 / 删除,参数即时校验。
  3. 目标:目标数据源、schema / 库、目标表,以及每个输出列的「写入、目标列名、类型、主键」。可添加多个目标 / 分支。
  4. 预览:只在内存里用样本跑一遍算子链,不写目标。
  5. 保存。运行中的任务需要先暂停才能编辑。

位点语义:位点只在目标提交后前进:目标写入失败就停在原位点重试,不会「跳过失败数据」;所以请在启动前确认主键、脏数据策略和目标表结构。「暂停」保存安全位点,「继续」从位点续传;「重置位点」会重放数据,追加模式下重放的行会再次插入。

来源表结构变化时可配置「DDL 跟随」;遇到删除或结构冲突,任务会进入等待处理而不是静默丢数据,按界面提示处理孤儿记录与删除保护即可。来源库需要相应的复制权限(PostgreSQL 的复制槽与 REPLICATION 权限;MySQL 的 REPLICATION SLAVE/CLIENT 与 ROW 格式 binlog),连接测试会给出缺什么的提示。更多限制与排障见 常见问题。

运行与位点语义

  • 状态:运行中 / 已暂停 / 等待处理 / 失败;列表显示来源、目标、算子数、已应用行数与脏数据计数。
  • 暂停 / 继续:暂停保存安全位点,继续从位点续传;重置位点会重新读取并重放数据,重放的行可能重复(主键更新模式按主键幂等;追加模式会再次插入)。
  • 重启与集群:任务与位点保存在元数据库,实例重启后从已保存位点恢复。多实例下同一任务只在一个实例运行,启动失败会退避重连;失联实例的任务由其他实例接管。
  • 目标事务 fencing:失去租约或被回滚的目标事务不会推进位点,避免接管方跳过未提交的数据。

监控与排障

  • 任务页有「运行状态 / 最近结果 / 脏数据」;运行记录里的运行详情能看追踪 ID 与日志。
  • 延迟指标 fdl_pipeline_lag_seconds{module="realtime"} 反映 worker 上报的 CDC 延迟,可用 Prometheus 告警,见 监控、告警与审计。
  • 常见问题(来源权限不足、结构变更后等待处理、位点不动、目标写入失败)见 常见问题。

与事件入口的区别

「事件入口」处理的是离散事件(Webhook / Kafka / 钉钉 / RabbitMQ),先落收件箱(至少一次 + 去重),再触发流程任务;实时任务处理的是表数据的持续变更并写入目标。需要「收到事件后跑一段编排」用事件入口加任务订阅,需要「表变更持续入仓」用实时任务。

上线检查

  • 先在测试库验证:来源权限、目标表结构、主键、脏数据策略、DDL 跟随策略。
  • 观察 24 小时:无持续重连、位点稳定前进、目标行数与来源变更量匹配。
  • 配置告警(任务失败 / 等待处理)并接入通知渠道;把实时任务页加入日常巡检。
  • 若目标端是 Kafka:确认主题分区与主键策略,避免顺序错乱;位点推进同样以目标确认为准。
联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。