{"title":"系统设计核心:读路径与写路径的优化策略","content":"在构建大规模后端系统时,读路径与写路径的权衡是架构设计的永恒主题。本文基于 ByteByteGo 技术博客,系统梳理两类路径的关键策略与落地技巧。\n\n## 为什么区分读与写?\n\n- 读路径:低延迟、高吞吐,需要尽可能减少磁盘/网络开销。\n- 写路径:保证一致性、持久性,同时避免写放大。\n\n现代存储引擎如 B+Tree 与 LSM-Tree 正是这两类权衡的体现:\n- B+Tree:读友好,写需要随机 IO,适合读多写少。\n- LSM-Tree:写友好,通过顺序 IO 和压缩提升写性能,但读需要多级合并。\n\n## 读路径优化技术\n\n1. 缓存:多级缓存(L1/L2/分布式缓存)减少热点读。\n2. 索引设计:覆盖索引、联合索引、布隆过滤器加速存在性判断。\n3. 读写分离:主库处理写,从库处理读,扩展读能力。\n4. 物化视图/预计算:将高频复杂查询结果提前存储。\n\n## 写路径优化技术\n\n1. 追加写(Append-only):顺序写磁盘显著优于随机写。\n2. 批量写/合并写:减少 IO 次数,提升吞吐。\n3. WAL(Write-Ahead Log):先写日志,保证崩溃恢复。\n4. 异步复制:最终一致性换取更低延迟。\n\n## 架构模式:CQRS\n\n当读写模式差异极大时,命令查询职责分离(CQRS)可让两者独立演进。例如:写模型使用事件溯源,读模型使用专门的投影表。\n\n## 实践建议\n\n- 分析业务读写比(例如 100:1)后决定技术选型。\n- 先优化瓶颈路径:读延迟高优先加缓存,写吞吐不足优先改用 LSM