SuperAPI AI 工具集

stream-processing-expert

数据与分析

查看项目

更新于 10-16 03:39

技能介绍

用途:在无界事件流上做持续计算,重点解决时间、状态与重试三类难题,与 kafka-expert(传输层)、airflow-expert(批编排)互补。

主要能力:区分事件时间、摄入时间与处理时间,业务聚合应基于事件时间;用水位线(watermark)在无界流上产出有限结果,需权衡迟到容忍度,并处理空闲分区以免水位线停滞;支持滚动、滑动、会话及全局加触发器窗口,注意滑动窗口会成倍放大状态;说明至多一次、至少一次、恰好一次三种投递语义,恰好一次需检查点状态加事务性或幂等 sink,实践中常用至少一次加按业务键幂等的 sink。

使用方式:Flink 可用 Table API/SQL 定义 Kafka 源表与 WATERMARK,做 TUMBLE 聚合;通过 enable_checkpointing 配置检查点模式、超时与外部化检查点,取消时保留检查点以便恢复。Spark Structured Streaming 为微批模式,用 readStream 读 Kafka、withWatermark 设水位线、writeStream 指定 checkpointLocation 与输出模式(append/update/complete)。CDC 用 Debezium 读取数据库 WAL,示例配置含 PostgresConnector、pgoutput、slot.name、table.include.list、snapshot.mode 等。

适用场景:实时聚合、用户活动会话分析、数据库变更同步等。

限制与注意:复制槽会保留 WAL,连接器停止可能占满主库磁盘,需监控槽延迟;decimal.handling.mode 默认 base64,需设为 string;初始快照可能很重;删除会发出 tombstone,忽略 null 的消费者会漏删;状态需设 TTL、按规模选后端、部署前打 savepoint 并做状态模式版本化;迟到数据应走侧输出而非静默丢弃,长期正确性建议配合批对账;避免处理时间窗口、无界状态、共享检查点目录、无批对账的流式账本,以及本可用五分钟批处理却上流式的情况。

参考:Apache Flink、Spark Structured Streaming、Debezium 文档,以及《Streaming Systems》《Designing Data-Intensive Applications》第 11 章。