接口调优

叶少卿 Lv1

一、说明

接口调优是一个老生常谈的问题,但是需要具体问题具体分析,某些接口只有在特定场景下才会需要优化,而常规情况下是不会出现性能瓶颈的,本文只做归纳性梳理和通用解决方案设计。

二、方案

接口调优需要根据具体问题具体分析,总结起来就一句话:这个活该谁在什么时候怎么干,也就是活该怎么干活该谁来干

2.1 活该怎么干

2.1.1 等活多再干

适用于频繁单次操作资源开销大的批量操作,可以进行合并,比如数据库批量操作
有些数据库插入操作是在循环中,可以采用批量操作,避免多次IO。

2.1.2 等人多再干

适用于彼此相互独立但又必须在一个逻辑内完成的操作。比如:某些串行操作可以并行执行,这个指在必要情况下必须同时完成逻辑进行返回的,比如麻将计算翻数等。

2.1.3 事要分开干

某些串行操作可以异步执行,比如订单系统下单成功后在统计模块生成对应统计信息。

2.1.4 抓紧早点干

  1. 缓存
    将热点数据缓存起来,下次直接用。
  2. 预处理
    将基础数据预加载,可以到内存也可以冗余字段存储,下次直接用。
  3. 池化思想
    预先开出线程池,便于后续使用,节省开销。

2.2 活该让谁干

2.2.1 数据库来干

  • 索引优化
    适当使用索引能极大利用数据库性能。
  • sql优化
    对sql进行必要调优,比如深分页调优等。

2.2.2 程序优化

  • 避免大事务
    大事务拆分为小事务,避免长期占用锁。
  • 锁粒度优化
    锁粒度要轻,避免占用公共资源。

2.2.3 优化程序和业务结构

有些事是业务上的事情,比如实时统计,这本身是一个伪需求,可以T+1或者T+N。还有些事是程序本身的事情,这个必须程序自己解决了。

  • 标题: 接口调优
  • 作者: 叶少卿
  • 创建于 : 2024-01-02 17:26:46
  • 更新于 : 2024-01-03 06:26:00
  • 链接: https://nby.life/2024/01/02/接口调优/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论