精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

18種接口優化方案匯總1

jf_78858299 ? 來源:撿田螺的小男孩 ? 作者:撿田螺的小男孩 ? 2023-02-15 15:59 ? 次閱讀

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

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

優化前:

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

優化后:

batchInsert(transDetailList);

打個比喻:

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

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

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

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

圖片

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

圖片

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

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

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

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

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

圖片

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

圖片

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

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

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

5. 池化思想:預分配與循環使用

大家應該都記得, 我們為什么需要使用線程池

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口優化
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1347
收藏 人收藏

    評論

    相關推薦

    電平轉換方案匯總

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

    示波器探頭接口整理匯總

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

    分享一WLAN射頻優化的解決方案

    分享一WLAN射頻優化的解決方案
    發表于 05-24 06:29

    介紹一基于FIFO結構的優化端點設計方案

    本文介紹一基于FIFO結構的優化端點設計方案
    發表于 05-31 06:31

    分享一基于littlevgl2rtt軟件包的RGB屏幕接口優化方案

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

    單片機接口資料匯總

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

    CSU18M88_開發包資源及文件匯總下載

    CSU18M88_開發包資源及文件匯總下載
    發表于 05-17 10:16 ?75次下載

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

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

    ATA&USB接口資料匯總

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

    小信號放大電路設計方案匯總

    小信號放大電路設計方案匯總
    發表于 09-14 15:01 ?139次下載

    MATLAB優化算法匯總01

    MATLAB優化算法匯總01
    發表于 10-08 10:57 ?0次下載

    MATLAB優化算法匯總02

    MATLAB優化算法匯總02
    發表于 10-08 10:59 ?0次下載

    MATLAB優化算法匯總03

    MATLAB優化算法匯總03
    發表于 10-08 11:01 ?0次下載

    18接口優化方案匯總2

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

    接口優化的常見方案實戰總結

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