本發(fā)明涉及計(jì)算機(jī),尤其涉及數(shù)據(jù)庫(kù),更具體地,涉及一種基于分布式數(shù)據(jù)庫(kù)的請(qǐng)求處理方法及裝置。
背景技術(shù):
1、在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,處理查詢請(qǐng)求時(shí)確保系統(tǒng)穩(wěn)定性和可靠性是至關(guān)重要的。然而,在高并發(fā)場(chǎng)景中,如果多個(gè)用戶或應(yīng)用程序同時(shí)提交大量查詢請(qǐng)求,或由于某些包含復(fù)雜邏輯的查詢請(qǐng)求會(huì)導(dǎo)致系統(tǒng)負(fù)載過高,在系統(tǒng)負(fù)載過高的情況下可能會(huì)造成數(shù)據(jù)庫(kù)系統(tǒng)的響應(yīng)延遲增加、甚至系統(tǒng)崩潰,從而影響數(shù)據(jù)庫(kù)服務(wù)的穩(wěn)定性和可靠性。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明提供了一種基于分布式數(shù)據(jù)庫(kù)的請(qǐng)求處理方法及裝置。
2、本發(fā)明的一個(gè)方面提供了一種基于分布式數(shù)據(jù)庫(kù)的請(qǐng)求處理方法,包括:響應(yīng)于用戶對(duì)分布式數(shù)據(jù)庫(kù)的訪問請(qǐng)求,根據(jù)上述訪問請(qǐng)求包括的查詢語(yǔ)句,確定執(zhí)行樹結(jié)構(gòu),其中,上述執(zhí)行樹結(jié)構(gòu)包括至少一個(gè)執(zhí)行節(jié)點(diǎn);在至少一個(gè)上述執(zhí)行節(jié)點(diǎn)中目標(biāo)執(zhí)行節(jié)點(diǎn)的操作類型為數(shù)據(jù)遷移操作類型的情況下,在上述執(zhí)行樹結(jié)構(gòu)中為上述目標(biāo)執(zhí)行節(jié)點(diǎn)創(chuàng)建前置節(jié)點(diǎn),得到目標(biāo)執(zhí)行樹結(jié)構(gòu),其中,上述前置節(jié)點(diǎn)用于讀取與上述目標(biāo)執(zhí)行節(jié)點(diǎn)對(duì)應(yīng)的待遷移數(shù)據(jù);在上述前置節(jié)點(diǎn)的數(shù)目小于或等于節(jié)點(diǎn)數(shù)目閾值的情況下,基于每個(gè)上述前置節(jié)點(diǎn)讀取的數(shù)據(jù)量、每個(gè)上述執(zhí)行節(jié)點(diǎn)執(zhí)行上述查詢語(yǔ)句的資源消耗量,確定上述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià);在上述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià)大于或者等于資源消耗閾值的情況下,基于限流策略對(duì)上述訪問請(qǐng)求進(jìn)行限流處理,其中,上述資源消耗閾值是基于當(dāng)前時(shí)刻上述分布式數(shù)據(jù)庫(kù)的剩余資源量確定的。
3、根據(jù)本發(fā)明的實(shí)施例,上述方法還包括:在上述前置節(jié)點(diǎn)的數(shù)目大于上述節(jié)點(diǎn)數(shù)目閾值的情況下,基于上述限流策略對(duì)上述訪問請(qǐng)求進(jìn)行限流處理。
4、根據(jù)本發(fā)明的實(shí)施例,上述基于每個(gè)上述前置節(jié)點(diǎn)讀取的數(shù)據(jù)量、每個(gè)上述執(zhí)行節(jié)點(diǎn)執(zhí)行上述查詢語(yǔ)句的資源消耗量,確定上述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià)包括:在上述前置節(jié)點(diǎn)的數(shù)目小于或者等于上述節(jié)點(diǎn)數(shù)目閾值的情況下,基于每個(gè)上述前置節(jié)點(diǎn)讀取的數(shù)據(jù)量和上述前置節(jié)點(diǎn)的數(shù)目,確定上述前置節(jié)點(diǎn)執(zhí)行數(shù)據(jù)讀取操作的執(zhí)行代價(jià);在上述前置節(jié)點(diǎn)執(zhí)行數(shù)據(jù)讀取操作的執(zhí)行代價(jià)小于或者等于上述資源消耗閾值的情況下,基于上述前置節(jié)點(diǎn)執(zhí)行數(shù)據(jù)讀取操作的執(zhí)行代價(jià)、上述執(zhí)行節(jié)點(diǎn)的數(shù)目以及每個(gè)上述執(zhí)行節(jié)點(diǎn)執(zhí)行查詢操作的資源消耗量,確定上述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià)。
5、根據(jù)本發(fā)明的實(shí)施例,上述方法還包括:在上述前置節(jié)點(diǎn)執(zhí)行數(shù)據(jù)讀取操作的執(zhí)行代價(jià)大于上述資源消耗閾值的情況下,基于上述限流策略對(duì)上述訪問請(qǐng)求進(jìn)行限流處理。
6、根據(jù)本發(fā)明的實(shí)施例,上述基于上述限流策略對(duì)上述訪問請(qǐng)求進(jìn)行限流處理包括:將上述訪問請(qǐng)求添加至等待隊(duì)列中;或,生成拒絕執(zhí)行上述訪問請(qǐng)求的指令,以對(duì)上述訪問請(qǐng)求進(jìn)行限流處理。
7、根據(jù)本發(fā)明的實(shí)施例,上述響應(yīng)于用戶對(duì)分布式數(shù)據(jù)庫(kù)的訪問請(qǐng)求,根據(jù)上述訪問請(qǐng)求包括的查詢語(yǔ)句,確定執(zhí)行樹結(jié)構(gòu)包括:對(duì)上述查詢語(yǔ)句進(jìn)行解析,得到多個(gè)查詢語(yǔ)句子序列以及多個(gè)上述查詢語(yǔ)句子序列之間的查詢邏輯,其中,每個(gè)上述查詢語(yǔ)句子序列表征一個(gè)查詢操作或查詢條件;將表征上述查詢操作的查詢語(yǔ)句子序列分別映射到至少一個(gè)上述執(zhí)行節(jié)點(diǎn)上;基于多個(gè)上述查詢語(yǔ)句子序列之間的查詢邏輯,將至少一個(gè)上述執(zhí)行節(jié)點(diǎn)連接為上述執(zhí)行樹結(jié)構(gòu)。
8、根據(jù)本發(fā)明的實(shí)施例,上述在至少一個(gè)上述執(zhí)行節(jié)點(diǎn)中目標(biāo)執(zhí)行節(jié)點(diǎn)的操作類型為數(shù)據(jù)遷移操作類型的情況下,在上述執(zhí)行樹結(jié)構(gòu)中為上述目標(biāo)執(zhí)行節(jié)點(diǎn)創(chuàng)建前置節(jié)點(diǎn),得到目標(biāo)執(zhí)行樹結(jié)構(gòu)包括:在至少一個(gè)上述執(zhí)行節(jié)點(diǎn)中的目標(biāo)執(zhí)行節(jié)點(diǎn)的操作類型為數(shù)據(jù)遷移操作類型的情況下,基于數(shù)據(jù)遷移操作的操作順序,確定上述前置節(jié)點(diǎn)的創(chuàng)建位置;基于上述前置節(jié)點(diǎn)的創(chuàng)建位置,在上述執(zhí)行樹結(jié)構(gòu)中為上述目標(biāo)執(zhí)行節(jié)點(diǎn)創(chuàng)建上述前置節(jié)點(diǎn);建立上述前置節(jié)點(diǎn)與上述目標(biāo)執(zhí)行節(jié)點(diǎn)之間的連接關(guān)系;基于上述前置節(jié)點(diǎn)以及上述連接關(guān)系,對(duì)上述執(zhí)行樹結(jié)構(gòu)進(jìn)行更新,得到上述目標(biāo)執(zhí)行樹結(jié)構(gòu)。
9、根據(jù)本發(fā)明的實(shí)施例,上述方法還包括:對(duì)上述執(zhí)行樹結(jié)構(gòu)進(jìn)行遍歷,得到至少一個(gè)上述執(zhí)行節(jié)點(diǎn)各自的操作類型;將上述操作類型為數(shù)據(jù)遷移操作類型的執(zhí)行節(jié)點(diǎn)確定為目標(biāo)執(zhí)行節(jié)點(diǎn)。
10、根據(jù)本發(fā)明的實(shí)施例,上述方法還包括:在上述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià)小于上述資源消耗閾值的情況下,按照上述目標(biāo)執(zhí)行樹結(jié)構(gòu)執(zhí)行上述查詢語(yǔ)句。
11、本發(fā)明的另一個(gè)方面提供了一種基于分布式數(shù)據(jù)庫(kù)的請(qǐng)求處理裝置,包括:第一確定模塊,用于響應(yīng)于用戶對(duì)分布式數(shù)據(jù)庫(kù)的訪問請(qǐng)求,根據(jù)上述訪問請(qǐng)求包括的查詢語(yǔ)句,確定執(zhí)行樹結(jié)構(gòu),其中,上述執(zhí)行樹結(jié)構(gòu)包括至少一個(gè)執(zhí)行節(jié)點(diǎn);第二確定模塊,在至少一個(gè)上述執(zhí)行節(jié)點(diǎn)中目標(biāo)執(zhí)行節(jié)點(diǎn)的操作類型為數(shù)據(jù)遷移操作類型的情況下,在上述執(zhí)行樹結(jié)構(gòu)中為上述目標(biāo)執(zhí)行節(jié)點(diǎn)創(chuàng)建前置節(jié)點(diǎn),得到目標(biāo)執(zhí)行樹結(jié)構(gòu),其中,上述前置節(jié)點(diǎn)用于讀取與上述目標(biāo)執(zhí)行節(jié)點(diǎn)對(duì)應(yīng)的待遷移數(shù)據(jù);第三確定模塊,用于在上述前置節(jié)點(diǎn)的數(shù)目小于或等于節(jié)點(diǎn)數(shù)目閾值的情況下,基于每個(gè)上述前置節(jié)點(diǎn)讀取的數(shù)據(jù)量、每個(gè)上述執(zhí)行節(jié)點(diǎn)執(zhí)行上述查詢語(yǔ)句的資源消耗量,確定上述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià);第一限流模塊,用于在上述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià)大于或者等于資源消耗閾值的情況下,基于限流策略對(duì)上述訪問請(qǐng)求進(jìn)行限流處理,其中,上述資源消耗閾值是基于當(dāng)前時(shí)刻上述分布式數(shù)據(jù)庫(kù)的剩余資源量確定的。
12、本發(fā)明的另一個(gè)方面提供了一種電子設(shè)備,包括:一個(gè)或多個(gè)處理器;存儲(chǔ)器,用于存儲(chǔ)一個(gè)或多個(gè)程序,其中,當(dāng)上述一個(gè)或多個(gè)程序被上述一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得上述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如上上述的方法。
13、本發(fā)明的另一方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,上述指令在被執(zhí)行時(shí)用于實(shí)現(xiàn)如上上述的方法。
14、本發(fā)明的另一方面提供了一種計(jì)算機(jī)程序產(chǎn)品,上述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可執(zhí)行指令,上述指令在被執(zhí)行時(shí)用于實(shí)現(xiàn)如上上述的方法。
15、根據(jù)本發(fā)明的實(shí)施例,根據(jù)訪問請(qǐng)求包括的查詢語(yǔ)句構(gòu)建執(zhí)行樹結(jié)構(gòu),并在執(zhí)行樹結(jié)構(gòu)中為目標(biāo)執(zhí)行節(jié)點(diǎn)創(chuàng)建前置節(jié)點(diǎn),并將前置節(jié)點(diǎn)的數(shù)目與節(jié)點(diǎn)數(shù)目閾值進(jìn)行比較,以防止前置節(jié)點(diǎn)過多而導(dǎo)致系統(tǒng)過載;在前置節(jié)點(diǎn)的數(shù)目滿足條件的情況下,對(duì)目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià)進(jìn)行評(píng)估,以合理分配數(shù)據(jù)庫(kù)資源,在超出資源消耗閾值的情況下基于限流策略對(duì)訪問請(qǐng)求進(jìn)行限流處理,從而有效地控制數(shù)據(jù)庫(kù)的訪問請(qǐng)求流量,防止訪問請(qǐng)求一次性消耗大量資源而導(dǎo)致系統(tǒng)崩潰,提高數(shù)據(jù)庫(kù)的穩(wěn)定性和可靠性。
1.一種基于分布式數(shù)據(jù)庫(kù)的請(qǐng)求處理方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于每個(gè)所述前置節(jié)點(diǎn)讀取的數(shù)據(jù)量、每個(gè)所述執(zhí)行節(jié)點(diǎn)執(zhí)行所述查詢語(yǔ)句的資源消耗量,確定所述目標(biāo)執(zhí)行樹結(jié)構(gòu)的執(zhí)行代價(jià)包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括:
5.根據(jù)權(quán)利要求1、2或4所述的方法,其特征在于,所述基于所述限流策略對(duì)所述訪問請(qǐng)求進(jìn)行限流處理包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述響應(yīng)于用戶對(duì)分布式數(shù)據(jù)庫(kù)的訪問請(qǐng)求,根據(jù)所述訪問請(qǐng)求包括的查詢語(yǔ)句,確定執(zhí)行樹結(jié)構(gòu)包括:
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在至少一個(gè)所述執(zhí)行節(jié)點(diǎn)中目標(biāo)執(zhí)行節(jié)點(diǎn)的操作類型為數(shù)據(jù)遷移操作類型的情況下,在所述執(zhí)行樹結(jié)構(gòu)中為所述目標(biāo)執(zhí)行節(jié)點(diǎn)創(chuàng)建前置節(jié)點(diǎn),得到目標(biāo)執(zhí)行樹結(jié)構(gòu)包括:
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
10.一種基于分布式數(shù)據(jù)庫(kù)的請(qǐng)求處理裝置,其特征在于,所述裝置包括: