基于Flink CDC的企业级日志实时入湖入流解决方案
作者: 徐榜江(雪尽) ,阿里云Flink数据通团队负责人,Flink PMC 成员,Flink CDC 开源项目负责人 李昊哲(米灵),阿里云Flink高级产品经理,负责阿里云 Flink 稳定性、可观测性、数据摄入等企业级产品特性 内容概要 本文主要介绍阿里云基于开源 Flink CDC 打造的企业级日志实时入湖入流的技术解决方案,涵盖产品功能介绍、日志场景挑战与解决方案、最佳实践案例以及联合解决方案等内容。 开源 Flink CDC 是一款用于处理数据变更捕获(Change Data Capture)、支持增量数据的分布式数据集成工具。该项目早期主要聚焦于数据库入库入仓场景,在数据库增量数据同步领域积累了丰富的实践经验。 从 3.0 版本开始,Flink CDC 支持通过 YAML 格式描述数据传递过程以及 ETL 转换逻辑,极大简化了用户的数据集成与同步工作。Flink CDC 的核心价值在于结合数据库的变更捕获技术(Data Capture),打造全增量一体化的集成框架,有效降低用户的使用成本,同时满足数据时效性与一致性方面的需求。 Flink CDC 最主要的应用场景是在数仓分层架构中作为数据入湖入仓的第一步。增量快照算法是其核心能力之一,支持读取历史数据、全增量一体化同步以及整库同步等功能。此外,Schema 信息管理功能在后续版本迭代中持续增强,进一步提升了用户对社区的信任度与粘性。YAML ETL 将复杂的高级功能平民化,使更多 BI 领域的用户能够通过 YAML 脚本完成复杂的作业配置。Flink CDC 在社区的主要应用场景集中在数据库的实时入湖入仓领域。 在传统数据同步方案中,用户通常需要分别处理全量数据与增量数据,使用不同的链路与业务系统,最终通过定时合并完成数据同步。这种 Lambda 架构存在以下问题:链路组件较多,数据合并的时效性较差,且合并过程中存在位点无法强对齐的情况,容易导致数据一致性问题。对于研发人员而言,技术栈过于复杂,普通用户难以驾驭。 Flink CDC 将上述复杂流程整合到一个 YAML 作业中,实现全增量一体化,Flink 作业可支持亚秒级延迟。框架层面从原理上保证数据不丢不重,同时提供端到端的作业管理体验。用户仅需编写一个 YAML 文本即可启动作业,这是 Flink CDC 在社区中最核心的应用场景。 阿里云企业版 FlinkCDC-数据摄入在开源基础上对企业版进行了多项增强,主要包括以下几个方面: 引擎层面优化:阿里云企业版引擎内部称为 VVR,在作业自动调优、数据摄入(即 Flink 作业的热更新能力)、State Backend、SQL 算子等方面均进行了企业级优化。资源分配方面支持弹性力度的动态调整。 管控平台支持:阿里云提供 VVP 平台负责 Flink 作业的开发与运行。相比开源版本仅支持数据库入湖入仓,VVP平台扩展支持了日志入湖入仓,具备更丰富的企业级上下游生态。 阿里云产品之间相互打通,整体用户体验更佳。平台支持资源动态扩缩容、全链路监控、告警机制等功能,同时支持 YAML 作业的全生命周期管理,包括作业版本管理、日志查询、资源配置、依赖管理等。 阿里云企业级 Flink CDC 的定位是在开源内核的基础上,通过插件化开发提供更多增值服务,提升易用性并降低开发运维门槛。 阿里云企业版Flink CDC-数据摄入产品优势 阿里云 Flink CDC 数据摄入的产品优势可从功能特性与性能成本两个维度进行阐述。 功能优势:提供更多企业级功能特性,包括引擎侧有更强大的表结构变更自动同步(无需作业重启)和 DB 入湖场景的数据限流功能,以及日志入湖场景的 Schema Inference 能力、全链路脏数据收集功能等。得益于阿里云 Flink 产品底座的长期建设,CDC YAML 作业也能复用诸多企业级能力,比如弹性扩缩容、Hot-Update 资源调优、监控和告警等能力,同时具备丰富的数据源支持,涵盖大数据存储、关系数据库、湖仓、流存储等上下游生态。 性能优势:阿里云 Flink CDC 数据摄入在读取和写入上均做过深度的性能优化,在读取 MySQL 和 MongoDB 场景,支持了多线程解析和高效下推过滤等优化,对比社区有数倍性能优势。在写入 Paimon 和 Fluss 时均支持 Dynamic Shuffle 优化,能够根据每个并发的实时数据量自适应调整写入流量分布,作业运行更加智能和平稳。此外,CDC YAML 作业默认支持整库同步或多表入湖,单 Sink 节点可写多表的拓扑模式,避免拓扑节点过多导致资源消耗过大、部分表数据量少造成资源浪费等问题。 最佳用户体验体现在端到端 Pipeline 的便捷性上:用户仅需关注 YAML 文本,作业提交与部署均由平台自动完成。阿里云还提供丰富的场景与最佳实践方案文档,用户可根据实时数仓、数据库或结合 Fluss 等不同业务场景参考相应的最佳实践,直接复制粘贴 YAML 文本即可。另外,作为云产品,SLA 保障、运维监控体验更佳。 当前最新版本已迭代至 VVR 11.5,该版本功能最全、稳定性最佳,建议用户使用最新的稳定版本以获得更好的用户体验。 随着 AI 技术、Agent 以及 AGI 等技术的兴起,AI 应用日益普及,用户对非结构化数据、日志数据乃至多模态数据的需求持续增长,Flink CDC 需要具备更强的数据接入能力。 日志实时入湖入流可为数据分析与 AI 两大赛道解锁更加新鲜的数据,帮助业务运营人员、决策人员乃至 Agent 完成更快的业务决策。数据新鲜度越高,基于数据的判断就越准确,这在风控反欺诈、广告投放等时间敏感的业务场景中尤为关键。 日志入湖入流领域存在以下三个主要痛点: 数据定义多样化:与数据库数据不同,日志数据定义极为多样化。不同应用甚至同一应用的不同终端(如手机、iPad)采集的日志数据格式可能不同,语义也可能不一致,缺乏统一标准。数据库表字段通常固定且有明确类型约束,而日志数据可能存在 Integer、Bigint、Big Decimal 等不同类型表示同一语义的情况。因此,该场景需要具备数据规范化处理能力。 日志加工时效性要求高:日志数据规模通常较大,需要实时采集处理。这不仅是对日志入湖工具系统的要求,更是端到端的要求。海量实时批量数据对数据湖引擎(如 Flink、Starrocks 等)的分析能力提出了更高要求,各子系统均需满足端到端的高性能需求。 表结构变更频繁:日志数据定义多样化、终端不确定性及多版本迭代导致表结构变更频繁。数据库表变更通常需 DBA 审核,遵循加字段而非删字段的最佳实践。而日志场景灵活性高,终端采集字段的增删变化是常态。这要求端到端日志处理链路具备 Schema 推断与演进能力,支持从无 Schema 的裸 JSON 数据推断 Schema,并在下游 ODS 表自动新增字段,对技术能力提出更高要求。 阿里云 Flink CDC 提供一键实时入湖功能,用户仅需编写 YAML 文本即可完成日志的实时入湖入流。入湖支持 DLF 的 Paimon Sink 服务格式,入流支持 Fluss 等流存储。 传统日志入湖入流方案通常将日志数据采集到消息队列(如 Kafka、SLS),然后通过编写 Java 代码(如 Flink DataStream 作业)进行解析处理,每个字段需手动判断处理,拓扑需根据下游表数量配置。这种方案门槛较高,要求用户熟练掌握 Java 与 Flink 核心概念,需手动处理表结构推导,且作业是黑盒不可见,开发、迭代与资源调优均较困难。 阿里云通过 YAML 方式支持 Kafka、SLS 等数据源,可自动对 Topic 内数据进行 Schema 推断与推导,并通过路由写入下游不同表。用户仅需编写 YAML 文本即可实现零代码开发,Schema 自动推导,业务复制修改即可复用。开发调优体验类似 SQL 开发,修改配置参数或动态加表均可在平台上直接编辑。 某用户业务场景中,数据已采集至 Kafka,包含 DB 字段与 Table 字段,需将一个 Topic 的数据分发至下游八千多张表,要求一个作业完成。用户期望根据 DB 与 Table 字段自动建表并同步数据,新增列时 ODS 表自动加列。 该场景通过一个 YAML 文本即可解决,支持下游自动建表、分库分表、Schema 自动推导。UserId 自动推断为 String 类型,EventTime 推断为 Timestamp 类型。支持数据清洗(如 Projection 只选特定字段)、Where 过滤、UDF 过滤、表名转换等功能。 用户数据进入 DLF(Paimon、Iceberg)后,可基于 Flink 加 DLF 方案,结合 Starrocks 构建实时数仓完整解决方案,数据入湖过程高效便捷。 以下是一个线上的真实作业示例,API 与社区 Amazon API 一致。配置包含 Source(数据源,如 Kafka)与Sink(目标端,如 Paimon)。Transform 为可选数据转换配置,可指定所有列或通过Projection选择特定字段。可通过组件配置指定主键字段,如用 ID 作为主键。Route 可进行表名映射,如将 user 表映射为 origin\_user 或 ODS\_user 表。简单的 YAML 文本即可在阿里云 Flink 完成数据摄入作业开发。 YAML 文本提交后将自动生成线上Flink作业,支持部署配置、Metric 监控、告警配置等功能。作业日志查询、Metric 查询、配置告警等体验与全托管Flink作业一致。 数据过滤与计算:支持 MySQL 语法风格的数据过滤与计算,对用户友好。例如可对表内age字段进行过滤(如 age 大于100的数据),或统计字段长度。提供内置函数与内存函数,支持 UDF 调用及 SQL 表达式调用,实现数据过滤与清洗。在数据过滤时,斜杠星(/*)表示匹配原数据所有字段,且支持 Schema Evolution。假设原数据有 ID、name、age 三个字段,新增address字段后,作业会自动在下游添加该字段,计算列与filter规则继续生效。 组件与分区键重定义:支持重新定义主键与分区键。例如 MySQL 表主键为 ID,但希望 DLF 数据湖表将主键换成其他字段或增加分区键(因多个数据库实例数据写入同一张表)。YAML 中可指定 PK 与分区键。 Pre Transform 与 Post Transform 执行逻辑不同。Pre Transform 侧重原数据修改,包括修改表主键、分区键、加列等操作。Post Transform 侧重数据处理,包括 Filter 与 Projection。两个算子通常嵌入为一个 Transform,既支持 Schema 裁剪与重定义,也支持数据过滤与处理。 3、日志入湖-DLF(Paimon)快速入门 阿里云 DLF 提供全托管 Paimon,可以参考阿里云的帮助文档,文档采用 Step By Step 方式,从配置白名单、准备测试数据到编写作业,用户可按步骤完成快速入门。文档中提供完整可运行的作业样例,用户只需替换 Kafka 地址与 Topic,可选配置已加上注释说明。此外,文档包含脏数据处理能力配置、Deletion Vector 优化配置等内容,用户参照文档即可将 Kafka 日志数据通过 Flink CDC 一键写入阿里云 DLF(Paimon)。 4、日志入流-流存储Fluss版快速入门 阿里云提供全托管 Fluss,当前已经开启公测。Fluss 作为流存储,相比原生 Kafka,在列裁剪、Schema 化、湖流一体化等方面优势明显。将原始采集数据同步至 Fluss 后,可构建流式数仓,对 Paimon 数据进行加工处理。Fluss 场景支持类似配置,将 Source 换为 Kafka,Sink 换为 Fluss,提交 YAML 文档后作业即可运行。即使 Kafka 内数据为无 Schema 的 JSON,也会自动推导 Schema。 自动推导表结构 Flink CDC 数据摄入支持丰富的推导表结构策略,默认策略为自动推导表结构,该策略默认配置适用于大多数业务场景。比如通过配置预读取 Kafka 记录数为100,从指定新位点消费累计100条数据,对100条数据的 Schema 进行推导,获取推导的最宽表结构作为初始表结构。例如前面50条推导出10个字段,后面50条推导出12个字段,最终合并为最宽的15-16个字段作为下游 Paimon 表结构,自动建表并写入数据,缺失字段填 Null。 灵活指定表结构 Flink CDC 数据摄入也支撑用户手动指定初始表结构,如下图所示用户可通过 DDL 语句声明作业初始化表结构,您可以直接粘贴下游已有表的 DDL,比如通过 Flink Catalog 执行 show create table 命令快速获取您期待的初始表结构。语法与 Flink SQL 对齐,指定初始表结构后按该结构继续演进。适用于 Kafka Topic 数据太少或尚未开始采集的场景,可先编写数据摄入作业,数据到达后自动拉起。 部分字段指定类型,自动推导可能存在误差,用户可指定部分字段为固定类型。如指定 ID 为 bigint 或 string,name 为 varchar 等。对于不符合规则的数据,可通过脏数据收集器处理。灵活指定表结构以满足特定业务需求。 脏数据处理 日志场景与数据库不同,弱结构化数据不可避免存在脏数据。阿里云提供脏数据容忍与收集配置:用户可设置脏数据容忍条数,脏数据支持收集。业务运行时不查看脏数据,过后可据此调整下游 Schema 或反馈给上游业务方,确保 Pipeline 稳定运行。 常见问题排查 阿里云积累了大量常见问题与排查手段,相关链接已整理。包括 Flink CDC 数据摄入的常见问题与解决方案,涵盖数据库入湖、日志入湖等场景。日志场景最多涉及 Kafka 与 SLS 两类,问题总结包括配置方法、网络联通性、嵌套 JSON 格式解析等,用户可参照文档快速排查。 基于 Fluss 加 Flink 加 Paimon 的湖流一体解决方案中,Flink CDC 作为数据接入层,可接入数据库数据、日志数据、OSS 数据(OSS 支持开发中),摄入至 Fluss 与 Paimon。 对时效性不敏感的业务可直接写入 Paimon,对时效性要求更高的业务先写入 Fluss,通过 Fluss 的湖流一体能力自动将热数据写入 Paimon。Flink CDC 支持直接写入 Fluss 或直接写入 Paimon。用户可基于此方案,结合 OLAP 查询引擎(如 Starrocks、SelectDB 等)完成报表、Dashboard、数据探查、数据分析等应用。 根据业务场景选择方案:中级时效需求通过数据摄入直接写 Paimon;秒级时效需求先写 Fluss 加速再写 Paimon。端到端实时数仓可达到秒级时效。 阿里云某金融行业客户案例具有一定代表性。客户原数据架构包含数据采集、数据库、数据应用及离线调度。阿里云基于 Flink CDC 数据摄入对原有方案升级为实时数仓架构,替代自建 Kafka 集群,大幅降低自建 Kafka 集群的管理运维成本。Flink 作业直接采集至 Kafka 后,可通过 Flink SQL 进行实时 ETL、聚合等复杂分析,也可通过 Flink CDC 日志入湖能力将 Kafka 内的 JSON 等日志类型数据直接写入数据湖,再进行后续的计算和分析。 该方案在客户环境稳定运行一年多。开源方案在企业级场景存在性能瓶颈与运维管理困难,阿里云方案开箱即用,资源弹性几分钟内即可扩展。Flink CDC 采集能力提升 50% 以上,实时计算性能相比开源内核提升 2-3 倍,在大型性能要求极致场景中得到客户认可。 汽车行业尤其是新能源汽车快速发展,阿里云 Flink CDC 与某行业头部客户在自动驾驶场景展开合作。车端数据量巨大,采集后通过 Flink CDC 写入数据库,基于数据库进行模型训练、搜索等自动驾驶业务场景。 Flink CDC 处于业务链路前端,快速接入端侧数据,后续链路处理能获取更新鲜的数据,业务效果更佳。支持端侧日志数据入湖,数据库数据(关系型 DB、NoSQL DB 如 MongoDB)摄入。开源版本已具备初步能力,企业版进一步优化性能,帮助头部客户快速完成自动驾驶场景数据湖方案建设。 阿里云 Flink CDC 数据摄入旨在快速高效智能化地将用户数据写入数据湖与流存储,主要包含两类场景:数据库与日志。 数据库场景核心能力:Schema Evolution、表级入湖、整库同步、内置函数与 UDF 处理、数据限流(避免打挂核心业务库)。 日志场景核心能力:Schema Inference(从杂乱无章原数据推出表结构和结构化数据)、主键与分区键灵活指定、脏数据处理(日志场景脏数据较为常见)、多表拆分入湖(Kafka Topic 较贵,单 Topic 可能存储数百上千张表数据)、JSON 智能解析(筛选特定字段、字段合并规则、版本号字段映射等)。 阿里云 Flink CDC 针对数据库与日志场景分别打造企业级核心能力与最佳实践,适用于阿里云 Flink 产品用户或开源用户,均可获得启发与参考。这些最佳实践是云产品孵化过程中踩坑沉淀的结晶,云上用户可获得更多底座能力支持,与兄弟团队云产品 DLF、Fluss、Hologres、Maxcompute、Starrocks 深度融合,打通用户体验,开箱即用。 阿里云企业级 Flink CDC 在 Serverless Flink 中可以直接使用,入湖场景支持多种湖格式,已支持 DLF Paimon、DLF Iceberg 和 Fluss 等,对 Paimon 与 Fluss 的支持走在业界前沿。 实时湖仓场景中,Flink CDC 核心功能为入湖入仓,支持写入 DLF、EMR-Starrocks、Hologres、Maxcompute。湖流一体方案中,Flink CDC 将数据库业务库数据与日志业务日志高效写入 Fluss 流存储,再通过 Fluss 自动同步至 Paimon,形成湖流一体解决方案,在实时湖仓基础上为核心业务提供更高实时性。 经典实时数仓解决方案中,Flink 与 Hologres 团队合作推出的 Flink CDC 直接写入 Hologres 方案较为经典。Flink CDC 也支持写入 EMR Starrocks,用户可根据偏好选择商业产品或开源产品。无论是实时数仓、湖仓还是湖流一体方案,Flink CDC 数据摄入均能完成方案第一步。 欢迎大家免费开通 Serverless Flink 来使用企业级 Flink CDC,如需更多交流,可加入阿里云实时计算 Flink 版交流群,开源 Flink CDC 问题可在 Flink CDC 社区群讨论。一、阿里云企业级Flink CDC数据摄入功能介绍
1、Flink CDC开源项目概述


2、阿里云企业版Flink CDC对比开源Flink CDC


二、日志场景实时入湖入流的趋势与挑战

1、日志场景的业务痛点

2、基于阿里云企业级Flink CDC日志实时入湖入流解决方案

3、基于阿里云企业级Flink CDC日志实时入湖入流客户案例

三、基于阿里云企业级Flink CDC日志入湖入流最佳实践
1、作业配置示例


2、核心特性说明






5、日志入湖入流最佳实践




四、阿里云企业级Flink CDC联合解决方案
1、湖流一体解决方案:阿里云企业级Flink CDC+Fluss+Flink+Paimon

2、金融入湖入仓解决方案:阿里云企业级Flink CDC+ EMR StarRocks +EMR Spark

3、智驾实时数据湖解决方案:阿里云企业级Flink CDC+DLF(Paimon)

五、总结

