高併發場景下的請求合併

2021-09-26 13:25:30 字數 1164 閱讀 7783

一.

在專案中,我們經常用到如下方式進行介面呼叫:

有多少請求訪問,就會呼叫多少次第三方介面或資料庫,這樣的情況在高併發場景下很容易出現執行緒被打滿,返回結果慢。

為了優化這個介面,後台可以將相同的請求進行合併,然後呼叫批量的查詢介面。

請求合併:

下面上**:

已查詢資料庫舉例

1.建立請求類:

@data

@builder

@allargsconstructor

@noargsconstructor

public class request

2.具體業務處理類:

@component

public class completablefuturetest

int size = queue.size();

listrequests = new arraylist<>(size);

for(int i=0;icodes = new arraylist<>();

for (request request : requests)

hashmapresponsemap = new hashmap<>();

listrubbishes = rubbishservice.getrubbishbyrubbishids(codes);

for (rubbish rubbish : rubbishes)

//將結果響應給每乙個單獨的使用者請求。

for (request request : requests)

}catch (exception e)

}},0,100, timeunit.milliseconds);//每100mm從佇列中取一次資料

}public void future(string id)throws exception catch (exception e)

}}.start();}}

}

高併發之請求合併

應用場景redis官方介紹,redis單機讀寫效能12萬 s,批量處理能達到70w 秒。不管是快取還是資料庫,都有批量處理能力。當系統達到瓶頸時,才充分考慮壓榨效能。適用於電商雙十一,特定高併發場景。思路1 乙個使用者請求到來時,將請求放在乙個佇列中,單執行緒定時任務10ms從佇列中取資料進行處理。...

高併發場景下的限流策略

目錄快取 降級 限流 漏桶演算法 令牌桶演算法 漏桶演算法與令牌桶演算法的區別 有效提公升熱點資料的訪問效率,在高併發 大流量的場景降低服務端壓力。當訪問量快速增長 服務可能會出現一些問題 響應超時 或者會存在非核心服務影響到核心流程的效能時,仍然需要保證服務的可用性,即便是有損服務。所以意味著我們...

高併發場景下ArrayList的執行緒安全問題

arraylist是我們常用的資料結構,在併發場景下是執行緒不安全的。在讀多寫少的場景下,我們一般會用讀寫鎖 readwritelock來保證共享物件的執行緒安全性。public object read public void write 這裡能解決部分問題。但是還是存在當有乙個執行緒在write的...