三卷回顾
《Java 响应式编程》三卷本覆盖了响应式编程的完整路径:
| 卷 | 内容 | 核心收获 |
|---|---|---|
| 卷一 | Reactive Streams 规范、Project Reactor、RxJava、背压 | 理解 Publisher/Subscriber/Subscription 语义 |
| 卷二 | Reactor Netty、WebFlux、R2DBC、响应式系统 | 构建响应式 HTTP 服务和数据管道 |
| 卷三 | Kafka Streams、Flink DataStream、实时面板 | 构建流处理引擎和实时计算系统 |
三卷之间的关系:
卷一(响应式编程基础)
→ Mono/Flux 的背压概念
→ Processor API(事件转换)
卷二(响应式系统构建)
→ WebFlux 处理 HTTP 请求
→ R2DBC 访问数据库
→ Reactor Netty 网关
卷三(流处理引擎)
→ Kafka Streams 清洗事件
→ Flink 窗口聚合 + CEP
→ SSE 实时面板
eventd 项目贯穿三卷:
- v1(卷一):RS 规范自实现 → 背压演示
- v2(卷二):响应式网关 + R2DBC 管道
- v3(卷三):流处理引擎 + 实时面板
卷三核心知识提炼
流处理基础与 Kafka Streams(第 1–3 章)
| 概念 | 一句话总结 |
|---|---|
| Topology | Source → Processor → Sink 的有向图 |
| KStream | 无界记录流(append-only) |
| KTable | 更新流/物化视图(upsert) |
| 状态存储 | RocksDB 本地状态 + changelog Topic 恢复 |
| Exactly-Once | Kafka 事务 + 幂等生产者 |
| TopologyTestDriver | 无 broker 测试 |
Flink DataStream(第 4–8 章)
| 概念 | 一句话总结 |
|---|---|
| DataStream | 有类型的事件流 |
| Watermark | 「不会再有更早数据」的时间标记 |
| 窗口 | 把无界流切分为有限块做聚合 |
| KeyedState | 按 key 分区的状态 |
| Checkpoint | 一致性快照,故障恢复 |
| CEP | 复杂事件模式匹配 |
| MiniCluster | 本地测试集群 |
eventd v3(第 9–12 章)
| 模块 | 技术 | 输入 | 输出 |
|---|---|---|---|
| 清洗 | Kafka Streams | eventd-raw | eventd-cleaned |
| 聚合 | Flink DataStream | eventd-cleaned | Redis |
| 面板 | WebFlux SSE | Redis | 浏览器 |
学习路径回顾
路径 A:顺序通读(推荐)
序 → 前言 → 第 1–3 章(流处理基础 + Kafka Streams)
→ 第 4–8 章(Flink 核心)
→ 第 9–12 章(eventd v3 实现)
→ 第 13–14 章(测试 + 运维)
→ 第 15 章(选型与趋势)
→ 附录 A/B 速查
路径 B:已有 Kafka Streams 经验
第 4 章(Flink DataStream)→ 第 6 章(CEP)
→ 第 8 章(调优)→ 第 11 章(端到端 EOS)
→ 第 13 章(测试)
路径 C:已有 Flink 经验
第 2–3 章(Kafka Streams)→ 第 9 章(eventd v3 架构)
→ 第 12 章(部署与验收)→ 第 15 章(选型)
关键决策点
完成卷三后,你应该能回答:
什么时候用 Kafka Streams?
→ 轻量转换、微服务事件处理、已有 Kafka什么时候用 Flink?
→ 复杂窗口、CEP、Event Time 语义、多流 Join如何实现 Exactly-Once?
→ Kafka Streams: EOS V2 配置
→ Flink: Checkpoint + 幂等 Sink如何测试流处理代码?
→ Kafka Streams: TopologyTestDriver
→ Flink: MiniCluster + CollectSink如何排查反压?
→ Web UI 从后往前找瓶颈算子
进阶方向
根据兴趣选择:
| 方向 | 内容 | 资源 |
|---|---|---|
| Flink SQL/Table API | 声明式流处理 | Flink 官方文档 |
| 实时数仓 | ClickHouse/Flink CDC | 各数据库官方文档 |
| 实时特征工程 | Flink + ML 模型服务 | TensorFlow Serving |
| 云原生 Flink | K8s 上的流处理 | Flink on Kubernetes |
| 响应式微服务 | eventd v2 扩展 | Spring Cloud Reactive |
最后
流处理不是「学了就能用」,而是「用了才能学会」。
eventd v3 是一个完整的练习场:你可以修改清洗规则、调整窗口大小、添加新的 CEP 模式、升级 Flink 版本。每一次修改都是学习。
感谢阅读。
返回 目录 。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。