第 07 卷 · 缓存、消息队列与数据流
本卷的定位与入口
先修:事务、网络与基本并发;先定义权威数据,再选择缓存或消息机制。
本卷按起步、原理、工程和进阶分层;首次进入时按阶段学习路线选取当前需要的章节。
已完成的独立章稿
07.01 访问模式与状态角色以虚构 c-a 的历史、成员资格、预览、在线提示和计数为线索,先判断权威/派生/临时,再推导访问模式、命中/陈旧和缓存丢失后的恢复。07.02 Redis 数据模型再依访问形状比较 String、Hash、Set、ZSET、List、位图和 Stream 的边界。07.03 缓存读取与更新用 seq8→seq9 的两条交错推导旧值回填、负缓存与失效政策。07.04 缓存过载与热点用 c-g 同键失效、百键雪崩和随机无效 ID 算回源预算。07.05 缓存服务的持久与故障按派生/临时/权威角色比较无持久、RDB、AOF、复制切换与冷启动。07.06 消息抽象用在线提示、后台索引和离线补拉比较队列、Pub/Sub 与可回放日志。07.07 确认、重投与去重以 E9 的发布/消费 ACK 丢失、短去重窗口和编辑版本推导重复效果。07.08 顺序与并发消费用 E9/E10 同分区、F1 跨分区和批量/再平衡解释完成乱序。07.09 积压与坏消息用 c-g 到达/完成速率与 E-bad/E11 队头阻塞评审重试、隔离和重放。07.10 事务边界与 outbox以 m-9 和 E9 推演同库原子记录、转发故障、消费者幂等及外部效果。07.11 派生视图与事件时间用 E9/E10 的迟到与重放推导预览、搜索、统计窗口和权威重建。07.12 跨系统数据一致性案例把历史、搜索、预览、通知与离线补拉合成一条业务确认及修复链。十二章各八节、22 道分层练习均已完成。
IM 主线中的位置
在线与会话缓存、消息转发、序号状态、队列确认、重复投递、热点群、积压追平与历史重建。
主参照与源码入口见 OpenIM 阅读地图。各章区分公开项目事实与虚构教学规则,在具备先修后对照固定源码。
参考材料怎样进入课程
采用经典资料的知识覆盖与递进思路,结合 Go 和虚构 IM 重新组织。下表对应本卷已完成的十二章;按先修选择章节并完成独立变式。
起步层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 07.01 访问模式与状态角色 | 权威、派生与临时状态;热点、局部性、命中和失效。 | 区分消息历史、在线状态、会话摘要与临时计数,逐一说明可否丢失及重建来源。 |
| 07.02 Redis 数据模型 | 字符串、哈希、列表、集合、有序集合、位图与流的适用范围。 | 按在线查询、成员集合和待处理记录的访问方式选择Redis结构,说明使用边界。 |
| 07.03 缓存读取与更新 | cache-aside、TTL、淘汰、版本、负缓存与一致性承诺。 | 构造会话缓存迟到回填,区分不存在、旧值与依赖失败,并写出一致性承诺。 |
原理层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 07.04 缓存过载与热点 | 击穿、穿透、雪崩、大 key、热 key;合并加载、分散到期和限流。 | 估计热点群或批量失效对后端的冲击,比较合并加载、到期分散与降级。 |
| 07.05 缓存服务的持久与故障 | 快照、日志、复制、切换、分片;数据角色与可接受丢失量。 | 解释缓存进程或副本故障后的状态,判断哪些数据可重建、哪些事实必须另存。 |
| 07.06 消息抽象 | 队列、发布订阅、日志、分区、消费者组;保留与回放。 | 按在线通知、历史转发和后台处理的需求比较队列、订阅与可回放日志。 |
工程层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 07.07 确认、重投与去重 | 生产确认、消费确认、提交点、重复、冲突与保留窗口。 | 对发送和消费分别标确认点,推演确认丢失、重复处理和去重记录到期。 |
| 07.08 顺序与并发消费 | 按键分区、重试顺序、批量、并发上限、再平衡与在途状态。 | 分析按会话分区、慢分区、批量与重试顺序,说明哪些顺序由哪一层保证。 |
| 07.09 积压与坏消息 | 最老年龄、处理速率、重试预算、死信、重放和人工核对。 | 用最老消息年龄、处理速率和错误类型决定重试、隔离、重放与人工核对。 |
进阶层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 07.10 事务边界与 outbox | 本地原子记录、发送器协调、消费幂等、外部副作用。 | 比较教学outbox和OpenIM队列/存储路径,写出原子范围、崩溃点与外部效果。 |
| 07.11 派生视图与事件时间 | 变更数据捕获、物化视图、迟到事件、水位和重建。 | 重建会话摘要或搜索视图,处理迟到事件、版本与事实时间,核对重放结果。 |
| 07.12 跨系统数据一致性案例 | 搜索同步、通知补拉、异步任务和任务结果;对账与补偿。 | 交付历史、在线通知与补拉的一致性案例,区分实时体验、持久事实和最终追平。 |
本卷综合任务
对照 OpenIM 的转发与推送路径,为消息事实、在线通知和历史补拉分别定义状态与恢复,覆盖重复、积压和迟到消息。
任务由学习者在具备环境时执行。理论推导、参考示例、个人实现和真实运行记录分别保存,故障与反例属于必需部分。
达到的能力
能说清每份数据的角色、每种确认的意义、每种故障后的恢复来源。
用解释、最小实现、失败变式、业务取舍四类证据评审。只有目录、术语定义或参考代码通过,不能直接记为掌握本卷。
本卷章节展开规则
每章从一个明确问题开始,先补齐本章所需定义,再推导机制;至少含一条完整执行过程、一个反例、分层练习、反馈与业务迁移。复杂章节拆成多课,不把整卷知识压成一次速读。
当前编写状态和章节深度要求见课程编写与能力验收。