Skip to content

使用场景

按你正在构建的系统类型查找模式。

Web API 与微服务

构建 REST/gRPC 服务?这些模式让它在负载下保持可靠。

场景模式实际案例
防护下游故障熔断器 + 指数退避重试Netflix Hystrix 包装每个 HTTP 客户端调用
API 限流限流器Stripe 允许 25 个突发,以 25/秒补充
请求中间件(认证、日志、追踪)中间件链gRPC 拦截器,Koa.js 洋葱模型
服务发现注册表Consul、etcd 服务注册
节点间负载分配一致性哈希HAProxy、groupcache 键分布
防止过载背压 + 批处理Node.js stream piping,Kafka 消费者组

数据库与存储

PostgreSQL、Redis、LevelDB 以及所有严肃存储引擎背后的模式。

场景模式实际案例
崩溃恢复预写日志 + 检查点PostgreSQL:WAL + 定期 checkpoint
写密集负载LSM 树 + 布隆过滤器LevelDB/RocksDB:memtable → SSTable + bloom 跳过
磁盘范围查询B+ 树PostgreSQL btree 索引,SQLite
并发读写MVCCPostgreSQL 元组版本化,etcd 修订版
数据完整性验证Merkle 树ZFS 块校验和,Git 对象存储
有序键合并合并迭代器 + 最小堆LevelDB compaction
删除但不立即移除墓碑Cassandra tombstone,LevelDB 删除标记
内存有序集合跳表Redis ZADD/ZRANGE 有序集合
内存缓存LRU 缓存Redis LRU 淘汰,Go groupcache
无时钟事件排序逻辑时钟etcd Raft log,DynamoDB 版本向量

前端与 UI 框架

React、Vue 和浏览器引擎在每一帧中使用这些模式。

场景模式实际案例
Virtual DOM diffing差异/补丁 + 位掩码React reconciler:diff 树,应用最小补丁
响应式渲染协作调度React Scheduler:每 5ms 让出以保持 16ms 内
帧安全状态更新双缓冲React Fiber:workInProgress ↔ current 树交换
避免不必要的重渲染脏标记React shouldComponentUpdate,Chromium layout
状态管理观察者 + 状态机Redux subscribe,XState 有限状态
优先级任务调度最小堆React Scheduler 优先级队列

分布式系统

跨多台机器的系统模式。

场景模式实际案例
共识日志预写日志 + 逻辑时钟etcd Raft:带 term/index 的追加日志
分区容错路由一致性哈希Amazon DynamoDB,Cassandra ring
复制状态状态机 + 预写日志Raft:通过日志复制状态机
无冲突复制逻辑时钟 + 墓碑CRDT,Dynamo 风格 last-write-wins
数据同步Merkle 树Cassandra 反熵修复
消息驱动架构Actor 模型 + 背压Akka cluster,Erlang/OTP
构建/部署流水线依赖图 + 批处理Cargo 构建图,pnpm workspace

运行时与内存管理

Go、CPython、V8 和游戏引擎如何管理内存和执行。

场景模式实际案例
减少 GC 压力对象池 + 空闲链表Go sync.Pool,Linux SLUB 分配器
阶段性分配Arena 分配器Rust bumpalo,Go arena(实验性)
确定性清理引用计数CPython refcount,Rust Rc/Arc
字符串去重驻留 + 享元Rust 编译器符号驻留,Python 小整数缓存
高效克隆写时复制Linux fork(),Rust Cow<T>
跨核工作分配工作窃取Go runtime P/M/G 调度器,Tokio
I/O 多路复用事件循环 + 环形缓冲区libuv (Node.js),Redis 单线程
线程安全计数器信号量Linux 内核信号量,Go x/sync

编译器与语言工具

LLVM、V8、rustc 以及 Vue/React 编译器中使用的模式。

场景模式实际案例
AST 遍历访问者LLVM InstVisitor,Vue 编译器转换
动态分发虚函数表CPython tp_* slots,Rust dyn Trait
符号表驻留 + 前缀树rustc Symbol interning
IR 转换迭代器 + 差异/补丁Rust Iterator 适配器,tree-sitter edits
类型表示标签联合体V8 tagged pointers,PyTorch TensorImpl
插件系统注册表 + 中间件链Babel 插件,webpack loaders

网络与协议

场景模式实际案例
连接状态追踪状态机Linux TCP 状态机 (SYN_SENT → ESTABLISHED → ...)
IP 路由前缀树Linux LC-trie IPv4 FIB
报文缓冲环形缓冲区Linux sk_buff,DPDK ring
流控背压 + 限流器TCP 流控,Nginx limit_req
DNS 解析前缀树 + LRU 缓存域名查找 + 响应缓存

基于 MIT 许可证发布。