一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

18種接口優(yōu)化方案匯總1

jf_78858299 ? 來源:撿田螺的小男孩 ? 作者:撿田螺的小男孩 ? 2023-02-15 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

之前工作中,遇到一個504超時問題。原因是因為接口耗時過長,超過nginx配置的10秒。然后 真槍實彈搞了一次接口性能優(yōu)化,最后接口從11.3s降為170ms。本文將跟小伙伴們分享接口優(yōu)化的一些通用方案。

1. 批量思想:批量操作數據庫

優(yōu)化前:

//for循環(huán)單筆入庫
for(TransDetail detail:transDetailList){
  insert(detail);  
}

優(yōu)化后:

batchInsert(transDetailList);

打個比喻:

打個比喻:假如你需要搬一萬塊磚到樓頂,你有一個電梯,電梯一次可以放適量的磚(最多放500), 你可以選擇一次運送一塊磚,也可以一次運送500,你覺得哪種方式更方便,時間消耗更少?

2. 異步思想:耗時操作,考慮放到異步執(zhí)行

耗時操作,考慮用 異步處理 ,這樣可以降低接口耗時。

假設一個轉賬接口,匹配聯行號,是同步執(zhí)行的, 但是它的操作耗時有點長 ,優(yōu)化前的流程:

圖片

為了降低接口耗時,更快返回,你可以把匹配聯行號移到 異步處理 ,優(yōu)化后:

圖片

  • 除了轉賬這個例子,日常工作中還有很多這種例子。比如: 用戶注冊成功后,短信郵件通知,也是可以異步處理的 ~
  • 至于異步的實現方式, 你可以用線程池,也可以用消息隊列實現 。

3. 空間換時間思想:恰當使用緩存。

在適當的業(yè)務場景,恰當地使用緩存,是可以大大提高接口性能的。緩存其實就是一種 空間換時間的思想 ,就是你把要查的數據,提前放好到緩存里面,需要時, 直接查緩存,而避免去查數據庫或者計算的過程 。

這里的緩存包括:Redis緩存,JVM本地緩存,memcached,或者Map等等。我舉個我工作中,一次使用緩存優(yōu)化的設計吧,比較簡單,但是思路很有借鑒的意義。

那是一次轉賬接口的優(yōu)化, 老代碼 ,每次轉賬,都會根據客戶賬號,查詢數據庫,計算匹配聯行號。

圖片

因為每次 都查數據庫,都計算匹配,比較耗時 ,所以 使用緩存 ,優(yōu)化后流程如下:

圖片

4. 預取思想:提前初始化到緩存

預取思想很容易理解,就是 提前把要計算查詢的數據,初始化到緩存 。如果你在未來某個時間需要用到某個經過復雜計算的數據, 才實時去計算的話,可能耗時比較大 。這時候,我們可以采取預取思想, 提前把將來可能需要的數據計算好,放到緩存中 ,等需要的時候,去緩存取就行。這將大幅度提高接口性能。

我記得以前在第一個公司做視頻直播的時候,看到我們的直播列表就是用到 這種優(yōu)化方案 。就是啟動個任務, 提前把直播用戶、積分等相關信息,初始化到緩存 。

5. 池化思想:預分配與循環(huán)使用

大家應該都記得, 我們?yōu)槭裁葱枰褂镁€程池 ?

線程池可以幫我們管理線程,避免增加創(chuàng)建線程和銷毀線程的資源損耗。

如果你每次需要用到線程,都去創(chuàng)建,就會有增加一定的耗時,而線程池可以重復利用線程,避免不必要的耗時。 池化技術不僅僅指線程池,很多場景都有池化思想的體現,它的本質就是 預分配與循環(huán)使用 。

比如TCP三次握手,大家都很熟悉吧,它為了減少性能損耗,引入了Keep-Alive長連接,避免頻繁的創(chuàng)建和銷毀連接。當然,類似的例子還有很多,如數據庫連接池、HttpClient連接池。

我們寫代碼的過程中, 學會池化思想 ,最直接相關的就是使用線程池而不是去new一個線程。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    關于12總線接口匯總整理

    本文總結了12總線接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡、1-WIRE、Ethernet。文章有點長,建議先收藏,需要的時候再拿出來看。
    發(fā)表于 12-02 11:48 ?9238次閱讀

    電平轉換方案匯總

    電平轉換方案匯總
    發(fā)表于 04-05 22:18

    示波器探頭接口整理匯總

    示波器探頭接口整理匯總
    發(fā)表于 11-17 15:03

    分享一WLAN射頻優(yōu)化的解決方案

    分享一WLAN射頻優(yōu)化的解決方案
    發(fā)表于 05-24 06:29

    介紹一基于FIFO結構的優(yōu)化端點設計方案

    本文介紹一基于FIFO結構的優(yōu)化端點設計方案。
    發(fā)表于 05-31 06:31

    分享一基于littlevgl2rtt軟件包的RGB屏幕接口優(yōu)化方案

    大佬無私的提供技術支持,幫忙解決問題?,F在我把過程記錄下來,方便后來的小伙伴遇到相同問題的時候有解決的思路。當然,也希望有更好的方法的小伙伴們提出更好的優(yōu)化方案。開發(fā)工具:RT-Thread
    發(fā)表于 06-07 14:57

    單片機接口資料匯總

    單片機接口資料匯總
    發(fā)表于 11-22 15:14 ?90次下載

    CSU18M88_開發(fā)包資源及文件匯總下載

    CSU18M88_開發(fā)包資源及文件匯總下載
    發(fā)表于 05-17 10:16 ?83次下載

    通信協議及接口技術匯總綜述

    通信協議及接口技術匯總綜述
    發(fā)表于 06-16 10:31 ?90次下載

    ATA&USB接口資料匯總

    ATA&USB接口資料匯總
    發(fā)表于 06-24 09:54 ?3次下載

    MATLAB優(yōu)化算法匯總01

    MATLAB優(yōu)化算法匯總01
    發(fā)表于 10-08 10:57 ?0次下載

    MATLAB優(yōu)化算法匯總02

    MATLAB優(yōu)化算法匯總02
    發(fā)表于 10-08 10:59 ?0次下載

    MATLAB優(yōu)化算法匯總03

    MATLAB優(yōu)化算法匯總03
    發(fā)表于 10-08 11:01 ?0次下載

    18接口優(yōu)化方案匯總2

    之前工作中,遇到一個`504`超時問題。原因是因為接口耗時過長,超過`nginx`配置的`10`秒。然后 真槍實彈搞了一次接口性能優(yōu)化,最后接口從`11.3s`降為`170ms`。本文
    的頭像 發(fā)表于 02-15 15:59 ?913次閱讀
    <b class='flag-5'>18</b><b class='flag-5'>種</b><b class='flag-5'>接口</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>方案</b><b class='flag-5'>匯總</b>2

    接口優(yōu)化的常見方案實戰(zhàn)總結

    針對老項目,去年做了許多降本增效的事情,其中發(fā)現最多的就是接口耗時過長的問題,就集中搞了一次接口性能優(yōu)化。本文將給小伙伴們分享一下接口優(yōu)化
    的頭像 發(fā)表于 03-06 09:22 ?787次閱讀