本發(fā)明屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體地說,涉及一種數(shù)據(jù)實(shí)時(shí)遷移的方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,上網(wǎng)用戶不斷增加,使網(wǎng)站的訪問量也隨之大幅增加,對(duì)此,各廠商采用服務(wù)器鏡像技術(shù),在用戶相對(duì)集中的地方放上緩存設(shè)備,作為對(duì)原始服務(wù)器的鏡像服務(wù)器,用戶訪問原來的服務(wù)器時(shí),被網(wǎng)絡(luò)重定向到離用戶最近的鏡像服務(wù)器,從而提高了網(wǎng)絡(luò)用戶的訪問質(zhì)量和訪問速度。
但近年來隨著電子商務(wù)以及社交平臺(tái)等互聯(lián)網(wǎng)應(yīng)用的持續(xù)火爆,出現(xiàn)了網(wǎng)絡(luò)熱點(diǎn)集中而且切換頻率加快的現(xiàn)象。經(jīng)常出現(xiàn)網(wǎng)站數(shù)據(jù)庫中某些數(shù)據(jù)的瞬間并發(fā)度極高,對(duì)該數(shù)據(jù)進(jìn)行寫操作的請(qǐng)求急劇增加,這時(shí)會(huì)使大量請(qǐng)求在數(shù)據(jù)庫等待對(duì)該數(shù)據(jù)進(jìn)行行鎖,同時(shí)占用著數(shù)據(jù)庫的工作線程資源,而數(shù)據(jù)庫的工作線程資源是有限的。例如,數(shù)據(jù)庫的系統(tǒng)吞吐量為7000tps,當(dāng)前在該數(shù)據(jù)庫中存在10個(gè)熱點(diǎn)數(shù)據(jù),每個(gè)熱點(diǎn)數(shù)據(jù)的并發(fā)數(shù)達(dá)到了1000tps,則10個(gè)熱點(diǎn)數(shù)據(jù)的并發(fā)數(shù)達(dá)到10000tps,已超過系統(tǒng)吞吐量,導(dǎo)致數(shù)據(jù)庫的工作線程得不到釋放而變得不可用,使其他非熱點(diǎn)數(shù)據(jù)的處理也會(huì)受到影響。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)實(shí)時(shí)遷移的方法和裝置,解決了由于瞬時(shí)出現(xiàn)熱點(diǎn)數(shù)據(jù)而導(dǎo)致數(shù)據(jù)庫不可用的技術(shù)問題。
為了解決上述技術(shù)問題,本申請(qǐng)公開了一種數(shù)據(jù)實(shí)時(shí)遷移的方法,包括:
監(jiān)測(cè)數(shù)據(jù)請(qǐng)求量;根據(jù)監(jiān)測(cè)到的數(shù)據(jù)請(qǐng)求量確定出第一熱點(diǎn)數(shù)據(jù);在遷移列表中添加所述第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并啟動(dòng)將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程。
所述方法還包括:判斷所述將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程是否完成,當(dāng)所述將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程已完成時(shí),在所述遷移列表中刪除所述第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并在預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中添加所述第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)。
所述方法還包括:當(dāng)所述將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程未完成時(shí),判斷接收到的對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是否為寫入請(qǐng)求;當(dāng)接收到的對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是寫入請(qǐng)求時(shí),返回寫入失敗的信息;當(dāng)接收到的對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是讀取請(qǐng)求時(shí),允許對(duì)所述第一熱點(diǎn)數(shù)據(jù)的讀取操作。
所述方法還包括:獲取所述第一數(shù)據(jù)庫的負(fù)載信息;根據(jù)所述負(fù)載信息確定需要從所述第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
所述根據(jù)所述負(fù)載信息確定需要從所述第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù),包括:獲取所述負(fù)載信息中的數(shù)據(jù)鎖定隊(duì)列;根據(jù)所述數(shù)據(jù)鎖定隊(duì)列確定每條第一熱點(diǎn)數(shù)據(jù)所對(duì)應(yīng)的執(zhí)行中的會(huì)話數(shù)量;將所述執(zhí)行中的會(huì)話數(shù)量超過預(yù)設(shè)閾值的第一熱點(diǎn)數(shù)據(jù)確定為需要從所述第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
所述在預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中添加所述第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)之后,所述方法還包括:判斷是否接收到對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求;當(dāng)接收到對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),將對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求路由至所述第一數(shù)據(jù)庫。
所述方法還包括:判斷接收到的請(qǐng)求是否是對(duì)預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求;當(dāng)接收到的請(qǐng)求是對(duì)所述預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),將所述請(qǐng)求路由至所述第一數(shù)據(jù)庫。
為了解決上述技術(shù)問題,本申請(qǐng)還公開了一種數(shù)據(jù)實(shí)時(shí)遷移的裝置,包括:監(jiān)測(cè)模塊,用于監(jiān)測(cè)數(shù)據(jù)請(qǐng)求量;第一確定模塊,用于根據(jù)檢測(cè)到的數(shù) 據(jù)請(qǐng)求量確定出第一熱點(diǎn)數(shù)據(jù);第一處理模塊,在遷移列表中添加所述第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并啟動(dòng)將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程。
所述裝置還包括:第一判斷模塊,用于判斷所述將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程是否完成,第二處理模塊,用于當(dāng)所述將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程已完成時(shí),在所述遷移列表中刪除所述第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并在預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中添加所述第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)。
所述裝置還包括:第二判斷模塊,用于當(dāng)所述將所述第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程未完成時(shí),判斷接收到的對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是否為寫入請(qǐng)求;第三處理模塊,用于當(dāng)接收到的對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是寫入請(qǐng)求時(shí),返回寫入失敗的信息;第四處理模塊,用于當(dāng)接收到的對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是讀取請(qǐng)求時(shí),允許對(duì)所述第一熱點(diǎn)數(shù)據(jù)的讀取操作。
所述裝置還包括:獲取模塊,用于獲取所述第一數(shù)據(jù)庫的負(fù)載信息;第二確定模塊,用于根據(jù)所述負(fù)載信息確定需要從所述第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
所述第二確定模塊包括:獲取子模塊,用于獲取所述負(fù)載信息中的數(shù)據(jù)鎖定隊(duì)列;第一確定子模塊,用于根據(jù)所述數(shù)據(jù)鎖定隊(duì)列確定每條第一熱點(diǎn)數(shù)據(jù)所對(duì)應(yīng)的執(zhí)行中的會(huì)話數(shù)量;第二確定子模塊,用于將所述執(zhí)行中的會(huì)話數(shù)量超過預(yù)設(shè)閾值的第一熱點(diǎn)數(shù)據(jù)確定為需要從所述第一數(shù)據(jù)庫遷移到第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
所述裝置還包括:第三判斷模塊,用于判斷是否接收到對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求;第一路由模塊,用于當(dāng)接收到對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),將對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求路由至所述第一數(shù)據(jù)庫。
所述裝置還包括:第四判斷模塊,用于判斷接收到的請(qǐng)求是否是對(duì)預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求;第二路由模塊,用于當(dāng)接收到的請(qǐng)求是對(duì)所述預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),將所述請(qǐng)求路由至所述第一數(shù)據(jù)庫。
與現(xiàn)有技術(shù)相比,本申請(qǐng)可以獲得包括以下技術(shù)效果:監(jiān)測(cè)到數(shù)據(jù)請(qǐng)求量較大的第一熱點(diǎn)數(shù)據(jù)時(shí),啟動(dòng)將該第一熱點(diǎn)數(shù)據(jù)向第一數(shù)據(jù)庫遷移的過程,釋放服務(wù)器的工作線程資源,緩解服務(wù)器壓力,維持?jǐn)?shù)據(jù)處理的正常運(yùn)行。
當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品必不一定需要同時(shí)達(dá)到以上所述的所有技術(shù)效果。
附圖說明
此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1是本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)實(shí)時(shí)遷移的方法流程示意圖;
圖2是本申請(qǐng)實(shí)施例提供的將第一熱點(diǎn)數(shù)據(jù)再次進(jìn)行遷移的方法流程示意圖;
圖3是本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)實(shí)時(shí)遷移的方法流程示意圖;
圖4是本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)實(shí)時(shí)遷移的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將配合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,藉此對(duì)本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。
圖1是本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)實(shí)時(shí)遷移的方法,適用于服務(wù)器設(shè)備,該方法包括以下步驟。
在步驟S10中,監(jiān)測(cè)數(shù)據(jù)請(qǐng)求量。
服務(wù)器設(shè)備監(jiān)測(cè)本地接收到的數(shù)據(jù)請(qǐng)求量,包括對(duì)本地?cái)?shù)據(jù)的讀取請(qǐng)求和寫入請(qǐng)求。
在步驟S11中,根據(jù)監(jiān)測(cè)到的數(shù)據(jù)請(qǐng)求量確定出第一熱點(diǎn)數(shù)據(jù)。
對(duì)于服務(wù)器設(shè)備來說,如果接收到數(shù)據(jù)請(qǐng)求是寫入請(qǐng)求,需要對(duì)該數(shù)據(jù)加入行鎖,防止其他寫入請(qǐng)求同時(shí)對(duì)該數(shù)據(jù)進(jìn)行寫入操作;而對(duì)于數(shù)據(jù)的讀取請(qǐng)求由于其并不修改數(shù)據(jù)的值,則可以允許多個(gè)請(qǐng)求同時(shí)讀取該數(shù)據(jù)。因此,如果同時(shí)對(duì)某一條數(shù)據(jù)的寫入請(qǐng)求過多,會(huì)出現(xiàn)大量寫入請(qǐng)求處于等待狀態(tài),從而占用服務(wù)器線程資源。為了防止這種情況出現(xiàn),根據(jù)檢測(cè)到的數(shù)據(jù)請(qǐng)求量確定出第一熱點(diǎn)數(shù)據(jù),該第一熱點(diǎn)數(shù)據(jù)是指接收到的寫入請(qǐng)求頻率過高的數(shù)據(jù)。服務(wù)器可以對(duì)每條數(shù)據(jù)在單位時(shí)間內(nèi)接收到的寫入請(qǐng)求數(shù)量(即寫入請(qǐng)求的頻率)進(jìn)行監(jiān)測(cè),將超過閾值的數(shù)據(jù)確定為第一熱點(diǎn)數(shù)據(jù)。
在步驟S12中,在遷移列表中添加第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并啟動(dòng)將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程。
當(dāng)某條數(shù)據(jù)成為第一熱點(diǎn)數(shù)據(jù)時(shí),說明該第一熱點(diǎn)數(shù)據(jù)已占用過多的服務(wù)器線程資源,會(huì)對(duì)服務(wù)器的處理能力帶來影響,此時(shí)需要將該第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫。該第一數(shù)據(jù)庫用于處理針對(duì)第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)請(qǐng)求,其本身的數(shù)據(jù)處理能力也強(qiáng)于該服務(wù)器。當(dāng)某條數(shù)據(jù)被確定為第一熱點(diǎn)數(shù)據(jù)而需要遷移時(shí),服務(wù)器添加該第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)到遷移列表中,并同時(shí)啟動(dòng)將該第一熱點(diǎn)數(shù)據(jù)遷移到第一數(shù)據(jù)庫的過程。該遷移列表用于記錄處于數(shù)據(jù)遷移狀態(tài)中的第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),該遷移列表中的第一熱點(diǎn)數(shù)據(jù)是已經(jīng)開始向第一數(shù)據(jù)庫遷移但遷移過程還沒有完成的第一熱點(diǎn)數(shù)據(jù)。
將成為第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)從服務(wù)器遷移出去,能夠釋放該第一熱點(diǎn)數(shù)據(jù)占用的工作線程資源,有效緩解服務(wù)器的壓力,維持服務(wù)器其他數(shù)據(jù)處理的正常運(yùn)行。
服務(wù)器啟動(dòng)將已成為第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程后,判斷該遷移過程是否完成。當(dāng)該遷移過程未完成時(shí),服務(wù)器判斷接收到的對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是否為寫入請(qǐng)求;如果是寫入請(qǐng)求,則直接返回寫入失敗的信息;如果是讀取請(qǐng)求,則允許對(duì)該第一熱點(diǎn)數(shù)據(jù)的讀取操作。由于該第一熱點(diǎn)數(shù)據(jù)處于向第一數(shù)據(jù)庫的遷移過程中,而寫入請(qǐng)求會(huì)涉及修改該第一熱點(diǎn)數(shù)據(jù),因此對(duì)所有針對(duì)該第一熱點(diǎn)數(shù)據(jù)的寫入請(qǐng)求均返回寫入失敗的信息。由于讀取請(qǐng)求不會(huì)涉及對(duì)該第一熱點(diǎn)數(shù)據(jù)的修改,因此仍然允許對(duì) 該第一熱點(diǎn)數(shù)據(jù)的讀取操作。服務(wù)器中的數(shù)據(jù)采用單條記錄的形式,每次數(shù)據(jù)遷移的過程最多能夠遷移的數(shù)據(jù)量為10條,因此該第一熱點(diǎn)數(shù)據(jù)處于數(shù)據(jù)遷移狀態(tài)的持續(xù)時(shí)間很短,數(shù)據(jù)遷移的過程會(huì)很快,出現(xiàn)返回寫入失敗的信息的時(shí)間屬于毫秒級(jí)別,受到該數(shù)據(jù)遷移過程影響的用戶會(huì)非常少。
當(dāng)服務(wù)器判斷出該遷移過程已經(jīng)完成時(shí),在遷移列表中刪除該第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),而將該第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)添加到預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中。該預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表用于記錄在第一數(shù)據(jù)庫中保存的第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)。上述處理代表著該第一熱點(diǎn)數(shù)據(jù)向第一數(shù)據(jù)庫的遷移過程已經(jīng)完成。
在該第一熱點(diǎn)數(shù)據(jù)向第一數(shù)據(jù)庫遷移的過程完成后,服務(wù)器判斷是否接收到對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求。當(dāng)接收到對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),將對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求路由至第一數(shù)據(jù)庫。由于該第一熱點(diǎn)數(shù)據(jù)已遷移至第一數(shù)據(jù)庫,服務(wù)器接收到對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),通過預(yù)設(shè)的路由表將對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求路由至第一數(shù)據(jù)庫,由該第一數(shù)據(jù)庫響應(yīng)對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求,從而降低服務(wù)器的負(fù)載,維持服務(wù)器的有效運(yùn)行。
在一個(gè)實(shí)施例中,可以預(yù)先判斷服務(wù)器中哪些數(shù)據(jù)極有可能成為第一熱點(diǎn)數(shù)據(jù),例如,根據(jù)預(yù)期判斷出對(duì)該數(shù)據(jù)的請(qǐng)求將會(huì)非常多,對(duì)這些極有可能成為第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù),把它們的數(shù)據(jù)標(biāo)識(shí)預(yù)先添加到該預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表,同時(shí)把這些數(shù)據(jù)初始化到第一數(shù)據(jù)庫中,防止其以后出現(xiàn)過高的數(shù)據(jù)請(qǐng)求而對(duì)服務(wù)器的數(shù)據(jù)處理造成影響。。服務(wù)器接收到對(duì)該預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的數(shù)據(jù)的請(qǐng)求時(shí),根據(jù)預(yù)設(shè)的路由表直接將該請(qǐng)求路由至第一數(shù)據(jù)庫,由第一數(shù)據(jù)庫來響應(yīng)針對(duì)該預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的數(shù)據(jù)的請(qǐng)求。
在一個(gè)實(shí)施例中,當(dāng)?shù)谝粩?shù)據(jù)庫中的第一熱點(diǎn)數(shù)據(jù)越來越多或者請(qǐng)求量持續(xù)升高,使第一數(shù)據(jù)庫的處理能力也受到影響時(shí),則需要將第一數(shù)據(jù)庫中請(qǐng)求量較高的第一熱點(diǎn)數(shù)據(jù)再次進(jìn)行遷移,該遷移方法如圖2所示,包括以下步驟。
在步驟S20中,獲取第一數(shù)據(jù)庫的負(fù)載信息。
該負(fù)載信息包括第一數(shù)據(jù)庫的線程占用率、數(shù)據(jù)鎖定隊(duì)列等信息??赏? 過監(jiān)控和告警軟件獲取第一數(shù)據(jù)庫的負(fù)載信息。
在步驟S21中,根據(jù)負(fù)載信息確定需要從第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
該第二熱點(diǎn)數(shù)據(jù)是第一數(shù)據(jù)庫中請(qǐng)求量較高或者持續(xù)升高的第一熱點(diǎn)數(shù)據(jù),當(dāng)?shù)谝粩?shù)據(jù)庫的負(fù)載較高并且自身處理能力受到影響時(shí),需要將該第二熱點(diǎn)數(shù)據(jù)遷移至第二數(shù)據(jù)庫,由第二數(shù)據(jù)庫處理對(duì)該第二熱點(diǎn)數(shù)據(jù)的請(qǐng)求,以降低第一數(shù)據(jù)庫的負(fù)載。確定需要遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)方法包括以下步驟:
在步驟S210中,獲取負(fù)載信息中的數(shù)據(jù)鎖定隊(duì)列。
該數(shù)據(jù)鎖定是一種保護(hù)共享資源的鎖定機(jī)制,該鎖定機(jī)制保護(hù)共享資源,如數(shù)據(jù)庫中的數(shù)據(jù),以避免兩個(gè)用戶在同一時(shí)間更新同一數(shù)據(jù),該數(shù)據(jù)鎖定包括一個(gè)先進(jìn)先出的隊(duì)列機(jī)制,即先請(qǐng)求的先對(duì)數(shù)據(jù)進(jìn)行鎖定并執(zhí)行寫入操作。
在步驟S211中,根據(jù)數(shù)據(jù)鎖定隊(duì)列確定每條第一熱點(diǎn)數(shù)據(jù)所對(duì)應(yīng)的執(zhí)行中的會(huì)話數(shù)量。
該第一數(shù)據(jù)庫的每一個(gè)數(shù)據(jù)鎖定隊(duì)列都對(duì)應(yīng)著其保存的一條第一熱點(diǎn)數(shù)據(jù)。通過該數(shù)據(jù)鎖定隊(duì)列即可確定該第一數(shù)據(jù)庫接收到了針對(duì)哪些第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)請(qǐng)求,再進(jìn)一步根據(jù)數(shù)據(jù)鎖定隊(duì)列中的會(huì)話數(shù)量即可確定每條第一熱點(diǎn)數(shù)據(jù)對(duì)應(yīng)的執(zhí)行中的會(huì)話數(shù)量。
在步驟S212中,將執(zhí)行中的會(huì)話數(shù)量超過預(yù)設(shè)閾值的第一熱點(diǎn)數(shù)據(jù)確定為需要從第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
將第二熱點(diǎn)數(shù)據(jù)遷移至第二數(shù)據(jù)庫的過程與前面所述將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程相同,在此不進(jìn)行重復(fù)說明。通過上述流程可以在第一數(shù)據(jù)庫出現(xiàn)負(fù)載壓力過大的情況下,將數(shù)據(jù)請(qǐng)求量較高的第一熱點(diǎn)數(shù)據(jù)再次遷移,以緩解第一數(shù)據(jù)庫的數(shù)據(jù)處理壓力。
下面通過一個(gè)應(yīng)用場(chǎng)景對(duì)本申請(qǐng)實(shí)施例提供的數(shù)據(jù)實(shí)時(shí)遷移的方法做進(jìn)一步說明。在線商品銷售系統(tǒng)中,商家會(huì)針對(duì)一些在線商品推出促銷活動(dòng),用戶則會(huì)在很短的時(shí)間內(nèi)集中瀏覽促銷商品信息并下單訂購。其中,瀏覽商 品促銷信息屬于對(duì)在線銷售服務(wù)器中的商品數(shù)據(jù)的讀取操作,而下單訂購需要在線銷售服務(wù)器執(zhí)行庫存數(shù)量的扣減,屬于對(duì)商品數(shù)據(jù)的寫入操作。而在促銷期間,會(huì)出現(xiàn)極多的用戶同時(shí)下單訂購促銷商品的情況,這時(shí)會(huì)使在線銷售服務(wù)器的負(fù)載過大,數(shù)據(jù)處理緩慢,而且其他正常銷售的商品數(shù)據(jù)的處理也會(huì)受到影響。采用本申請(qǐng)實(shí)施例提供的數(shù)據(jù)實(shí)時(shí)遷移的方法,能夠緩解在線商品服務(wù)器的壓力,如圖3所示,實(shí)施過程包括以下步驟。
在步驟S300中,在服務(wù)器的第一熱點(diǎn)數(shù)據(jù)列表中預(yù)先添加極可能成為熱點(diǎn)商品的商品數(shù)據(jù)標(biāo)識(shí)。
根據(jù)商家的促銷策略,預(yù)判哪些商品極可能成為熱點(diǎn)商品,將這類商品在服務(wù)器數(shù)據(jù)中的數(shù)據(jù)標(biāo)識(shí)預(yù)先添加到第一熱點(diǎn)數(shù)據(jù)列表中,并且將這類商品的數(shù)據(jù)初始化到第一數(shù)據(jù)庫中。
在步驟S301中,判斷接收到的數(shù)據(jù)請(qǐng)求是否是對(duì)第一熱點(diǎn)數(shù)據(jù)列表中的數(shù)據(jù)的請(qǐng)求。當(dāng)是對(duì)第一熱點(diǎn)數(shù)據(jù)列表中的數(shù)據(jù)的請(qǐng)求時(shí),執(zhí)行步驟S302;當(dāng)不是對(duì)第一熱點(diǎn)數(shù)據(jù)列表中的數(shù)據(jù)的請(qǐng)求時(shí),執(zhí)行步驟S303。
在步驟S302中,將該數(shù)據(jù)請(qǐng)求路由至第一數(shù)據(jù)庫。
在步驟S303中,將該數(shù)據(jù)請(qǐng)求在本地處理。
同時(shí),在步驟S304中,服務(wù)器監(jiān)測(cè)本地?cái)?shù)據(jù)請(qǐng)求量。
對(duì)于沒有被預(yù)判為熱點(diǎn)商品的商品數(shù)據(jù),服務(wù)器實(shí)時(shí)監(jiān)測(cè)這些商品的數(shù)據(jù)請(qǐng)求量。
在步驟S305中,根據(jù)監(jiān)測(cè)到的數(shù)據(jù)請(qǐng)求量確定出第一熱點(diǎn)數(shù)據(jù)。
某些商品會(huì)隨著數(shù)據(jù)請(qǐng)求量的瞬間增多而成為熱點(diǎn)商品,服務(wù)器將這些商品的數(shù)據(jù)確定為第一熱點(diǎn)數(shù)據(jù)。
在步驟S306中,在遷移列表中添加第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并啟動(dòng)將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程。
服務(wù)器將成為熱點(diǎn)商品的商品數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)添加到遷移列表中,并啟動(dòng)將成為熱點(diǎn)商品的商品數(shù)據(jù)向第一數(shù)據(jù)庫進(jìn)行遷移的過程。
在步驟S307中,判斷將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程是否完成。當(dāng)將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程未完成時(shí),執(zhí)行步驟S308; 當(dāng)將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程已完成時(shí),執(zhí)行步驟S311。
在步驟S308中,判斷接收到的對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是否為寫入請(qǐng)求,當(dāng)接收到的對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是寫入請(qǐng)求時(shí),執(zhí)行步驟S309;當(dāng)接收到的對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是讀取請(qǐng)求時(shí),執(zhí)行步驟S310。
成為熱點(diǎn)商品的商品數(shù)據(jù)向第一數(shù)據(jù)庫的遷移還沒有完成時(shí),判斷是否有用戶對(duì)該商品下單訂購以及瀏覽該商品的信息。
在步驟S309中,返回寫入失敗的信息。
在步驟S310中,允許對(duì)第一熱點(diǎn)數(shù)據(jù)的讀取操作。
如果有用戶瀏覽該商品的信息,屬于對(duì)該商品數(shù)據(jù)的讀取請(qǐng)求,則允許瀏覽,而用戶對(duì)該商品下單訂購屬于對(duì)該商品數(shù)據(jù)的寫入請(qǐng)求,則直接返回失敗信息,該商品當(dāng)前還不能下單。
在步驟S311中,在遷移列表中刪除第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并在預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中添加第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)。
成為熱點(diǎn)商品的商品數(shù)據(jù)向第一數(shù)據(jù)庫的遷移完成后,在遷移列表中刪除該商品數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并將該商品數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)添加到預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中。
在步驟S312中,判斷接收到的數(shù)據(jù)請(qǐng)求是否是對(duì)該第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求。當(dāng)接收到的數(shù)據(jù)請(qǐng)求是對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),執(zhí)行步驟S302;當(dāng)接收到的數(shù)據(jù)請(qǐng)求不是對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),執(zhí)行步驟S303。
服務(wù)器再接收到對(duì)已成為熱點(diǎn)商品的商品數(shù)據(jù)的數(shù)據(jù)請(qǐng)求后,將該數(shù)據(jù)請(qǐng)求路由至第一數(shù)據(jù)庫。
同時(shí),在步驟S313中,獲取第一數(shù)據(jù)庫的負(fù)載信息。
服務(wù)器獲取第一數(shù)據(jù)庫的負(fù)載信息,以防止該第一數(shù)據(jù)庫由于熱點(diǎn)商品的商品數(shù)據(jù)請(qǐng)求量持續(xù)增多而導(dǎo)致處理能力下降。
在步驟S314中,獲取負(fù)載信息中的數(shù)據(jù)鎖定隊(duì)列;
在步驟S315中,根據(jù)數(shù)據(jù)鎖定隊(duì)列確定每條第一熱點(diǎn)數(shù)據(jù)所對(duì)應(yīng)的執(zhí)行中的會(huì)話數(shù)量。
在步驟S316中,將執(zhí)行中的會(huì)話數(shù)量超過預(yù)設(shè)閾值的第一熱點(diǎn)數(shù)據(jù)確定為需要從第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
確定出第一數(shù)據(jù)庫中哪些商品數(shù)據(jù)的請(qǐng)求量過高,需要再次進(jìn)行遷移,以緩解第一數(shù)據(jù)庫的壓力。
圖4是本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)實(shí)時(shí)遷移的裝置,包括:
監(jiān)測(cè)模塊40,用于監(jiān)測(cè)數(shù)據(jù)請(qǐng)求量;
第一確定模塊41,用于根據(jù)檢測(cè)到的數(shù)據(jù)請(qǐng)求量確定出第一熱點(diǎn)數(shù)據(jù);
第一處理模塊42,在遷移列表中添加第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并啟動(dòng)將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程。
在一個(gè)實(shí)施例中,該裝置還包括:
第一判斷模塊,用于判斷將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程是否完成,
第二處理模塊,用于當(dāng)將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程已完成時(shí),在遷移列表中刪除第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí),并在預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中添加第一熱點(diǎn)數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)。
在一個(gè)實(shí)施例中,該裝置還包括:
第二判斷模塊,用于當(dāng)將第一熱點(diǎn)數(shù)據(jù)遷移至第一數(shù)據(jù)庫的過程未完成時(shí),判斷接收到的對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是否為寫入請(qǐng)求;
第三處理模塊,用于當(dāng)接收到的對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是寫入請(qǐng)求時(shí),返回寫入失敗的信息;
第四處理模塊,用于當(dāng)接收到的對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求是讀取請(qǐng)求時(shí),允許對(duì)第一熱點(diǎn)數(shù)據(jù)的讀取操作。
在一個(gè)實(shí)施例中,該裝置還包括:
獲取模塊,用于獲取第一數(shù)據(jù)庫的負(fù)載信息;
第二確定模塊,用于根據(jù)負(fù)載信息確定需要從所述第一數(shù)據(jù)庫遷移至第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
該第二確定模塊包括:
獲取子模塊,用于獲取負(fù)載信息中的數(shù)據(jù)鎖定隊(duì)列;
第一確定子模塊,用于根據(jù)數(shù)據(jù)鎖定隊(duì)列確定每條第一熱點(diǎn)數(shù)據(jù)所對(duì)應(yīng)的執(zhí)行中的會(huì)話數(shù)量;
第二確定子模塊,用于將執(zhí)行中的會(huì)話數(shù)量超過預(yù)設(shè)閾值的第一熱點(diǎn)數(shù)據(jù)確定為需要從第一數(shù)據(jù)庫遷移到第二數(shù)據(jù)庫的第二熱點(diǎn)數(shù)據(jù)。
在一個(gè)實(shí)施例中,該裝置還包括:
第三判斷模塊,用于判斷是否接收到對(duì)所述第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求;
第一路由模塊,用于當(dāng)接收到對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),將對(duì)第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求路由至第一數(shù)據(jù)庫。
在一個(gè)實(shí)施例中,該裝置還包括:
第四判斷模塊,用于判斷接收到的請(qǐng)求是否是對(duì)預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求;
第二路由模塊,用于當(dāng)接收到的請(qǐng)求是對(duì)預(yù)設(shè)的第一熱點(diǎn)數(shù)據(jù)列表中的第一熱點(diǎn)數(shù)據(jù)的請(qǐng)求時(shí),將請(qǐng)求路由至第一數(shù)據(jù)庫。
上述裝置中的各個(gè)功能模塊可實(shí)現(xiàn)上述數(shù)據(jù)實(shí)時(shí)遷移的方法的各個(gè)步驟,具體實(shí)現(xiàn)過程請(qǐng)參見上述數(shù)據(jù)實(shí)時(shí)遷移的方法的各個(gè)實(shí)施例。
在一個(gè)典型的配置中,上述各功能模塊也可以由計(jì)算設(shè)備來實(shí)現(xiàn),該計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁 帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會(huì)用不同名詞來稱呼同一個(gè)組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達(dá)到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實(shí)施本發(fā)明的較佳實(shí)施方式,然所述描述乃以說明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。
上述說明示出并描述了本發(fā)明的若干優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對(duì)其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改動(dòng)和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。