采集的四类来源
按数据来源划分,采集方式基本落在四类上:数据库用批量查询或日志级 CDC;应用日志用采集 Agent 收集后送消息队列;第三方接口定时拉取;文件由上游按批次投递到 FTP 或对象存储。四类来源的可靠性、重复性与顺序特性各不相同,落地方式也应区别对待。
统一假设:一定会重复
所有采集通道都要按「会重复投递」来设计:日志采集器在轮转或重启后可能重读末尾部分内容,接口重试可能重复写入,CDC 位点回退会重放事件。把去重放在下游是最可控的方案——要求上游不重复,成本高且无法验证。
基本信息
| 数据库 | 批量查询或 binlog 日志级 CDC |
|---|---|
| 应用日志 | Agent 采集后送消息队列,注意轮转与断点续传 |
| 第三方接口 | 定时拉取加游标分页,注意限流与重试 |
| 文件投递 | SFTP 或对象存储按批次落地,注意完成标记 |
| 共同要求 | 可断点续传、可幂等重跑、有采集水位与监控 |
来源类型
| 来源 | 采集方式 | 常见工具 | 注意点 |
|---|---|---|---|
| 数据库 | 批量查询或 binlog CDC | DataX、Debezium、Flink CDC | 对源库压力与增量边界 |
| 应用日志 | Agent 采集后送消息队列 | Filebeat、Fluent Bit、Vector | 日志轮转、断点续传、多行日志 |
| 第三方 API | 定时拉取加游标分页 | 脚本加调度、Airbyte | 限流、重试、幂等与配额 |
| 文件投递 | SFTP 或对象存储批次落地 | 调度监听、对象存储事件通知 | 完成标记、重复处理、归档 |
典型使用场景
- 业务库入仓:小表走全量、大表走增量或 CDC
- 应用日志入湖:Agent 采集到消息队列,再由流任务落湖
- 第三方对账数据拉取:定时任务按游标分页拉取并记录水位
- 上游批量丢文件:以「文件到达」为触发条件,处理完立即归档
- 多源合并:不同来源用各自的采集器,统一落到同一张贴源表
采集方式速记
采集方式速记
库:小表全量 + 大表增量(更新时间或 CDC);增量水位存控制表
日志:append-only,重发风险高,下游必须能去重;注意多行异常栈的合并
API:外部依赖不可控,要有重试上限、限流退避与失败告警
文件:以批次为单位,先写完成标记再处理,处理完归档避免重复采集端要留下可核对的水位:记录每次抽取的时间范围与条数,是判断「上游没数据」还是「采集失败」的唯一依据,也是补数时的起点。
文件投递场景中,若处理程序只扫当前目录而不移动已处理文件,上游补投同名文件时会重复入库;处理完成后立刻归档或写完成标记。