本技術(shù)涉及分布式存儲,特別是涉及一種請求處理方法、裝置、電子設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、隨著虛擬化、云計算和大數(shù)據(jù)的發(fā)展,分布式存儲系統(tǒng)成為數(shù)據(jù)存儲的主要方式,分布式存儲系統(tǒng)是一種將數(shù)據(jù)分散存儲到多個存儲服務(wù)器上的數(shù)據(jù)存儲方式。與傳統(tǒng)的集中式存儲相比,分布式存儲系統(tǒng)具有高性能、可擴(kuò)展和成本低等優(yōu)點(diǎn),被廣泛應(yīng)用于云計算、物聯(lián)網(wǎng)、大數(shù)據(jù)等應(yīng)用場景。其中,通過分布式存儲系統(tǒng)的故障檢測功能及時發(fā)現(xiàn)存儲節(jié)點(diǎn)的故障并告警,能夠保證系統(tǒng)的穩(wěn)定性和可靠性。
2、當(dāng)對象存儲設(shè)備處于數(shù)據(jù)重構(gòu)狀態(tài)時,數(shù)據(jù)讀寫請求需要等待放置組進(jìn)行數(shù)據(jù)協(xié)商后才能正常返回。如圖1、圖2所示,現(xiàn)有的請求處理方法如下:
3、(1)當(dāng)對象存儲設(shè)備未處于數(shù)據(jù)重構(gòu)狀態(tài)時,主監(jiān)控節(jié)點(diǎn)只負(fù)責(zé)日常信息的更新維護(hù),信息的查詢獲取等;
4、(2)當(dāng)對象存儲設(shè)備處于數(shù)據(jù)重構(gòu)狀態(tài)時,即放置組需要進(jìn)行數(shù)據(jù)協(xié)商時,由于主監(jiān)控節(jié)點(diǎn)的消息隊(duì)列滿足單線程隊(duì)列先進(jìn)先出處理原則,數(shù)據(jù)讀寫請求需要等待主監(jiān)控節(jié)點(diǎn)處理完數(shù)據(jù)協(xié)商后才能正常返回。此時,數(shù)據(jù)讀寫請求會受主監(jiān)控節(jié)點(diǎn)上其他消息處理的影響,使得整個數(shù)據(jù)讀寫請求的返回時間延長,當(dāng)集群規(guī)模大、節(jié)點(diǎn)數(shù)多時,日常維護(hù)的消息會更多,數(shù)據(jù)讀寫請求處理時間更長,更易造成請求返回超時。
5、因此,亟需提出一種能夠提高請求的處理效率的請求處理方法、裝置、電子設(shè)備和存儲介質(zhì)。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種能夠提高請求的處理效率的請求處理方法、裝置、電子設(shè)備和存儲介質(zhì)。
2、第一方面,提供一種請求處理方法,所述方法包括:
3、接收數(shù)據(jù)讀寫請求,并將所述數(shù)據(jù)讀寫請求發(fā)送至目標(biāo)對象存儲設(shè)備;
4、響應(yīng)于所述目標(biāo)對象存儲設(shè)備當(dāng)前處于數(shù)據(jù)重構(gòu)狀態(tài),在監(jiān)控節(jié)點(diǎn)上創(chuàng)建工作消息隊(duì)列和等待消息隊(duì)列,并記錄工作消息隊(duì)列的當(dāng)前長度;
5、響應(yīng)于所述工作消息隊(duì)列的當(dāng)前長度等于工作消息隊(duì)列長度最大值的一半,且當(dāng)前的工作消息隊(duì)列中不包括維護(hù)表更新消息,判斷下一個進(jìn)入所述工作消息隊(duì)列中的消息是否為所述維護(hù)表更新消息;
6、響應(yīng)于下一個進(jìn)入所述工作消息隊(duì)列中的消息為其他消息,將所述其他消息放入所述等待消息隊(duì)列中,并判斷再下一個進(jìn)入所述工作消息隊(duì)列中的消息是否為所述維護(hù)表更新消息,其中,所述其他消息包括維護(hù)表更新消息以外的消息;
7、響應(yīng)于再下一個進(jìn)入所述工作消息隊(duì)列中的消息為所述維護(hù)表更新消息,根據(jù)所述維護(hù)表更新消息,對所述監(jiān)控節(jié)點(diǎn)中的對象存儲設(shè)備維護(hù)表進(jìn)行更新;
8、將所述維護(hù)表更新消息返回至所述目標(biāo)對象存儲設(shè)備,并通過所述目標(biāo)對象存儲設(shè)備處理所述數(shù)據(jù)讀寫請求。
9、在其中一個實(shí)施例中,所述目標(biāo)對象存儲設(shè)備通過以下方式確定:
10、所述目標(biāo)對象存儲設(shè)備通過以下方式確定:
11、接收數(shù)據(jù)讀取請求,其中,所述數(shù)據(jù)讀取請求包括目標(biāo)數(shù)據(jù)的存儲位置信息;
12、根據(jù)所述目標(biāo)數(shù)據(jù)的存儲位置信息,生成第一查詢請求,并將所述第一查詢請求發(fā)送至元數(shù)據(jù)服務(wù)器;
13、接收所述元數(shù)據(jù)服務(wù)器根據(jù)所述第一查詢請求返回的數(shù)據(jù)池標(biāo)識信息;
14、根據(jù)所述數(shù)據(jù)池標(biāo)識信息,確定至少一個對象存儲設(shè)備的位置信息,其中,所述至少一個對象存儲設(shè)備存儲有所述目標(biāo)數(shù)據(jù);
15、根據(jù)所述至少一個對象存儲設(shè)備的位置信息,向所述至少一個對象存儲設(shè)備發(fā)送第二查詢請求;
16、接收每個對象存儲設(shè)備根據(jù)所述第二查詢請求返回的在預(yù)設(shè)時間段內(nèi)待處理和處理中的數(shù)據(jù)讀取操作總數(shù);
17、將所述至少一個對象存儲設(shè)備在所述預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)讀取操作總數(shù)除以預(yù)設(shè)時間段的時間長度,得到所述至少一個對象存儲設(shè)備在所述預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)讀取平均次數(shù);
18、根據(jù)所述每個對象存儲設(shè)備在預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)讀取平均次數(shù),確定所述目標(biāo)對象存儲設(shè)備。
19、在其中一個實(shí)施例中,所述根據(jù)所述每個對象存儲設(shè)備在預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)讀取平均次數(shù),確定所述目標(biāo)對象存儲設(shè)備,包括:
20、根據(jù)所述每個對象存儲設(shè)備在預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)讀取平均次數(shù),確定所述每個對象存儲設(shè)備在預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)讀取平均次數(shù)權(quán)重;
21、根據(jù)所述每個對象存儲設(shè)備在預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)讀取平均次數(shù)權(quán)重,確定所述至少一個對象存儲設(shè)備的讀取操作代價值;
22、根據(jù)所述至少一個對象存儲設(shè)備的讀取操作代價值,確定所述目標(biāo)對象存儲設(shè)備。
23、在其中一個實(shí)施例中,所述根據(jù)所述至少一個對象存儲設(shè)備的讀取操作代價值,確定所述目標(biāo)對象存儲設(shè)備,包括:
24、將所述至少一個對象存儲設(shè)備的讀取操作代價值由小到大進(jìn)行排序,生成所述至少一個對象存儲設(shè)備的排序結(jié)果;
25、根據(jù)所述至少一個對象存儲設(shè)備的排序結(jié)果,將排名第一的讀取操作代價值對應(yīng)的對象存儲設(shè)備確定為所述目標(biāo)對象存儲設(shè)備。
26、在其中一個實(shí)施例中,所述方法還包括:
27、根據(jù)所述數(shù)據(jù)讀取請求確定所述目標(biāo)數(shù)據(jù)對應(yīng)的放置組標(biāo)識信息;
28、所述根據(jù)所述數(shù)據(jù)池標(biāo)識信息,確定至少一個對象存儲設(shè)備的位置信息,包括:
29、根據(jù)所述數(shù)據(jù)池標(biāo)識信息和放置組標(biāo)識信息,確定所述放置組的目標(biāo)標(biāo)識信息;
30、根據(jù)數(shù)據(jù)分發(fā)算法對所述放置組的目標(biāo)標(biāo)識信息進(jìn)行計算,確定所述至少一個對象存儲設(shè)備的位置信息。
31、在其中一個實(shí)施例中,所述目標(biāo)對象存儲設(shè)備通過以下方式確定:
32、接收數(shù)據(jù)寫入請求,其中,所述數(shù)據(jù)寫入請求包括目標(biāo)數(shù)據(jù);
33、按照每個對象的大小,將所述目標(biāo)數(shù)據(jù)分割成至少一個對象;
34、根據(jù)數(shù)據(jù)分發(fā)算法將每個對象映射到對應(yīng)的放置組中,其中,一個對象只能映射到一個放置組中;
35、根據(jù)所述數(shù)據(jù)分發(fā)算法將每個放置組映射到至少一個目標(biāo)對象存儲設(shè)備中。
36、在其中一個實(shí)施例中,所述方法還包括:
37、接收至少一個客戶端發(fā)送的數(shù)據(jù)讀寫請求,其中,所述數(shù)據(jù)讀寫請求中包括所述至少一個客戶端的延時值和讀寫頻率值;
38、將延時值小于延遲閾值的客戶端作為第一類型客戶端,同時將延時值大于等于延遲閾值的客戶端作為第二類型客戶端;
39、根據(jù)所述第一類型客戶端的讀寫頻率值,確定所述第一類型客戶端的請求處理順序,其中,所述第一類型客戶端的讀寫頻率值越大,請求處理優(yōu)先級越高;
40、根據(jù)所述第二類型客戶端的延時值,確定所述第二類型客戶端的請求處理順序,其中,所述第二類型客戶端的延時值越大,請求處理優(yōu)先級越高。
41、第二方面,提供了一種請求處理裝置,所述裝置包括:
42、接收及傳輸模塊,所述接收及傳輸模塊用于接收數(shù)據(jù)讀寫請求,并將所述數(shù)據(jù)讀寫請求發(fā)送至目標(biāo)對象存儲設(shè)備;
43、創(chuàng)建及記錄模塊,所述創(chuàng)建及記錄模塊用于響應(yīng)于所述目標(biāo)對象存儲設(shè)備當(dāng)前處于數(shù)據(jù)重構(gòu)狀態(tài),在監(jiān)控節(jié)點(diǎn)上創(chuàng)建工作消息隊(duì)列和等待消息隊(duì)列,并記錄工作消息隊(duì)列的當(dāng)前長度;
44、判斷模塊,所述判斷模塊用于響應(yīng)于所述工作消息隊(duì)列的當(dāng)前長度等于工作消息隊(duì)列長度最大值的一半,且當(dāng)前的工作消息隊(duì)列中不包括維護(hù)表更新消息,判斷下一個進(jìn)入所述工作消息隊(duì)列中的消息是否為所述維護(hù)表更新消息;
45、存儲及判斷模塊,所述存儲及判斷模塊用于響應(yīng)于下一個進(jìn)入所述工作消息隊(duì)列中的消息為其他消息,將所述其他消息放入所述等待消息隊(duì)列中,并判斷再下一個進(jìn)入所述工作消息隊(duì)列中的消息是否為所述維護(hù)表更新消息,其中,所述其他消息包括維護(hù)表更新消息以外的消息;
46、判斷及更新模塊,所述判斷及更新模塊用于響應(yīng)于再下一個進(jìn)入所述工作消息隊(duì)列中的消息為所述維護(hù)表更新消息,根據(jù)所述維護(hù)表更新消息,對所述監(jiān)控節(jié)點(diǎn)中的對象存儲設(shè)備維護(hù)表進(jìn)行更新;
47、傳輸及處理模塊,所述傳輸及處理模塊用于將所述維護(hù)表更新消息返回至所述目標(biāo)對象存儲設(shè)備,并通過所述目標(biāo)對象存儲設(shè)備處理所述數(shù)據(jù)讀寫請求。
48、第三方面,提供了一種電子設(shè)備,所述電子設(shè)備包括一個或多個處理器;以及與所述一個或多個處理器關(guān)聯(lián)的存儲器,所述存儲器用于存儲程序指令,所述程序指令在被所述一個或多個處理器讀取執(zhí)行時,執(zhí)行如上述第一方面任意一項(xiàng)所述方法的步驟。
49、第四方面,提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時,執(zhí)行如上述第一方面任意一項(xiàng)所述方法的步驟。
50、第五方面,提供了一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時,實(shí)現(xiàn)如上述第一方面任意一項(xiàng)所述方法的步驟。
51、上述請求處理方法、裝置、電子設(shè)備和存儲介質(zhì),通在監(jiān)控節(jié)點(diǎn)上設(shè)置工作消息隊(duì)列和等待消息隊(duì)列;當(dāng)目標(biāo)對象存儲設(shè)備處于數(shù)據(jù)重構(gòu)狀態(tài)時,記錄工作消息隊(duì)列的當(dāng)前長度;當(dāng)工作消息隊(duì)列的當(dāng)前長度為工作消息隊(duì)列長度最大值的一半,且當(dāng)前的工作消息隊(duì)列中不包括維護(hù)表更新消息時,判斷下一個進(jìn)入工作消息隊(duì)列中的消息是否為維護(hù)表更新消息;如果下一個進(jìn)入工作消息隊(duì)列中的消息是其他消息,將其他消息放入等待消息隊(duì)列中;如果再下一個進(jìn)入工作消息隊(duì)列中的消息是維護(hù)表更新消息,對監(jiān)控節(jié)點(diǎn)中的對象存儲設(shè)備維護(hù)表進(jìn)行更新;通過目標(biāo)對象存儲設(shè)備處理數(shù)據(jù)讀寫請求,提高了請求的處理效率。