从理论上分析,性能优化手段通常有
之前在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中的数据可以缓存,对于外部服务的数据同样可以缓存
使用多级缓存,可以最大限度提升性能。
当前文章:API接口性能优化总结
文章链接:http://www.csdahua.cn/qtweb/news37/314987.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网