Tutorials
Actor16 章 · 并发模型

手写 Actor 运行时与流式 Markdown 解析器

这是一份「从为什么到怎么做」的 Actor 模型笔记:先说清传统请求-响应后端在 AI 时代缺了什么,再把 Actor 的四条金律立住,然后用 Go 一行行手写运行时(邮箱、调度、监督树、持久化、背压),最后拿它当地基做一个真正跑在生产形态下的流式 Markdown 解析器——并诚实地给出基准测试与边界。

从第一章开始

Part I · 为什么与是什么

  1. 01为什么需要 Actor:AI 后端的三重困境流式建模、状态管理、错误与超时——传统请求-响应后端在 AI 时代暴露的三处结构性缺失。
  2. 02Actor 到底是什么:四条金律与公司隐喻私有状态、串行处理、不可变消息、地址寻址;let-it-crash 的反直觉错误哲学。
  3. 03一个 50 岁模型的 AI 复兴1973 Hewitt → Erlang → Akka → Orleans → AI 时代多智能体,以及 Go 生态的实现谱系。

Part II · 跨范式对照

  1. 04Go CSP 与 Rust 所有权CSP channel 与 Actor mailbox 同源;Rust 把「状态私有」从运行时约定抬成编译期强制。
  2. 05与 Flink 流计算的同构Keyed State ≈ 按地址分区的 Actor,Credit 背压 ≈ 有界 mailbox,Checkpoint ≈ 私有状态快照。

Part III · 手写运行时

  1. 06手写一个极简 Actor 运行时密封接口消息、有界 channel mailbox、串行 run 循环、recover 兜住 panic、spawn 与父子监督树、Ask。
  2. 07Demo 实战:用 Actor 建模 AI 流式会话三层监督树:Manager 按 sessionID 路由、Session 持有 keyed state、Worker 无状态易崩;SSE 边界与断线续传。
  3. 08四大优势的实测验证无锁并发精确、let-it-crash 自愈且状态不丢、有界背压拖不垮、断线续传零外部依赖。
  4. 09从教学玩具到生产可用集中调度消灭 goroutine 泄漏、死信队列、优雅停止、退避+失败率监督、快照持久化、可观测性。

Part IV · 流式 Markdown 解析器

  1. 10AI 把 Markdown 解析变成了流处理批量吞吐 → 首字延迟的需求反转;已定稿前缀 + 暂定尾巴;你熟悉的 markdown-it 与 pulldown-cmark。
  2. 11CommonMark 官方策略里的并行缝隙规范附录 A:块级串行、行内可并行——Actor 拓扑的切缝规范已画好;语法子集与偏差表。
  3. 12拓扑设计:三种 Actor 与消息协议DocActor(串行心脏)→ InlineWorker 池(并行)→ Assembler(重排序 + 推送);单一入口门面。
  4. 13四大机制:增量 · 重排 · 自愈 · 背压冻结已定稿只重渲染活动块、按 seq 重排、let-it-crash + 缺口自愈、全链路背压。
  5. 14生产化返工:Renderer 接口与插件机制从字符串拼接到 io.Writer(基线快 3.5×);从硬编码 switch 到规则注册表(ruler);删除线扩展为证。
  6. 15极致 Pull 模式:扁平事件流,像 pulldown单线程 pull 的一等 API(复用 Config、写穿 io.Writer、拉取式迭代器);把行内从 AST 树拍扁成开/闭令牌;块与行内交织成一条统一事件流。
  7. 16诚实的实测、边界与练习把增量收益与 Actor 税分开计量;五准则对照;何时不要用 Actor 解析;六个可验收练习。