高併發下的系統優化-請求合併
在互聯網的場景下, 總會有一些接口長期大量的被訪問,如個人信息,訂單查詢,商品查詢等。這些請求的都有一個特點,就是查詢簡單,只需要傳入一個id就可以進行查詢。應對這種大量頻繁的查詢,我們可以做請求合併。
前提:在做請求合併有個重要前提,就是系統必須支持一次傳入多個查詢條件,然後得到返回結果,通俗的講就是支持in的查詢。
模擬場景:根據產品ID查詢產品信息,併發2000次/秒
請求流程如下:
- 前臺用戶請求查詢產品的接口 --> 後臺controller接收請求 --> service調用mapper查詢數據庫或者第三方接口查詢數據 --> 返回結果給前臺
- 重複2000次如上請求。
造成的後果會在1s內查詢2000次數據庫或者第三方系統。
示例參考: https://blog.csdn.net/liuhongya328/article/details/103187633
技術要點:
將請求加一個請求隊列,等待批量查詢,然後通過CompletableFuture 返回。