土法炼钢兴趣小组的算法知识备份

【流式数据处理】Kafka · Flink · 状态 · Exactly-Once

文章导航

分类入口
databasedistributed
标签入口
#kafka#flink#stream-processing#watermark#checkpoint#exactly-once#rocksdb#debezium#cdc#backpressure

目录

流式数据处理:Kafka · Flink · 状态 · Exactly-Once

读者读完 数据湖与开放表格式 第 19 章(流式 CDC 入湖)之后,仍会面对另一组问题:乱序事件怎么算对窗口、状态存在哪、checkpoint 怎么把 offset 和算子状态绑在同一一致性点、背压为什么让整个管道停下来。lakehouse 系列讲的是「数据怎么落进表」;本系列讲的是「实时管道怎么算、怎么容错、怎么保证语义」。

本系列不写 Flink SQL 语法大全,也不写云托管 Kafka/Flink 定价,写:

系列状态:已完成(2026-07-01)。全 18 篇正文均已发布,可点进阅读。

版本锚定:Kafka 3.x(KRaft);Flink 1.20+ / 2.x 主线,API 差异处标注版本边界;Debezium 以官方 connector 文档为准。

适合谁看

推荐阅读路径

路径 篇目 适合
数据平台端到端 1 → 4 → 7 → 10 → 15 → 17 → 18 Kafka + Flink + 入湖
从 lakehouse/19 来 2 → 3 → 10 → 15 → 17 水位、窗口、checkpoint
Kafka 运维转流计算 4 → 5 → 6 → 7 → 10 → 14 传输层到交付语义
状态与性能调优 9 → 12 → 13 → 18 RocksDB state 与背压
CDC 实时同步 5 → 16 → 15 → 17 Debezium 到湖
引擎选型 1 → 6 → 14 → 18 对照与决策树
完整通读 1 → … → 18 系统掌握

一、六个关键问题

  1. 流处理与批处理/微批的本质差异是什么? → 第 1 篇(日志模型、状态、延迟语义)
  2. 事件时间、watermark、窗口如何在乱序下仍算对? → 第 2、3 篇
  3. Kafka 的分区、副本、consumer group 各自保证什么? → 第 4、5、6 篇
  4. Flink 的状态存在哪,checkpoint 怎么工作? → 第 9、10、11、12、13 篇
  5. at-least-once 与 exactly-once 的边界,端到端怎么做到? → 第 14、15 篇
  6. CDC、入湖与生产运维怎么衔接? → 第 16、17、18 篇

二、篇目依赖

flowchart TD
  A["01 流处理全景"] --> B["02 事件时间与 Watermark"]
  B --> C["03 窗口"]
  A --> D["04 Kafka 日志与分区"]
  D --> E["05 副本与 Consumer Group"]
  E --> F["06 Kafka 事务"]
  A --> G["07 Flink 运行时"]
  G --> H["08 DataStream 与算子"]
  H --> I["09 键控状态与 TTL"]
  I --> J["10 Checkpoint"]
  J --> K["11 Savepoint"]
  I --> L["12 RocksDB State Backend"]
  L --> M["13 状态放大与调优"]
  F --> N["14 交付语义"]
  J --> N
  N --> O["15 两阶段提交与 EOS"]
  E --> P["16 Debezium CDC"]
  O --> P
  P --> Q["17 流式入湖深化"]
  C --> R["18 背压、故障与引擎对照"]
  M --> R
  Q --> R

跨系列: lakehouse/19 → 15、17; lsm-tree → 12、13。

三、目录与每篇价值点

第一部分:流处理基础

  1. 流处理全景:从日志到有状态计算
    • 批 vs 流 vs 微批四维度对比;Lambda/Kappa 边界;与 lakehouse 的分层对称;全系列地图。
  2. 事件时间、处理时间与 Watermark
    • 三种时间语义;watermark 生成与迟到数据;侧输出与 allowed lateness;乱序实验对比。
  3. 窗口:滚动、滑动与会话
    • Tumbling / Sliding / Session;Trigger 与 Evictor;窗口 state 与批式 GROUP BY 的对照。

第二部分:Kafka 内核

  1. Kafka 日志模型与分区
    • Log Segment 文件布局;offset 与分区内有序;KRaft 边界;kafka-dump-log 实验。
  2. 副本、ISR 与 Consumer Group
    • HW/LEO/ISR;acks 语义;rebalance 代价;offset 提交与 Flink checkpoint 分工。
  3. Kafka 事务与幂等 Producer
    • 幂等 sequence;事务生命周期;read_committed;与 Flink EOS 的衔接。
  1. Flink 运行时模型
    • JM/TM/Slot;ExecutionGraph;operator chain;并行度与资源隔离。
  2. DataStream 与算子语义
    • Shuffle 策略;keyBy 与 KeyGroup;ProcessFunction 与 TimerService。
  3. 键控状态与 State TTL
    • 五类 KeyedState;HashMap vs RocksDB backend 选型;TTL 与 checkpoint 交互。
  4. Checkpoint 机制
    • Aligned/unaligned barrier;CheckpointCoordinator;Kafka offset 写入 checkpoint。
  5. Savepoint 与升级恢复
    • Savepoint vs Checkpoint;改并行度与 rescale;跨版本状态兼容规则。

第四部分:RocksDB 状态后端

  1. RocksDB State Backend 内核路径
    • ColumnFamily 映射;读写路径与 LSM 对照;增量 checkpoint 的 IO 差异。
  2. 状态放大、Compaction 与调优
    • 窗口 state 膨胀;RocksDB 写放大;hot key 倾斜;设计 vs 调参取舍。

第五部分:交付语义与 CDC

  1. 交付语义:从 at-most-once 到 exactly-once
    • Source/引擎/Sink 三层组合;重复消费与幂等 sink 修复手段。
  2. 两阶段提交与端到端 Exactly-Once
    • GenericTwoPhaseCommitSink;Kafka/Iceberg sink 的 2PC;与 lakehouse 提交协议对齐。
  3. Debezium 与 Change Data Capture
    • CDC 事件结构;snapshot vs streaming;Connect offset topic;与入湖 upsert 衔接。

第六部分:入湖与运维收束

  1. 流式入湖深化(与 Lakehouse 第 19 章对读)
    • 引擎侧 checkpoint 间隔 ↔︎ 小文件;并行 writer 与 commit 冲突;与表治理的配合。
  2. 背压、故障模式与引擎对照
    • Credit-based 背压;倾斜/rebalance 风暴/checkpoint 连锁;Flink/KStreams/Spark SS/RisingWave 对照。

四、先修与延伸阅读

先修 说明
lakehouse 第 19 章 入湖侧 sink 与表提交(本系列深化引擎侧)
lsm-tree 系列 LSM 读写路径(RocksDB state 对照)
distributed 日志复制 ISR 与一致性直觉
延伸 说明
lakehouse 系列 表格式、compaction、查询引擎
observability 系列 lag、SLO、告警与排障
columnar-engine 系列 批式 OLAP 与流式预聚合对照

返回 全部系列索引 · 上一系列 数据湖与开放表格式

系列 index v1,2026-07-01 — 全 18 篇已完成

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-07-01 · database / distributed

【流式数据处理】背压、故障模式与引擎对照

收束流式数据处理系列:Flink credit-based 背压如何沿算子链传播、Web UI 指标怎么读;数据倾斜、checkpoint 超时连锁、Kafka rebalance 风暴、RocksDB OOM、savepoint 不兼容五类生产故障的诊断与止血;Flink / Kafka Streams / Spark Structured Streaming / RisingWave 在状态模型、交付语义、运维与入湖成熟度上的对照表与选型决策树,不做排名。

2026-07-01 · database / distributed

【流式数据处理】Checkpoint 机制:Barrier 对齐与一致性快照

从 Chandy-Lamport 分布式快照到 Flink aligned/unaligned checkpoint:CheckpointCoordinator 触发—ack—完成生命周期,Kafka source 如何把 partition offset 写入 checkpoint,以及 interval、timeout、min-pause、concurrent checkpoints 的调优边界。

2026-07-01 · database / distributed

【流式数据处理】交付语义:从 at-most-once 到 exactly-once

用 Source、引擎、Sink 三层模型拆解 at-most-once、at-least-once、exactly-once 的组合规则与最弱环决定律;对照 Flink checkpoint 模式、Kafka 事务与幂等 producer、重复消费/重复写入的三类修复手段,为两阶段提交 sink 铺垫。


By .