本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)處理,也可用于金融領(lǐng)域,尤其涉及一種任務(wù)處理方法及裝置。
背景技術(shù):
1、在分布式微服務(wù)技術(shù)生態(tài)體系中,web容器在處理業(yè)務(wù)io的線程池配置都是默認(rèn)的。不同的業(yè)務(wù)類型處理,需要不一樣的配置以及可靠的監(jiān)控系統(tǒng),維持系統(tǒng)的穩(wěn)定qps。一般在流量驟然增加的情況下,線程池阻塞隊列中存在大量的任務(wù)堆積,這時,服務(wù)端在處理任務(wù)時有延遲,導(dǎo)致客戶端響應(yīng)存在大量的超時而被熔斷,從而web服務(wù)器有效qps的會急劇下降,在極端情況下,系統(tǒng)的有效qps甚至?xí)档搅恪?/p>
2、例如,在活動大促期間用戶流量持續(xù)突增,當(dāng)web服務(wù)器的線程池中活躍的線程數(shù)小于核心線程數(shù)時,socket延遲任務(wù)隊列沒有積壓,服務(wù)端響應(yīng)及時,系統(tǒng)qps相當(dāng)穩(wěn)定;在請求量持續(xù)增加的情況下,線程池中活躍的線程數(shù)等于最大線程數(shù),在短時間內(nèi),socket延遲隊列出現(xiàn)大量任務(wù)積壓。
3、這時,隊列尾部的socket請求在被處理時,有很長的時間延遲,導(dǎo)致整個系統(tǒng)響應(yīng)的耗時延長。而用戶請求一般都有熔斷超時設(shè)置,當(dāng)?shù)却瑫r但在服務(wù)器中,處于等待的隊列中的socket用戶請求,同樣會被線程池處理,消耗系統(tǒng)資源;執(zhí)行任務(wù)隊列已超時的請求時,若用戶請求還在持續(xù)增加,這些用戶的socket請求同樣會排在隊尾,導(dǎo)致這些新請求也會超時,所以在流量持續(xù)突發(fā)的這段時間內(nèi),請求的有效qps會下降很多,甚至?xí)档搅恪?/p>
4、本部分旨在為權(quán)利要求書中陳述的本發(fā)明實施例提供背景或上下文。此處的描述不因為包括在本部分中就承認(rèn)是現(xiàn)有技術(shù)。
技術(shù)實現(xiàn)思路
1、本發(fā)明實施例提供一種任務(wù)處理方法,該方法包括:
2、預(yù)先調(diào)用預(yù)設(shè)數(shù)量資源,并將所述預(yù)設(shè)數(shù)量資源均分至每個任務(wù)隊列,將去除所述預(yù)設(shè)數(shù)量資源的資源池中的剩余資源分配至第一類型任務(wù)隊列;
3、獲取任務(wù)加入第一類型任務(wù)隊列中的入隊等待時間;
4、若確定所述入隊等待時間超過預(yù)設(shè)超時閾值,則將所述任務(wù)添加至第二類型任務(wù)隊列中;
5、其中,所述第一類型任務(wù)隊列處理任務(wù)的速度快于所述第二類型任務(wù)隊列,所述第二類型任務(wù)隊列為多個并行設(shè)置的任務(wù)隊列,所述第一類型任務(wù)隊列分配有動態(tài)變化的資源,所述第二類型任務(wù)隊列分配有固定的靜態(tài)資源;
6、若監(jiān)測到所述第一類型任務(wù)隊列中不存在待處理任務(wù),則從所述第二類型任務(wù)隊列中調(diào)取尚未被所述第二類型任務(wù)隊列處理的目標(biāo)任務(wù),并將所述目標(biāo)任務(wù)添加至所述第一類型任務(wù)隊列中。
7、其中,所述若確定所述入隊等待時間超過預(yù)設(shè)超時閾值,則將所述任務(wù)添加至第二類型任務(wù)隊列中,包括:
8、為每個入隊等待時間超過預(yù)設(shè)超時閾值的任務(wù)按照時間先后順序分配任務(wù)編號,根據(jù)預(yù)先配置的預(yù)設(shè)任務(wù)編號與預(yù)設(shè)任務(wù)隊列編號之間的映射關(guān)系,將與當(dāng)前任務(wù)編號對應(yīng)的任務(wù)添加至一個對應(yīng)編號的任務(wù)隊列中。
9、其中,所述從所述第二類型任務(wù)隊列中調(diào)取尚未被所述第二類型任務(wù)隊列處理的目標(biāo)任務(wù),包括:
10、獲取在每個任務(wù)隊列中的當(dāng)前處理任務(wù),將每個當(dāng)前處理任務(wù)之后的預(yù)設(shè)數(shù)量的批量任務(wù)作為所述目標(biāo)任務(wù)。
11、其中,所述方法還包括:
12、周期性獲取每個任務(wù)隊列的隊列狀態(tài);
13、根據(jù)每個任務(wù)隊列的隊列狀態(tài)和已分配至每個任務(wù)隊列的資源,重新分配資源至每個任務(wù)隊列。
14、其中,所述根據(jù)每個任務(wù)隊列的隊列狀態(tài)和已分配至每個任務(wù)隊列的資源,重新分配資源至每個任務(wù)隊列,包括:
15、根據(jù)每個任務(wù)隊列的隊列狀態(tài)確定每個任務(wù)隊列各自對應(yīng)的任務(wù)處理平均耗時時長;
16、根據(jù)所有任務(wù)隊列的任務(wù)處理平均耗時時長的平均值與每個任務(wù)隊列各自對應(yīng)的任務(wù)處理平均耗時時長的比較結(jié)果,確定向每個任務(wù)隊列重新分配的資源量。
17、其中,所述方法還包括:
18、周期性獲取每個任務(wù)隊列中分別對應(yīng)的剩余任務(wù)量;
19、根據(jù)所有任務(wù)隊列的總剩余任務(wù)量的平均值與每個任務(wù)隊列中分別對應(yīng)的剩余任務(wù)量的比較結(jié)果,確定向每個任務(wù)隊列重新分配的任務(wù)量。
20、其中,所述方法還包括:
21、周期性監(jiān)測第一類型任務(wù)隊列的任務(wù)隊列指標(biāo)參數(shù);
22、若確定存在至少一類任務(wù)隊列指標(biāo)參數(shù)異常,則根據(jù)異常指標(biāo)類型和所述剩余資源優(yōu)化所述第一類型任務(wù)隊列的任務(wù)隊列參數(shù)。
23、本發(fā)明實施例還提供一種任務(wù)處理裝置,該裝置包括:
24、分配單元,用于預(yù)先調(diào)用預(yù)設(shè)數(shù)量資源,并將所述預(yù)設(shè)數(shù)量資源均分至每個任務(wù)隊列,將去除所述預(yù)設(shè)數(shù)量資源的資源池中的剩余資源分配至第一類型任務(wù)隊列;
25、獲取單元,用于獲取任務(wù)加入第一類型任務(wù)隊列中的入隊等待時間;
26、添加單元,用于若確定所述入隊等待時間超過預(yù)設(shè)超時閾值,則將所述任務(wù)添加至第二類型任務(wù)隊列中;
27、其中,所述第一類型任務(wù)隊列處理任務(wù)的速度快于所述第二類型任務(wù)隊列,所述第二類型任務(wù)隊列為多個并行設(shè)置的任務(wù)隊列,所述第一類型任務(wù)隊列分配有動態(tài)變化的資源,所述第二類型任務(wù)隊列分配有固定的靜態(tài)資源;
28、處理單元,用于若監(jiān)測到所述第一類型任務(wù)隊列中不存在待處理任務(wù),則從所述第二類型任務(wù)隊列中調(diào)取尚未被所述第二類型任務(wù)隊列處理的目標(biāo)任務(wù),并將所述目標(biāo)任務(wù)添加至所述第一類型任務(wù)隊列中。
29、其中,所述添加單元具體用于:
30、為每個入隊等待時間超過預(yù)設(shè)超時閾值的任務(wù)按照時間先后順序分配任務(wù)編號,根據(jù)預(yù)先配置的預(yù)設(shè)任務(wù)編號與預(yù)設(shè)任務(wù)隊列編號之間的映射關(guān)系,將與當(dāng)前任務(wù)編號對應(yīng)的任務(wù)添加至一個對應(yīng)編號的任務(wù)隊列中。
31、其中,所述處理單元具體用于:
32、獲取在每個任務(wù)隊列中的當(dāng)前處理任務(wù),將每個當(dāng)前處理任務(wù)之后的預(yù)設(shè)數(shù)量的批量任務(wù)作為所述目標(biāo)任務(wù)。
33、其中,所述裝置還用于:
34、周期性獲取每個任務(wù)隊列的隊列狀態(tài);
35、根據(jù)每個任務(wù)隊列的隊列狀態(tài)和已分配至每個任務(wù)隊列的資源,重新分配資源至每個任務(wù)隊列。
36、其中,所述裝置還具體用于:
37、根據(jù)每個任務(wù)隊列的隊列狀態(tài)確定每個任務(wù)隊列各自對應(yīng)的任務(wù)處理平均耗時時長;
38、根據(jù)所有任務(wù)隊列的任務(wù)處理平均耗時時長的平均值與每個任務(wù)隊列各自對應(yīng)的任務(wù)處理平均耗時時長的比較結(jié)果,確定向每個任務(wù)隊列重新分配的資源量。
39、將去除所述預(yù)設(shè)數(shù)量資源的資源池中的剩余資源分配至第一類型任務(wù)隊列本發(fā)明實施例還提供一種計算機設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如下方法:
40、預(yù)先調(diào)用預(yù)設(shè)數(shù)量資源,并將所述預(yù)設(shè)數(shù)量資源均分至每個任務(wù)隊列,將去除所述預(yù)設(shè)數(shù)量資源的資源池中的剩余資源分配至第一類型任務(wù)隊列;
41、獲取任務(wù)加入第一類型任務(wù)隊列中的入隊等待時間;
42、若確定所述入隊等待時間超過預(yù)設(shè)超時閾值,則將所述任務(wù)添加至第二類型任務(wù)隊列中;
43、其中,所述第一類型任務(wù)隊列處理任務(wù)的速度快于所述第二類型任務(wù)隊列,所述第二類型任務(wù)隊列為多個并行設(shè)置的任務(wù)隊列,所述第一類型任務(wù)隊列分配有動態(tài)變化的資源,所述第二類型任務(wù)隊列分配有固定的靜態(tài)資源;
44、若監(jiān)測到所述第一類型任務(wù)隊列中不存在待處理任務(wù),則從所述第二類型任務(wù)隊列中調(diào)取尚未被所述第二類型任務(wù)隊列處理的目標(biāo)任務(wù),并將所述目標(biāo)任務(wù)添加至所述第一類型任務(wù)隊列中。
45、本發(fā)明實施例還提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如下方法:
46、預(yù)先調(diào)用預(yù)設(shè)數(shù)量資源,并將所述預(yù)設(shè)數(shù)量資源均分至每個任務(wù)隊列,將去除所述預(yù)設(shè)數(shù)量資源的資源池中的剩余資源分配至第一類型任務(wù)隊列;
47、獲取任務(wù)加入第一類型任務(wù)隊列中的入隊等待時間;
48、若確定所述入隊等待時間超過預(yù)設(shè)超時閾值,則將所述任務(wù)添加至第二類型任務(wù)隊列中;
49、其中,所述第一類型任務(wù)隊列處理任務(wù)的速度快于所述第二類型任務(wù)隊列,所述第二類型任務(wù)隊列為多個并行設(shè)置的任務(wù)隊列,所述第一類型任務(wù)隊列分配有動態(tài)變化的資源,所述第二類型任務(wù)隊列分配有固定的靜態(tài)資源;
50、若監(jiān)測到所述第一類型任務(wù)隊列中不存在待處理任務(wù),則從所述第二類型任務(wù)隊列中調(diào)取尚未被所述第二類型任務(wù)隊列處理的目標(biāo)任務(wù),并將所述目標(biāo)任務(wù)添加至所述第一類型任務(wù)隊列中。
51、本發(fā)明實施例還提供一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如下方法:
52、預(yù)先調(diào)用預(yù)設(shè)數(shù)量資源,并將所述預(yù)設(shè)數(shù)量資源均分至每個任務(wù)隊列,將去除所述預(yù)設(shè)數(shù)量資源的資源池中的剩余資源分配至第一類型任務(wù)隊列;
53、獲取任務(wù)加入第一類型任務(wù)隊列中的入隊等待時間;
54、若確定所述入隊等待時間超過預(yù)設(shè)超時閾值,則將所述任務(wù)添加至第二類型任務(wù)隊列中;
55、其中,所述第一類型任務(wù)隊列處理任務(wù)的速度快于所述第二類型任務(wù)隊列,所述第二類型任務(wù)隊列為多個并行設(shè)置的任務(wù)隊列,所述第一類型任務(wù)隊列分配有動態(tài)變化的資源,所述第二類型任務(wù)隊列分配有固定的靜態(tài)資源;
56、若監(jiān)測到所述第一類型任務(wù)隊列中不存在待處理任務(wù),則從所述第二類型任務(wù)隊列中調(diào)取尚未被所述第二類型任務(wù)隊列處理的目標(biāo)任務(wù),并將所述目標(biāo)任務(wù)添加至所述第一類型任務(wù)隊列中。
57、本發(fā)明實施例提供的任務(wù)處理方法及裝置,預(yù)先調(diào)用預(yù)設(shè)數(shù)量資源,并將所述預(yù)設(shè)數(shù)量資源均分至每個任務(wù)隊列,將去除所述預(yù)設(shè)數(shù)量資源的資源池中的剩余資源分配至第一類型任務(wù)隊列;獲取任務(wù)加入第一類型任務(wù)隊列中的入隊等待時間;若確定所述入隊等待時間超過預(yù)設(shè)超時閾值,則將所述任務(wù)添加至第二類型任務(wù)隊列中;其中,所述第一類型任務(wù)隊列處理任務(wù)的速度快于所述第二類型任務(wù)隊列,所述第二類型任務(wù)隊列為多個并行設(shè)置的任務(wù)隊列,所述第一類型任務(wù)隊列分配有動態(tài)變化的資源,所述第二類型任務(wù)隊列分配有固定的靜態(tài)資源;若監(jiān)測到所述第一類型任務(wù)隊列中不存在待處理任務(wù),則從所述第二類型任務(wù)隊列中調(diào)取尚未被所述第二類型任務(wù)隊列處理的目標(biāo)任務(wù),并將所述目標(biāo)任務(wù)添加至所述第一類型任務(wù)隊列中,能夠提高任務(wù)處理效率。