API接口性能优化总结

人工智能2025-11-05 06:36:2444
摘要

在web开发过程中,接结经常会遇到接口RT高的口性情况,除了通过监控事后优化的化总方式,我们还需要掌握一些常用的接结手段,避免写出慢的口性接口。从前端发起调用到后端一般经过网关层、化总应用层、接结存储层。口性每一层都可以优化,化总本篇文章主要是接结应用层优化。常见性能优化思路

从理论上分析,口性性能优化手段通常有

API接口性能优化总结

批量请求数据库,化总我们一般会用in,接结提高数据库查询效率调用外部服务,我们也需要要求依赖方提供批量接口,口性避免多次网络请求批量查询的化总id数量也不宜过多

之前在sql IN一文中分析过,IN 的数量太多时,香港云服务器性能会下降。同样服务间调用,数据量过大,带宽占用大。所以这时候需要分批调用。

Listres= Lists.partition(ids, 200).parallelStream()

.flatMap(batch -> mServiceA.batchGetA(batch).stream())

.collect(Collectors.toList());并行/并发处理,利用多线程可以提高效率

比如接口中需要请求多个外部接口/数据库,相互之间无依赖,因为这种操作都是IO操作,可以由顺序执行改为并行执行,充分利用cpu处理能力,如

CompletableFuturea = CompletableFuture.supplyAsync(() -> mServiceA.getA());

CompletableFutureb = CompletableFuture.supplyAsync(() -> mServiceB.getB());

CompletableFuture.allOf(a,b).join();异步,非强依赖的调用可以通过异步化处理

异步,分为读写。比如写是弱依赖,可以用 @Async 或者其他操作。

如果是读,不是必须的服务器托管数据,也需要加上超时处理,因为外部调用有网络原因,都是不可靠的

CompletableFuturea = CompletableFuture.supplyAsync(() -> mServiceA.getA());

CompletableFutureb = CompletableFuture.supplyAsync(() -> mServiceB.getB());

try {

CompletableFuture.allOf(a, b).get(1000, TimeUnit.MILLISECONDS);

} catch (Exception ex) {

if (!a.isDone()) {

}

if (!b.isDone()) {

}

}减少数据处理量

eg. 拉取外部数据,全量的循环去拉,增量的使用事件通知机制,这样可以减少数据处理量

避免深度分页

数据库的深度分页性能比较差,需要在业务上避免深度分页

缓存

缓存本质上就是从读取速度快的设备中直接获取数据。通过空间来换时间。对于DB中的数据可以缓存,对于外部服务的数据同样可以缓存

使用多级缓存,可以最大限度提升性能。

本文地址:http://www.bzuk.cn/html/082f31199606.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

电脑字体涂鸦教程大全(打造个性化艺术作品,解锁电脑字体涂鸦的无限可能)

SQL Server创建表语句介绍

MySQL字符串处理之一个字段包含多个ID的解决

浅析MongoDB数据库分布式存储物理文件

探索dostylesd805的风格魅力(发现dostylesd805独特设计与创新科技的奇妙融合)

​守护软件供应链安全,DevSecOps头部厂商「悬镜安全」完成B轮数亿元融资

保护数据安全的工具

漏洞情报 | Spring RCE 0day高危漏洞预警

友情链接

滇ICP备2023006006号-33