简介:传统ETL以批处理为主,数据延迟常以天计;实时ETL则将数据从产生到可查询的延迟压缩到秒级。本文拆解实时ETL的四层架构,数据源、采集传输、计算转换与存储服务,梳理CDC、消息队列、流计算等关键组件的选型要点,并给出一致性保障、监控运维等落地建议,帮助读者构建低延迟、高可靠的数据集成链路。
一、先把问题定义清楚:ETL到底在解决什么
ETL是Extract(提取)、Transform(转换)、Load(加载)三个单词的缩写,说白了就是:把数据从一个地方取出来,按规则加工,再写到另一个地方去。概念很简单,但“什么时候取、多久取一次、取出来怎么加工”这三个问题,会把ETL分成两条完全不同的技术路线——批处理与流处理。
很多团队在选型时容易陷入一个误区:听说实时架构更先进,就急着把所有链路都实时化。实际上,选型的第一步不是看哪个工具更流行,而是先回答两个问题:业务对数据时效的真实要求是什么?团队有没有能力承担相应的复杂度?下面展开来说。
二、传统ETL与实时ETL的核心差异
传统ETL是批处理模式:设置定时任务,比如每天凌晨两点执行一次,把前一天的全量或增量数据处理完毕后写入数据仓库。这套模式的优点非常突出:
但它有一个致命短板:数据滞后。你早上九点在报表上看到的,是昨天结束时点的业务状态。对于经营分析、月度结算这类场景,T+1完全可以接受;但对于实时风控、实时大屏、系统监控告警、库存动态调拨这类场景,昨天的数据几乎等于没有数据。
实时ETL要解决的正是这个滞后问题:让数据从产生到可查询,延迟控制在秒级甚至毫秒级。它的代价则是架构复杂度、运维成本与一致性保障难度的全面上升。两者的差异可以概括为:
| 维度 | 传统批处理ETL | 实时ETL |
|---|---|---|
| 数据延迟 | 小时级~天级(T+1) | 秒级~毫秒级 |
| 处理模式 | 定时批量执行 | 持续流式处理 |
| 架构复杂度 | 低 | 高 |
| 一致性保障 | 失败可重跑,容易保证 | 需幂等与事务设计 |
| 开发运维成本 | 低 | 高 |
| 典型场景 | 报表、月结、历史回补 | 风控、监控、实时运营 |
三、实时ETL全链路架构:自上而下四层拆解
我一直强调,做技术方案之前,先把架构图在脑子里画清楚。实时ETL的全链路从上到下分四层。
3.1 第一层:数据源层——搞清楚数据从哪里来
最常见的数据源包括:业务关系型数据库、应用日志、消息系统、第三方API接口,以及IoT设备上报的传感器数据。
这一层通常不需要改造,但你必须摸清三件事:
3.2 第二层:采集与传输层——数据怎么实时出来
数据产生之后,实时传出来有两条主流路径:
路径一:CDC(变更数据捕获)。 原理是监听数据库的事务日志,把每一条增删改操作实时捕获出来,转为结构化事件流。相比在业务库上加触发器、或高频轮询时间戳字段的老办法,日志解析方式对业务系统近乎零侵入:不改一行业务代码,不给业务库带来额外查询压力。选型时要重点确认三点:是否支持全量快照与增量日志的无缝衔接、失败后的断点续传能力、以及表结构变更时的兼容策略。
路径二:日志采集。 应用程序产生的日志文件,通过部署在主机上的轻量级采集器实时传输到下游,适合用户行为埋点、访问日志这类天然以文件形态存在的数据。
采集到的数据,需要用一个高吞吐、可持久化的分布式消息队列来承接。消息队列在这一层承担四个关键职责:
3.3 第三层:计算与转换层——实时ETL的核心
数据从队列流出后,需要完成清洗过滤、格式转换、字段补全、维表打宽、窗口聚合等一系列操作再写出去。这一层技术门槛最高,核心难点在于“状态”二字:
一段典型的流式清洗聚合逻辑如下(示意性伪SQL):
-- 示意:流式清洗 + 分钟级窗口聚合INSERT INTO dws_order_stat_1min -- 分钟级汇总表SELECTwindow_start,category,COUNT(DISTINCT user_id) AS uv,SUM(pay_amount) AS gmvFROM source_order_events -- 从消息队列接入的原始事件流WHERE event_type = 'paid'AND pay_amount > 0 -- 过滤脏数据GROUP BYTUMBLE(event_time, INTERVAL '1' MINUTE),category;
除状态管理外,还有三个必须严肃对待的语义问题:
3.4 第四层:存储与服务层——数据写到哪里、给谁用
很多架构图画到计算层就停了,但写入端设计不当,前面所有努力都会打折扣:
四、关键组件的选型考量
五、落地实践:绕不开的六个问题
六、总结:要不要上实时ETL,怎么判断
实时ETL不是“更高级的ETL”,而是用更高的架构复杂度和运维成本,换取秒级时效的技术决策。给三条结论:
工具会迭代,架构会演进,但“按业务时效要求倒推技术方案”这条选型逻辑不会过时。先把架构图在脑子里画清楚,再动手,远比追着工具清单跑更重要。