接口调优
一、说明
接口调优是一个老生常谈的问题,但是需要具体问题具体分析,某些接口只有在特定场景下才会需要优化,而常规情况下是不会出现性能瓶颈的,本文只做归纳性梳理和通用解决方案设计。
二、方案
接口调优需要根据具体问题具体分析,总结起来就一句话:这个活该谁在什么时候怎么干,也就是活该怎么干和活该谁来干。
2.1 活该怎么干
2.1.1 等活多再干
适用于频繁单次操作资源开销大的批量操作,可以进行合并,比如数据库批量操作
有些数据库插入操作是在循环中,可以采用批量操作,避免多次IO。
2.1.2 等人多再干
适用于彼此相互独立但又必须在一个逻辑内完成的操作。比如:某些串行操作可以并行执行,这个指在必要情况下必须同时完成逻辑进行返回的,比如麻将计算翻数等。
2.1.3 事要分开干
某些串行操作可以异步执行,比如订单系统下单成功后在统计模块生成对应统计信息。
2.1.4 抓紧早点干
- 缓存
将热点数据缓存起来,下次直接用。 - 预处理
将基础数据预加载,可以到内存也可以冗余字段存储,下次直接用。 - 池化思想
预先开出线程池,便于后续使用,节省开销。
2.2 活该让谁干
2.2.1 数据库来干
- 索引优化
适当使用索引能极大利用数据库性能。 - sql优化
对sql进行必要调优,比如深分页调优等。
2.2.2 程序优化
- 避免大事务
大事务拆分为小事务,避免长期占用锁。 - 锁粒度优化
锁粒度要轻,避免占用公共资源。
2.2.3 优化程序和业务结构
有些事是业务上的事情,比如实时统计,这本身是一个伪需求,可以T+1或者T+N。还有些事是程序本身的事情,这个必须程序自己解决了。
- 标题: 接口调优
- 作者: 叶少卿
- 创建于 : 2024-01-02 17:26:46
- 更新于 : 2024-03-20 11:01:08
- 链接: https://nby.life/2024/01/02/接口调优/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论