接口性能优化方法
接口慢了不要只盯着加索引。从代码到架构,性能优化有 10 个层次,越底层收益越大。
一、优化层次总览
- 1.1 金字塔模型——越往上效果越明显
- 1.2 优化原则——先测量再优化,从最慢的环节开始
二、层次 1:代码层
- 2.1 避免循环中的数据库调用
- 2.2 合理使用并行——CompletableFuture
- 2.3 减少不必要的对象创建
三、层次 2:SQL 层
- 3.1 索引优化
- 3.2 SQL 改写——子查询变 JOIN
- 3.3 避免 SELECT *
- 3.4 批量操作——
batchInsert
四、层次 3:缓存层
- 4.1 本地缓存——Caffeine
- 4.2 分布式缓存——Redis
- 4.3 多级缓存——Caffeine + Redis
- 4.4 缓存策略——Cache Aside / Read Through
五、层次 4:异步化
- 5.1 消息队列——削峰填谷
- 5.2
@Async——非核心逻辑异步处理 - 5.3 异步非阻塞——WebFlux
六、层次 5:并行化
- 6.1 多个独立查询并行执行——CompletableFuture
- 6.2 批量 RPC 调用——Dubbo 的
async调用 - 6.3 线程池隔离
七、层次 6:批量
- 7.1 批量查询——
List<Long>替代循环调用 - 7.2 批量插入——
batchInsert - 7.3 Pipeline——Redis Pipeline / Kafka 批量发送
八、层次 7:数据层
- 8.1 读写分离
- 8.2 分库分表
- 8.3 冷热分离
九、层次 8:JVM 层
- 9.1 GC 调优——选择合适的 GC
- 9.2 堆内存大小调整
十、层次 9:架构层
- 10.1 服务拆分——独立部署和扩缩容
- 10.2 CDN——静态资源加速
十一、层次 10:硬件层
- 11.1 SSD 替代 HDD
- 11.2 网络带宽升级
十二、总结
- 优化金字塔——代码 → SQL → 缓存 → 异步 → 架构
- 不要过早优化,但要知道优化的方向
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 谜思录!