日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
API接口性能優(yōu)化總結(jié)

摘要

常見性能優(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 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 a = CompletableFuture.supplyAsync(() -> mServiceA.getA());
CompletableFuture 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 a = CompletableFuture.supplyAsync(() -> mServiceA.getA());

CompletableFuture 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í)緩存,可以最大限度提升性能。


文章名稱:API接口性能優(yōu)化總結(jié)
鏈接URL:http://m.5511xx.com/article/ccoooed.html