成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

API接口性能優(yōu)化總結(jié)

開(kāi)發(fā) 前端 運(yùn)維
從前端發(fā)起調(diào)用到后端一般經(jīng)過(guò)網(wǎng)關(guān)層、應(yīng)用層、存儲(chǔ)層。每一層都可以優(yōu)化,本篇文章主要是應(yīng)用層優(yōu)化。

摘要

在web開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到接口RT高的情況,除了通過(guò)監(jiān)控事后優(yōu)化的方式,我們還需要掌握一些常用的手段,避免寫出慢的接口。從前端發(fā)起調(diào)用到后端一般經(jīng)過(guò)網(wǎng)關(guān)層、應(yīng)用層、存儲(chǔ)層。每一層都可以優(yōu)化,本篇文章主要是應(yīng)用層優(yōu)化。

常見(jiàn)性能優(yōu)化思路

從理論上分析,性能優(yōu)化手段通常有

批量

  1. 請(qǐng)求數(shù)據(jù)庫(kù),我們一般會(huì)用in,提高數(shù)據(jù)庫(kù)查詢效率
  2. 調(diào)用外部服務(wù),我們也需要要求依賴方提供批量接口,避免多次網(wǎng)絡(luò)請(qǐng)求
  3. 批量查詢的id數(shù)量也不宜過(guò)多

之前在sql IN一文中分析過(guò),IN 的數(shù)量太多時(shí),性能會(huì)下降。同樣服務(wù)間調(diào)用,數(shù)據(jù)量過(guò)大,帶寬占用大。所以這時(shí)候需要分批調(diào)用。

 List<String> res=  Lists.partition(ids, 200).parallelStream()
.flatMap(batch -> mServiceA.batchGetA(batch).stream())
.collect(Collectors.toList());

并行/并發(fā)處理,利用多線程可以提高效率

比如接口中需要請(qǐng)求多個(gè)外部接口/數(shù)據(jù)庫(kù),相互之間無(wú)依賴,因?yàn)檫@種操作都是IO操作,可以由順序執(zhí)行改為并行執(zhí)行,充分利用cpu處理能力,如

CompletableFuture<String> a = CompletableFuture.supplyAsync(() -> mServiceA.getA());
CompletableFuture<String> b = CompletableFuture.supplyAsync(() -> mServiceB.getB());
CompletableFuture.allOf(a,b).join();

異步,非強(qiáng)依賴的調(diào)用可以通過(guò)異步化處理

異步,分為讀寫。比如寫是弱依賴,可以用 @Async 或者其他操作。

如果是讀,不是必須的數(shù)據(jù),也需要加上超時(shí)處理,因?yàn)橥獠空{(diào)用有網(wǎng)絡(luò)原因,都是不可靠的

CompletableFuture<String> a = CompletableFuture.supplyAsync(() -> mServiceA.getA());

CompletableFuture<String> b = CompletableFuture.supplyAsync(() -> mServiceB.getB());
try {
CompletableFuture.allOf(a, b).get(1000, TimeUnit.MILLISECONDS);
} catch (Exception ex) {
if (!a.isDone()) {

}
if (!b.isDone()) {

}
}

減少數(shù)據(jù)處理量

eg. 拉取外部數(shù)據(jù),全量的循環(huán)去拉,增量的使用事件通知機(jī)制,這樣可以減少數(shù)據(jù)處理量

避免深度分頁(yè)

數(shù)據(jù)庫(kù)的深度分頁(yè)性能比較差,需要在業(yè)務(wù)上避免深度分頁(yè)

緩存

緩存本質(zhì)上就是從讀取速度快的設(shè)備中直接獲取數(shù)據(jù)。通過(guò)空間來(lái)?yè)Q時(shí)間。對(duì)于DB中的數(shù)據(jù)可以緩存,對(duì)于外部服務(wù)的數(shù)據(jù)同樣可以緩存

使用多級(jí)緩存,可以最大限度提升性能。

責(zé)任編輯:張燕妮 來(lái)源: 方丈的寺院
相關(guān)推薦

2020-06-05 08:53:31

接口性能實(shí)踐

2023-10-18 10:38:53

API

2021-08-27 14:26:06

開(kāi)發(fā)技能React

2012-09-11 15:43:32

HBase

2019-02-25 07:07:38

技巧React 優(yōu)化

2021-02-24 15:16:45

微服務(wù)架構(gòu)數(shù)據(jù)

2016-12-19 10:00:00

React性能優(yōu)化

2009-12-24 16:46:03

WPF性能優(yōu)化

2015-09-30 14:40:47

WebAPI接口設(shè)計(jì)

2022-09-13 12:56:28

前端優(yōu)化

2017-12-04 12:29:15

前端JavaScript性能優(yōu)化

2015-07-09 13:19:17

Ceph分布式存儲(chǔ)性能調(diào)優(yōu)

2015-11-05 09:02:05

Java代碼性能優(yōu)化

2022-10-09 13:36:44

接口性能優(yōu)化

2021-01-27 11:50:07

Python優(yōu)化代碼

2024-01-22 13:16:00

接口性能優(yōu)化本地緩存

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫(kù)

2024-03-01 12:19:00

接口性能優(yōu)化

2024-06-21 08:21:44

2018-11-20 10:50:00

Java性能優(yōu)化編程技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人在线播放 | 精品视频久久久 | 欧美成人激情 | 亚洲精品久久久一区二区三区 | 免费久 | 久久久久久综合 | 日本午夜在线视频 | 亚洲欧美日本国产 | 99精品国产成人一区二区 | 日本国产欧美 | 在线视频中文字幕 | 精品亚洲一区二区三区 | 国产成人免费在线观看 | 夜夜操天天操 | 欧美日韩在线一区二区 | 日本精品一区二区三区在线观看视频 | 国产黄视频在线播放 | 成人免费视频在线观看 | 精品自拍视频在线观看 | 国产乱码久久久久久一区二区 | 91精品国产综合久久婷婷香蕉 | 成人在线精品视频 | 亚洲成人久久久 | 亚洲欧美日本国产 | 91久久精品国产 | 国产一区二区在线看 | 国产一区久久精品 | 亚洲欧美国产精品一区二区 | 久久久久国产一区二区三区 | 欧一区| 欧美黄在线观看 | 亚洲一区二区久久 | 日韩成人性视频 | 中文字幕视频三区 | 国内精品久久精品 | 亚洲欧美一区二区三区国产精品 | 91麻豆精品国产91久久久久久久久 | 亚洲精品99 | 国产精品视频一区二区三区 | 欧美一级片a | 亚洲视频www |