全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《Java 响应式编程·系统构建与数据访问》 |
| 篇数 | 50 篇(14 章 42 节 + 序、前言、目录 + 附录 A–E) |
| 领域 | Reactor Netty、WebFlux、R2DBC、响应式缓存、安全、监控、弹性 |
| 贯穿项目 | eventd-v2 —— Reactor Netty 网关 → WebFlux API → R2DBC 存取 → 响应式缓存 |
| 阅读方式 | 从目录篇 进入按顺序通读,或按机制跳读 |
| 主线版本 | JDK 25 LTS(Temurin 25.0.5+8)、Reactor BOM 2025.0.8、R2DBC 1.0.x |
| 关键依赖 | reactor-netty 1.3.x、spring-webflux 6.2.x、r2dbc-postgresql 1.0.x、caffeine 3.1.x、lettuce 6.5.x |
| 上级专题 | 书稿专题 |
三卷分工
| 卷 | 书名 | 关注点 |
|---|---|---|
| 卷一 | 《Reactive Streams 与背压原理》 | RS 规范、Reactor 核心、背压策略、RS TCK 合规 |
| 卷二 | 《系统构建与数据访问》(本卷) | Reactor Netty、WebFlux、R2DBC、响应式安全与测试 |
| 卷三 | 《流处理引擎与实时计算》 | Kafka Streams、Flink DataStream、窗口、CEP |
本卷不展开 RS 规范实现(卷一),不展开 Kafka Streams/Flink(卷三)。需要时写「卷一第 N 章」「卷三第 N 章」。
全书目录
前置
| 篇 | 文章 | 核心内容 |
|---|---|---|
| 序 | 从能通到可运营 | 卷二定位、三卷分工、本卷不承诺什么 |
| 前言 | 环境、项目与读法 | JDK 25、Netty 1.3、R2DBC、eventd-v2 骨架 |
| 目录 | 目录与学习路径 | 三条路径、与卷一/卷三衔接 |
第一部分:Reactor Netty(第 1–3 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | Reactor Netty 最小 HTTP 服务器 | HttpServer.create、端口绑定、handle 回调 |
| 1.2 | 请求响应管线 | 编码、路由、处理、请求头/参数解析 |
| 1.3 | HTTP 层的背压 | 发送窗口、接收缓冲、TCP 背压衔接 |
| 2.1 | Reactor Netty HTTP 客户端 | HttpClient、GET/POST/PUT/DELETE、超时 |
| 2.2 | 连接池 | ConnectionProvider、复用、驱逐、弹性伸缩 |
| 2.3 | 客户端重试、超时与弹性 | retryWhen、timeout、降级 |
| 3.1 | WebSocket 服务端 | websocket()、帧类型、inbound/outbound |
| 3.2 | WebSocket 会话管理与广播 | mapConnect、多 session 广播 |
| 3.3 | eventd v2 网关 | 网关模块、路由表、协议转换 |
第二部分:WebFlux(第 4–6 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 注解路由 | @RestController、@GetMapping/@PostMapping |
| 4.2 | 函数式路由 | RouterFunctions.route、RequestPredicates |
| 4.3 | WebFlux 过滤器 | WebFilter、HandlerFilterFunction、顺序 |
| 5.1 | 请求体读取与 JSON 解析 | @RequestBody、bodyToMono、流式上传 |
| 5.2 | 响应式响应流 | SSE、chunkedTransfer、Flux 响应 |
| 5.3 | 错误契约 | 全局异常、统一 JSON 错误体 |
| 6.1 | 响应式安全 | SecurityWebFilterChain、JWT 鉴权 |
| 6.2 | CORS、CSRF 与会话 | CorsWebFilter、CsrfWebFilter、会话管理 |
| 6.3 | WebFlux 测试 | WebTestClient、bindToController |
第三部分:R2DBC 与数据访问(第 7–9 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 7.1 | R2DBC 驱动原理 | ConnectionFactory、SPI、Statement、Result |
| 7.2 | 响应式事务 | TransactionalOperator、回滚、savepoint |
| 7.3 | 响应式 Repository | ReactiveCrudRepository、DatabaseClient |
| 8.1 | Schema 变更 | Flyway 配置、baseline、校验 |
| 8.2 | 查询优化 | 索引、N+1、批量、EXPLAIN ANALYZE |
| 8.3 | 连接健康检查 | 连接池 metrics、健康端点 |
| 9.1 | 多数据源与读写分离 | RoutingConnectionFactory、主从路由 |
| 9.2 | 缓存策略 | Caffeine Async、Redis Reactive、cache-aside |
| 9.3 | 缓存一致性 | 写穿透、写回、失效传播 |
第四部分:响应式系统整合(第 10–12 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 10.1 | Micrometer 指标 | 自定义 counter/timer/gauge |
| 10.2 | 分布式追踪 | Brave/OpenTelemetry 适配、上下文传播 |
| 10.3 | 结构化日志 | contextWrite、MDC 桥接 |
| 11.1 | 客户端负载均衡 | 自定义 LoadBalancer、加权 |
| 11.2 | 熔断器 | Resilience4j CircuitBreakerOperator |
| 11.3 | 限流 | 令牌桶、漏桶、Redis 分布式限流 |
| 12.1 | 事件驱动集成 | 事件总线、事件网关、路由 |
| 12.2 | Saga 编排 | 事务补偿、最终一致性 |
| 12.3 | eventd v2 全链路集成 | Netty → WebFlux → R2DBC → Cache 端到端 |
第五部分:测试与调试(第 13–14 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 13.1 | StepVerifier | 虚拟时间、断言链 |
| 13.2 | Testcontainers | PostgreSQL/Redis 容器集成测试 |
| 13.3 | 性能测试 | 并发测试、JMH、延迟分布 |
| 14.1 | 生产检查清单 | 线程池、连接池、超时、监控 |
| 14.2 | 故障排查 | 线程分析、连接泄漏、背压溢出 |
| 14.3 | v2 验收 | 全链路可运行、压测、文档 |
附录
| 附录 | 文章 | 用途 |
|---|---|---|
| A | Reactor Netty 配置速查 | 服务端/客户端/SSL/HTTP/2 |
| B | R2DBC 操作符速查 | SPI/DatabaseClient/Repository |
| C | WebFlux 路由模板 | 注解 vs 函数式对照 |
| D | 弹性模式速查 | 重试/熔断/限流/降级 |
| E | 迁移检查清单 | 阻塞到响应式迁移 |
与站内已有内容的边界
- 不写 Netty 组件源码:ByteBuf 引用计数、ChannelPipeline 源码已在《Netty 高性能网络编程》展开;本卷只写 Reactor Netty 使用层。
- 不写 Spring Boot 容器启动:自动配置、Bean 生命周期已在《Spring Boot 高级》展开;本卷只写 WebFlux 请求管线。
- 不写 Kafka Streams/Flink:留给卷三。
- 不写 JDBC 基础:JDBC/HikariCP 已在《Java 编程实战》展开;本卷只写 R2DBC 响应式替代。