本發(fā)明涉及計算機,尤其是涉及一種任務(wù)請求處理方法、裝置、設(shè)備和介質(zhì)。
背景技術(shù):
1、隨著互聯(lián)網(wǎng)的快速發(fā)展,限流技術(shù)被廣泛應(yīng)用于服務(wù)控制請求的速率。例如,在高并發(fā)場景下,為了保持系統(tǒng)的穩(wěn)定運行,需要對任務(wù)請求進行限流。
2、常用的限流算法包括計數(shù)器算法、滑動窗口算法、漏桶算法、令牌桶算法等。
3、其中,計數(shù)器算法適用于保護后端服務(wù)免受大流量沖擊,避免服務(wù)崩潰,但存在臨界問題,即在窗口切換時可能會瞬間拒絕大量請求?;瑒哟翱谒惴ǖ膶崿F(xiàn)相對復(fù)雜,需要額外的計算和存儲資源。漏桶算法對于突發(fā)流量處理不夠靈活,可能導(dǎo)致部分請求被丟棄。令牌桶算法實現(xiàn)復(fù)雜,對時間精度要求高,不適合突發(fā)流量處理。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種任務(wù)請求處理方法,結(jié)合令牌桶算法、計數(shù)器算法和滑動窗口算法的應(yīng)用場景和優(yōu)點,通過匹配任務(wù)限流容器,在任務(wù)限流容器已滿時,對逾期的首個令牌刪除,實現(xiàn)了任務(wù)限流容器的空間回收,提高了任務(wù)限流容器的有效性,在任務(wù)請求高并發(fā)的場景下,保證服務(wù)器的穩(wěn)定性,降低服務(wù)器過載情況的出現(xiàn)概率。
2、第一方面,本發(fā)明實施例提供了一種任務(wù)請求處理方法,包括:
3、在接收到任務(wù)請求的情況下,確定任務(wù)請求匹配的任務(wù)限流容器;
4、在任務(wù)限流容器的狀態(tài)為已滿時,根據(jù)任務(wù)限流容器中首個令牌的令牌信息,確定首個令牌的令牌狀態(tài);
5、在令牌狀態(tài)為逾期時,將首個令牌的令牌信息從限流容器中刪除;
6、生成任務(wù)請求對應(yīng)的令牌信息,并將令牌信息存儲至任務(wù)限流容器中;
7、將任務(wù)請求傳輸至服務(wù)器中,以供服務(wù)器處理任務(wù)請求。
8、在本發(fā)明較佳的實施例中,上述方法,還包括:
9、在令牌狀態(tài)為未逾期時,將任務(wù)請求拒絕。
10、在本發(fā)明較佳的實施例中,上述方法,還包括:
11、在任務(wù)限流容器的狀態(tài)為未滿時,生成任務(wù)請求對應(yīng)的令牌信息;
12、將令牌信息存儲至任務(wù)限流容器中。
13、在本發(fā)明較佳的實施例中,上述在接收到任務(wù)請求的情況下,確定任務(wù)請求匹配的任務(wù)限流容器之前,包括:
14、創(chuàng)建至少一個初始任務(wù)限流容器;
15、根據(jù)各初始任務(wù)限流容器對應(yīng)的配置參數(shù),對各初始任務(wù)限流容器進行初始化,得到至少一個任務(wù)限流容器。
16、在本發(fā)明較佳的實施例中,上述方法,還包括:
17、根據(jù)任務(wù)限流容器中首個令牌的令牌信息,確定首個令牌的令牌狀態(tài);
18、在令牌狀態(tài)為逾期時,將首個令牌的令牌信息從任務(wù)限流容器中刪除;
19、更新任務(wù)限流容器中首個令牌的令牌信息,并返回根據(jù)任務(wù)限流容器中首個令牌的令牌信息,確定首個令牌的令牌狀態(tài)的步驟;
20、在令牌狀態(tài)為未逾期時,保留首個令牌的令牌信息,并返回根據(jù)任務(wù)限流容器中首個令牌的令牌信息,確定首個令牌的令牌狀態(tài)的步驟。
21、在本發(fā)明較佳的實施例中,上述根據(jù)任務(wù)限流容器中首個令牌的令牌信息,確定首個令牌的令牌狀態(tài),包括:
22、將令牌信息中的存入時刻和當(dāng)前時刻之間的差值,確定為首個令牌的存儲時間;
23、在存儲時間大于或等于時間閾值時,確定首個令牌的令牌狀態(tài)為逾期;
24、在存儲時間小于時間閾值時,確定首個令牌的令牌狀態(tài)為未逾期。
25、在本發(fā)明較佳的實施例中,上述任務(wù)限流容器的狀態(tài)為已滿,包括:
26、獲取任務(wù)限流容器中令牌的數(shù)量,以及任務(wù)限流容器的配置參數(shù)中的容器容量;
27、在數(shù)量大于或等于容器容量時,確定任務(wù)限流容器的狀態(tài)為已滿;
28、在數(shù)量小于容器容量時,確定任務(wù)限流容器的狀態(tài)為未滿。
29、第二方面,本發(fā)明實施例還提供一種任務(wù)請求處理裝置,包括:
30、容器確定模塊,用于在接收到任務(wù)請求的情況下,確定任務(wù)請求匹配的任務(wù)限流容器;
31、令牌狀態(tài)確定模塊,用于在任務(wù)限流容器的狀態(tài)為已滿時,根據(jù)任務(wù)限流容器中首個令牌的令牌信息,確定首個令牌的令牌狀態(tài);
32、令牌回收模塊,用于在令牌狀態(tài)為逾期時,將首個令牌從限流容器中刪除;
33、令牌存儲模塊,用于生成任務(wù)請求對應(yīng)的令牌信息,并將令牌信息存儲至任務(wù)限流容器中;
34、請求傳輸模塊,用于將任務(wù)請求傳輸至服務(wù)器中,以供服務(wù)器處理任務(wù)請求。
35、第三方面,本發(fā)明實施例還提供一種電子設(shè)備,包括處理器和存儲器,存儲器存儲有能夠被處理器執(zhí)行的計算機可執(zhí)行指令,處理器執(zhí)行計算機可執(zhí)行指令以實現(xiàn)上述第一方面的任務(wù)請求處理方法。
36、第四方面,本發(fā)明實施例還提供一種計算機可讀存儲介質(zhì),計算機可讀存儲介質(zhì)存儲有計算機可執(zhí)行指令,計算機可執(zhí)行指令在被處理器調(diào)用和執(zhí)行時,計算機可執(zhí)行指令促使處理器實現(xiàn)上述第一方面的任務(wù)請求處理方法。
37、本發(fā)明實施例帶來了以下有益效果:
38、本發(fā)明實施例提供了一種任務(wù)請求處理方法,在接收到任務(wù)請求的情況下,確定任務(wù)請求匹配的任務(wù)限流容器,在任務(wù)限流容器已滿的情況下,確定首個令牌的令牌狀態(tài),將逾期的首個令牌刪除,對任務(wù)限流容器的空間進行回收,生成任務(wù)請求對應(yīng)的令牌信息,并將令牌信息存儲到任務(wù)限流容器中,將具有令牌的任務(wù)請求傳輸至服務(wù)器中,以供服務(wù)器對任務(wù)請求進行處理。該方法通過設(shè)置具有固定容量的任務(wù)限流容器,用于存儲任務(wù)請求對應(yīng)的令牌信息,能夠在任務(wù)請求高并發(fā)的情況下,平滑的控制請求速率,保證服務(wù)器對任務(wù)請求處理時的穩(wěn)定性,在任務(wù)限流容器已滿的情況下,將逾期的首個令牌刪除,對任務(wù)限流容器的空間進行回收,避免了因逾期令牌對任務(wù)限流容器空間的占用,而導(dǎo)致的任務(wù)請求被拒絕的情況出現(xiàn),提高了任務(wù)限流容器的有效性,無需遍歷任務(wù)限流容器中全部令牌,僅對首個令牌的狀態(tài)進行判斷,簡化了計算復(fù)雜度,提高了任務(wù)限流容器的空間回收的效率。
39、本發(fā)明的其他特征和優(yōu)點將在隨后的說明書中闡述,或者,部分特征和優(yōu)點可以從說明書推知或毫無疑義地確定,或者通過實施本發(fā)明的上述技術(shù)即可得知。
40、為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
1.一種任務(wù)請求處理方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在接收到任務(wù)請求的情況下,確定所述任務(wù)請求匹配的任務(wù)限流容器之前,還包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求1或5所述的方法,其特征在于,所述根據(jù)所述任務(wù)限流容器中首個令牌的令牌信息,確定所述首個令牌的令牌狀態(tài),包括:
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述任務(wù)限流容器的狀態(tài)為已滿,包括:
8.一種任務(wù)請求處理裝置,其特征在于,包括:
9.一種電子設(shè)備,其特征在于,包括處理器和存儲器,所述存儲器存儲有能夠被所述處理器執(zhí)行的計算機可執(zhí)行指令,所述處理器執(zhí)行所述計算機可執(zhí)行指令以實現(xiàn)權(quán)利要求1至7任一項所述的任務(wù)請求處理方法。
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令在被處理器調(diào)用和執(zhí)行時,所述計算機可執(zhí)行指令促使處理器實現(xiàn)權(quán)利要求1至7任一項所述的任務(wù)請求處理方法。