从零实现短链服务的完整实战:短码生成与冲突处理、Redis 缓存穿透与击穿(singleflight)、异步点击统计、两层缓存、wrk 压测定位瓶颈。含 2C1.8G 机器实测数据:无缓存 1200 QPS → 加 Redis 28000 → 加本地 LRU 56000。
await 允许挂起,不承诺换后台线程。Actor 限制状态访问的隔离边界,Task 还需要取消和错误处理。
本地部署的盈亏平衡点、按显存选模型规模、Q4_K_M 为何是量化甜点、llama.cpp 与 vLLM 的取舍、KV cache 才是并发上限的真正限制、OpenAI 兼容接口的无感切换、以及本地 8B 模型的四条能力短板与混合架构。
协程是一段可以挂起的工作,Flow 描述多次产生的值。谁创建作用域,谁就承担取消与生命周期责任。
线程与异步任务都可表达并发,但资源成本、阻塞影响与调度不同。共享值是否能跨线程由 Send/Sync 等约束检查。
Swoole 不是框架,是 PHP 扩展。 它给 PHP 加上协程、常驻内存、异步 IO 的能力,但不提供路由、ORM、模板。
Hyperf 是基于 Swoole/Swow 的协程框架,常驻内存。国内高并发场景(秒杀、IM、网关)用得不少。
前置:函数和方法、控制结构。本章用标准库完成“启动任务 → 传递结果 → 等待结束 → 取消任务 → 保护共享状态”。先单独保存并运行每个程序,再组合成 worker pool;不要把几个 main 函数放在同一个文件。