本申請涉及計算機領(lǐng)域,尤其涉及一種集群切換方法與設(shè)備。
背景技術(shù):
在云存儲系統(tǒng)中,數(shù)據(jù)存儲于單個集群,為了提高數(shù)據(jù)存儲的安全性、提供集群級別的容災(zāi)方案,或者實現(xiàn)集群間的數(shù)據(jù)遷移,往往需要將數(shù)據(jù)備份到其他的集群,該過程稱為集群間數(shù)據(jù)同步。當需要將用戶讀寫訪問的集群從主集群變更成從集群時,該變更過程稱為切換主集群。如何保證集群間數(shù)據(jù)同步的一致性、以及保證集群切換時對用戶無影響是集群間同步和切換的關(guān)鍵技術(shù)方案。
目前的同步技術(shù)方案一般分為集群間的異步的同步方案和同步的同步方案,分別結(jié)合不同的切換方案:
1.異步的同步方案中,使用異步模塊將數(shù)據(jù)從主集群拷貝到從集群,可以保證數(shù)據(jù)一致性,但是具有一定的延時性,當需要切換對外服務(wù)的主集群時,會出現(xiàn)主集群上的部分數(shù)據(jù)還未同步到從集群上的情況,導(dǎo)致切換后,在這部分數(shù)據(jù)同步結(jié)束前,該部分數(shù)據(jù)對用戶不可見,出現(xiàn)數(shù)據(jù)短暫丟失的情況,并且在該部分數(shù)據(jù)同步期間,用戶對該部分數(shù)據(jù)的覆蓋寫會導(dǎo)致數(shù)據(jù)一致性問題,因此當需要切換之前,會停止主集群數(shù)據(jù)的寫入,當主集群的數(shù)據(jù)完全同步到從集群之后,進行切換,再開放用戶的寫權(quán)限,從而不會影響用戶訪問,并且能解決數(shù)據(jù)一致性問題,但是由于延時性,切換前禁止用戶寫入會影響用戶使用。
2.同步的同步方案中,在用戶寫入數(shù)據(jù)時,數(shù)據(jù)分別寫入主集群和從集群,集群切換簡單,當主集群和從集群同時成功時返回用戶成功,但會降低用戶的訪問成功率,提高了用戶訪問延時,并且難以解決主從集群間有一份數(shù)據(jù)寫失敗時的數(shù)據(jù)一致性問題,對于已經(jīng)存在于主集群中的數(shù)據(jù)無法實現(xiàn) 拷貝。
技術(shù)實現(xiàn)要素:
本申請的一個目的是提供一種集群切換方法與設(shè)備,能夠解決集群間數(shù)據(jù)間遷移或備份時,影響用戶使用,切換集群間數(shù)據(jù)不能夠保證一致的問題。
根據(jù)本申請的一個方面,提供了一種集群切換方法,該方法包括:
在舊的主集群向新的主集群切換開始后,將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群上,其中,將新的主集群上所述剩余原始數(shù)據(jù)的優(yōu)先級設(shè)置為低級;
在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求,其中,將寫操作請求對應(yīng)的新數(shù)據(jù)的優(yōu)先級設(shè)置為高級,并只允許在新的主集群上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本;
在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,在新的主集群上響應(yīng)寫操作請求。
進一步的,上述方法中,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,還包括:
在舊的和新的主集群上響應(yīng)的讀操作請求;
在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,還包括:
在新的主集群上響應(yīng)讀操作請求。
進一步的,上述方法中,所述寫操作請求包括對數(shù)據(jù)的新增、改寫和刪除操作請求。
進一步的,上述方法中,當所述寫操作請求為對數(shù)據(jù)的新增或改寫時,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,還包括:
將所述新增或改寫操作請求寫入消息隊列;
從所述消息隊列中讀取新增或改寫操作請求,將讀取到的新增或改寫操作請求所對應(yīng)的新的主集群上的新增或改寫數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的寫操作請求。
進一步的,上述方法中,讀取到的新增或改寫操作請求所對應(yīng)的新的主集群上的新增或改寫數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的寫操作請求,包括:
判斷新的主集群上是否存在讀取到的新增或改寫操作請求所對應(yīng)的新增或改寫數(shù)據(jù),
若存在,將該新增或改寫數(shù)據(jù)同步到舊的主集群上,刪除消息隊列中所述讀取到的新增或改寫操作請求;
若不存在,刪除消息隊列中所述讀取到的新增或改寫操作請求。
進一步的,上述方法中,當所述寫操作請求為對數(shù)據(jù)的刪除操作請求時,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,還包括:
將所述刪除操作請求寫入消息隊列;
從消息隊列中讀取刪除操作請求,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致后,刪除消息隊列中所述讀取到的刪除操作請求。
進一步的,上述方法中,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致后,刪除消息隊列中所述讀取到的刪除操作請求,包括:
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都不存在,則刪除消息隊列中所述讀取到的刪除操作請求;
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在新的主集群上不存在,而在舊的主集群上存在,則刪除舊的主集群上對應(yīng)的刪除數(shù)據(jù)后,刪除消息隊列 中所述讀取到的刪除操作請求;
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的主集群上不存在,而在新的主集群上存在,則將新的主集群上對應(yīng)的刪除數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的刪除操作請求;
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都存在,則刪除消息隊列中所述讀取到的刪除操作請求。
進一步的,上述方法中,將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在舊的和新的主集群上響應(yīng)的讀操作請求,包括:
判斷是否從舊的和新的主集群上讀取到所述讀操作請求所對應(yīng)的數(shù)據(jù),
若在舊的或新的主集群讀取到對應(yīng)的數(shù)據(jù),則返回該數(shù)據(jù);
若在舊的和新的主集群都讀取到對應(yīng)的數(shù)據(jù),則返回新的主集群上讀取到的對應(yīng)的數(shù)據(jù)。
根據(jù)本申請的另一面還提供一種集群切換設(shè)備,其中,該設(shè)備包括:
同步裝置,用于在舊的主集群向新的主集群切換開始后,將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群上,其中,將新的主集群上所述剩余原始數(shù)據(jù)的優(yōu)先級設(shè)置為低級;
同步期間寫響應(yīng)裝置,用于在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求,其中,將寫操作請求對應(yīng)的新數(shù)據(jù)的優(yōu)先級設(shè)置為高級,并只允許在新的主集群上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本;
同步結(jié)束寫響應(yīng)裝置,用于在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,在新的主集群上響應(yīng)寫操作請求。
進一步的,上述設(shè)備中,所述設(shè)備還包括同步期間讀響應(yīng)裝置,用于在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在舊的和新的主集群上響應(yīng)的讀操作請求;
所述設(shè)備還包括同步結(jié)束讀響應(yīng)裝置,用于在將舊的主集群上待同步 的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,在新的主集群上響應(yīng)讀操作請求。
進一步的,上述設(shè)備中,所述寫操作請求包括對數(shù)據(jù)的新增、改寫和刪除操作請求。
進一步的,上述設(shè)備中,所述設(shè)備還包括新增或改寫請求消息隊列裝置,用于當所述寫操作請求為對數(shù)據(jù)的新增或改寫時,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,將所述新增或改寫操作請求寫入消息隊列,從所述消息隊列中讀取新增或改寫操作請求,將讀取到的新增或改寫操作請求所對應(yīng)的新的主集群上的新增或改寫數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的寫操作請求。
進一步的,上述設(shè)備中,所述新增或改寫請求消息隊列裝置,用于判斷新的主集群上是否存在讀取到的新增或改寫操作請求所對應(yīng)的新增或改寫數(shù)據(jù),若存在,將該新增或改寫數(shù)據(jù)同步到舊的主集群上,刪除消息隊列中所述讀取到的新增或改寫操作請求;若不存在,刪除消息隊列中所述讀取到的新增或改寫操作請求。
進一步的,上述設(shè)備中,所述設(shè)備還包括刪除請求消息隊列裝置,用于當所述寫操作請求為對數(shù)據(jù)的刪除操作請求時,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,將所述刪除操作請求寫入消息隊列,從消息隊列中讀取刪除操作請求,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致后,刪除消息隊列中所述讀取到的刪除操作請求。
進一步的,上述設(shè)備中,所述刪除請求消息隊列裝置,用于若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都不存在,則刪除消息隊列中所述讀取到的刪除操作請求;若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在新的主集群上不存在,而在舊的主集群上存在,則刪除舊的主集群上 對應(yīng)的刪除數(shù)據(jù)后,刪除消息隊列中所述讀取到的刪除操作請求;若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的主集群上不存在,而在新的主集群上存在,則將新的主集群上對應(yīng)的刪除數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的刪除操作請求;若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都存在,則刪除消息隊列中所述讀取到的刪除操作請求。
進一步的,上述設(shè)備中,所述同步期間讀響應(yīng)裝置,用于判斷是否從舊的和新的主集群上讀取到所述讀操作請求所對應(yīng)的數(shù)據(jù),若在舊的或新的主集群讀取到對應(yīng)的數(shù)據(jù),則返回該數(shù)據(jù);若在舊的和新的主集群都讀取到對應(yīng)的數(shù)據(jù),則返回新的主集群上讀取到的對應(yīng)的數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,本申請通過在舊的主集群向新的主集群同步期間,在新的主集群上響應(yīng)寫操作請求,并將寫操作請求對應(yīng)的新數(shù)據(jù)的優(yōu)先級設(shè)置為高級,其中,只允許在新的主集群上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本,能夠在不影響用戶使用的情況下,切換對外服務(wù)的主集群,即在不需要禁止用戶訪問的情況下,在切換開始后至切換結(jié)束期間使用戶能讀寫到全部數(shù)據(jù),并且舊的和新的主集群上數(shù)據(jù)能夠保證一致,實現(xiàn)集群間數(shù)據(jù)的無縫遷移或備份。
進一步的,本申請通過將所述新增或改寫操作請求寫入消息隊列,從所述消息隊列中讀取新增或改寫操作請求,將讀取到的新增或改寫操作請求所對應(yīng)的新的主集群B上的新增或改寫數(shù)據(jù)同步到舊的主集群A上后,刪除消息隊列中所述讀取到的寫操作請求,從而保證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。
進一步的,本申請通過將所述刪除操作請求寫入消息隊列,從消息隊列中讀取刪除操作請求,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致,刪除消息隊列中所述讀取到的刪除操作請求,從而保 證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
圖1示出根據(jù)本申請一個方面的一種集群切換方法的流程圖;
圖2示出根據(jù)本申請一個優(yōu)選實施例的一種集群切換方法的流程圖;
圖3示出根據(jù)本申請另一個優(yōu)選實施例的一種集群切換方法的流程圖;
圖4示出根據(jù)本申請又一個優(yōu)選實施例的一種集群切換方法的流程圖;
圖5示出根據(jù)本申請再一個優(yōu)選實施例的一種集群切換方法的流程圖;
圖6示出根據(jù)本申請又一個優(yōu)選實施例的一種集群切換方法的流程圖;
圖7示出根據(jù)本申請另一個方面的一種集群切換設(shè)備的結(jié)構(gòu)圖;
圖8示出根據(jù)本申請一個優(yōu)選實施例的一種集群切換設(shè)備的結(jié)構(gòu)圖;
圖9示出根據(jù)本申請另一個優(yōu)選實施例的一種集群切換設(shè)備的結(jié)構(gòu)圖;
圖10示出根據(jù)本申請又一個優(yōu)選實施例的一種集群切換設(shè)備的結(jié)構(gòu)圖。
附圖中相同或相似的附圖標記代表相同或相似的部件。
具體實施方式
下面結(jié)合附圖對本發(fā)明作進一步詳細描述。
在本申請一個典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括 一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機可讀介質(zhì)的示例。
計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
如圖1所示,本申請?zhí)峁┮环N集群切換方法,包括:
步驟S1,在舊的主集群向新的主集群切換開始后,將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群上,其中,將新的主集群上從舊的主集群同步來的剩余原始數(shù)據(jù)的優(yōu)先級設(shè)置為低級;具體的,舊的主集群A向新的主集群B同步的時間是在舊的主集群A向新的主集群B切換之前開始,舊的主集群A向新的主集群B同步完成時,舊的主集群A向新的主集群B切換也隨之完成,這里舊的主集群A向新的主集群B是指將舊的主集群A上的原始數(shù)據(jù)備份到主集群B,以在舊的主集群A向新的主集群B切換完成后由新的主集群B對外向用戶提供數(shù)據(jù)讀寫服務(wù),另外,由于舊的主集群A向新的主集群B同步先于集群切換開始,新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)包括集群切換開始前,新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù),及集群切換開始后至集群切換結(jié)束,新的主集群B上從舊的主集群A同步來的剩余的原始數(shù)據(jù),例如,舊的主集群A上原有5000條原始數(shù)據(jù), 新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)包括集群切換開始前,新的主集群B上已經(jīng)從舊的主集群A同步來的5000條原始數(shù)據(jù)中的2000條,那么新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)還要包括集群切換開始后至集群切換結(jié)束,新的主集群B上需要從舊的主集群A同步來的剩余的3000條原始數(shù)據(jù),在此,無論是集群切換開始前,還是集群切換開始后至集群切換結(jié)束,新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)的優(yōu)先級都設(shè)置為低級如0級,以與后續(xù)設(shè)置為高級的寫操作請求對應(yīng)的新數(shù)據(jù)如1級相區(qū)分;
步驟S2,在舊的主集群向新的主集群同步期間,在新的主集群上響應(yīng)寫操作請求,并將寫操作請求對應(yīng)的新數(shù)據(jù)的優(yōu)先級設(shè)置為高級,其中,只允許在新的主集群上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本;具體的,步驟S1和步驟S2是同時進行的,在集群切換開始后,新的主集群B上會存在兩類數(shù)據(jù),一類是新數(shù)據(jù),另一類是從舊的主集群A同步來的原始數(shù)據(jù),為了防止從舊的主集群A同步來的原始數(shù)據(jù)覆蓋新數(shù)據(jù),并保證新數(shù)據(jù)如1級數(shù)據(jù)能夠覆蓋從舊的主集群A同步來的原始數(shù)據(jù)(低級數(shù)據(jù)如0級數(shù)據(jù))或者更新的新數(shù)據(jù)(同級數(shù)據(jù)如1級數(shù)據(jù)),這里設(shè)置只允許新的主集群B上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本,例如,新的主集群B上有一從舊的主集群上同步來的原始數(shù)據(jù)a=100,隨后用戶發(fā)起一個寫操作請求所對應(yīng)的新數(shù)據(jù)為a=200,由于a=100的數(shù)據(jù)級別為低級如0級,而a=200的數(shù)據(jù)級別為高級如1級,則高級數(shù)據(jù)覆蓋同一數(shù)據(jù)低級版本,新的主集群B上a數(shù)據(jù)的值對應(yīng)更新為200,如果,接著又有用戶發(fā)起一個更新的寫操作請求所對應(yīng)的新數(shù)據(jù)為a=300,則高級覆蓋同一數(shù)據(jù)之前同級版本,新的主集群上a數(shù)據(jù)的值對應(yīng)更新為300;又如,在新的主集群B上用戶發(fā)起一個寫操作請求所對應(yīng)的新數(shù)據(jù)為a=200,隨后,又有一從舊的主集群A上同步來的原始數(shù)據(jù)a=100,由于a=100的數(shù)據(jù)級別為低級如0級,而a=200的數(shù)據(jù)級別為高級如 1級,則低級不能覆蓋同一數(shù)據(jù)高級版本,新的主集群上a數(shù)據(jù)的值對應(yīng)仍為200;
步驟S4,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,在新的主集群上響應(yīng)寫操作請求。具體的,步驟S4是在步驟S1和步驟S2之后進行,在集群同步結(jié)束后,由于舊的主集群A的所有原始數(shù)據(jù)已經(jīng)都同步到新的主集群B上,所以只要在新的主集群B上響應(yīng)數(shù)據(jù)寫操作請求即可,也不再需要區(qū)分新的主集群B上數(shù)據(jù)的優(yōu)先級。本實施例能夠在不影響用戶使用的情況下,切換對外服務(wù)的主集群,即在不需要禁止用戶訪問的情況下,在切換開始后至切換結(jié)束期間使用戶能讀寫到全部數(shù)據(jù),并且舊的和新的主集群上數(shù)據(jù)能夠保證一致,實現(xiàn)集群間數(shù)據(jù)的無縫遷移或備份。
如圖2所示,本申請的集群切換方法一優(yōu)選的實施例中,執(zhí)行步驟S1的同時,還包括執(zhí)行步驟S3,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在舊的和新的主集群上響應(yīng)的讀操作請求;
步驟S3之后,在執(zhí)行步驟S4的同時,還包括執(zhí)行步驟S5,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,在新的主集群上響應(yīng)讀操作請求。具體的,在集群同步結(jié)束前,需要在舊的和新的主集群上響應(yīng)在舊的主集群A向新的主集群B同步期間的數(shù)據(jù)讀操作請求,以避免集群同步結(jié)束前,在有些原始數(shù)據(jù)還沒有同步到新的主集群的情況下,即使沒有在新的主集群B上找到需要的原始數(shù)據(jù),還可以在舊的主集群上找到需要的原始數(shù)據(jù),所以這時需要同時在舊的和新的主集群上響應(yīng)在舊的主集群A向新的主集群B同步期間的數(shù)據(jù)讀操作請求;而在集群同步結(jié)束后,由于舊的主集群的所有原始數(shù)據(jù)已經(jīng)都同步到新的主集群上,所以只要在新的主集群上響應(yīng)數(shù)據(jù)讀操作請求即可,都可以滿足用戶的數(shù)據(jù)需求。
本申請的集群切換方法一優(yōu)選的實施例中,所述寫操作請求包括對數(shù)據(jù)的新增、改寫和刪除操作請求。具體的,舊的主集群向新的主集群切換開 始后,用戶的寫操作請求在新的主集群上新增其沒有的數(shù)據(jù),或者對已有的數(shù)據(jù)版本的修改,或者對已有數(shù)據(jù)的刪除,從而滿足用戶的各種寫操作需求。本領(lǐng)域技術(shù)人員應(yīng)能理解上述寫操作請求的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的寫操作請求的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
如圖3所示,本申請的集群切換方法一優(yōu)選的實施例中,當所述寫操作請求為對數(shù)據(jù)的新增或改寫時,執(zhí)行步驟S2,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,還包括:
步驟S20,將所述新增或改寫操作請求寫入消息隊列;
步驟S21,從所述消息隊列中讀取新增或改寫操作請求,將讀取到的新增或改寫操作請求所對應(yīng)的新的主集群B上的新增或改寫數(shù)據(jù)同步到舊的主集群A上后,刪除消息隊列中所述讀取到的寫操作請求,在此,消息隊列中的寫操作請求用于標注新的主集群B上待同步到舊的主集群A上的新增或改寫數(shù)據(jù),在每完成將新的主集群B上的一個新增或改寫數(shù)據(jù)同步到舊的主集群A上之后,則將對應(yīng)的一個寫操作請求刪除,從而保證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。本領(lǐng)域技術(shù)人員應(yīng)能理解上述消息隊列的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的消息隊列的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
如圖4所示,本申請的集群切換方法一優(yōu)選的實施例中,步驟S21中的將讀取到的新增或改寫操作請求所對應(yīng)的新的主集群上的新增或改寫數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的寫操作請求,包括:
步驟S211,判斷新的主集群上是否存在讀取到的新增或改寫操作請求所對應(yīng)的新增或改寫數(shù)據(jù),若存在,轉(zhuǎn)到步驟S212,若不存在,轉(zhuǎn)到步驟S213;
步驟S212,將該新增或改寫數(shù)據(jù)同步到舊的主集群上,刪除消息隊列中 所述讀取到的新增或改寫操作請求;在此,如果一次數(shù)據(jù)同步失敗,可以不停地重試,直到新的主集群的新增或改寫數(shù)據(jù)被成功同步入舊的主集群A為止;
步驟S213,刪除消息隊列中所述讀取到的新增或改寫操作請求,在此,當新增或改寫數(shù)據(jù)寫入新的主集群B失敗時,雖然消息隊列里記錄有對應(yīng)的新增或改寫操作請求,但此時不需要同步新的主集群B中沒有的數(shù)據(jù)到舊的主集A,直接將消息隊列中所述讀取到的新增或改寫操作請求刪除即可,從而保證舊的和新的主集群上數(shù)據(jù)的一致性。本領(lǐng)域技術(shù)人員應(yīng)能理解上述新的主集群上是否存在讀取到的新增或改寫操作請求的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的新的主集群上是否存在讀取到的新增或改寫操作請求的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
如圖5所示,本申請的集群切換方法一優(yōu)選的實施例中,當所述寫操作請求為對數(shù)據(jù)的刪除操作請求時,執(zhí)行步驟S2,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,還包括:
步驟S30,將所述刪除操作請求寫入消息隊列;
步驟S31,從消息隊列中讀取刪除操作請求,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致,刪除消息隊列中所述讀取到的刪除操作請求。在此,消息隊列中的寫操作請求用于標注新的主集群B上待與舊的主集群A上的對應(yīng)數(shù)據(jù)保持一致的刪除數(shù)據(jù),在每完成將新的主集群B上的一個刪除數(shù)據(jù)與舊的主集群A上數(shù)據(jù)一致之后,則將對應(yīng)的一個寫操作請求刪除,從而保證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。本領(lǐng)域技術(shù)人員應(yīng)能理解上述消息隊列的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的消息隊列的描述如可適用于本申請,也應(yīng)包含在本申請保 護范圍以內(nèi),并在此以引用方式包含于此。
本申請的集群切換方法一優(yōu)選的實施例中,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致后,刪除消息隊列中所述讀取到的刪除操作請求,包括:
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都不存在,則刪除消息隊列中所述讀取到的刪除操作請求;此時,所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)已經(jīng)保持一致,直接刪除消息隊列中所述讀取到的刪除操作請求即可;
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在新的主集群上不存在,而在舊的主集群上存在,則刪除舊的主集群上對應(yīng)的刪除數(shù)據(jù)后,刪除消息隊列中所述讀取到的刪除操作請求;在此,由于新的主集群上的對應(yīng)數(shù)據(jù)已經(jīng)刪除,則應(yīng)對應(yīng)將舊的主集群上對應(yīng)的刪除數(shù)據(jù),然后刪除消息隊列中所述讀取到的刪除操作請求,從而使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致;
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的主集群上不存在,而在新的主集群上存在,則將新的主集群上對應(yīng)的刪除數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的刪除操作請求;在此,由于新的主集群B上應(yīng)該刪除的數(shù)據(jù)沒有刪除,為了使舊的主集群A與新的主集群B始終保持一致,可以將新的主集群B上該未刪除的數(shù)據(jù)刪除同步到舊的主集群A后,再刪除消息隊列中對應(yīng)的刪除操作請求;
若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都存在,則刪除消息隊列中所述讀取到的刪除操作請求。在此,所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)已經(jīng)保持一致,直接刪除消息隊列中所述讀取到的刪除操作請求即可。本領(lǐng)域技術(shù)人員應(yīng)能理解上述所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
如圖6所示,本申請的集群切換方法一優(yōu)選的實施例中,步驟S3,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在舊的和新的主集群上響應(yīng)的讀操作請求,包括:
步驟S41,判斷是否從舊的和新的主集群上讀取到所述讀操作請求所對應(yīng)的數(shù)據(jù),
步驟S42,若在舊的或新的主集群讀取到對應(yīng)的數(shù)據(jù),則返回該數(shù)據(jù);在此,若從舊的或新的主集群中的其中一個主集群上讀取到對應(yīng)的數(shù)據(jù),則直接向返回該讀取到的數(shù)據(jù)即可,以滿足用戶的讀取需求;
步驟S43,若在舊的和新的主集群都讀取到對應(yīng)的數(shù)據(jù),則返回新的主集群上讀取到的對應(yīng)的數(shù)據(jù)。在此,若同時在舊的或新的主集群上都讀取到對應(yīng)的數(shù)據(jù),由于新的主集群B上的數(shù)據(jù)要么是跟舊的主集群A上的數(shù)據(jù)版本一致,要么是比舊的主集群A上的數(shù)據(jù)版本更新的版本,即替換后的優(yōu)先級更高的對應(yīng)數(shù)據(jù)的更新版本,所以向用戶返回新的主集群上讀取到的對應(yīng)的數(shù)據(jù)即可。另外,如果在舊的或新的主集群上都未讀取到對應(yīng)的數(shù)據(jù),則可以向用戶返回讀取失敗的信息。
如圖7所示,根據(jù)本申請的另一面,還提供一種集群切換設(shè)備100,其中,該設(shè)備100包括:
同步裝置1,用于在舊的主集群向新的主集群切換開始后,將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群上,其中,將新的主集群上所述剩余原始數(shù)據(jù)的優(yōu)先級設(shè)置為低級;具體的,舊的主集群A向新的主集群B同步的時間是在舊的主集群A向新的主集群B切換之前開始,舊的主集群A向新的主集群B同步完成時,舊的主集群A向新的主集群B切換也隨之完成,這里舊的主集群A向新的主集群B是指將舊的主集群A上的原始數(shù)據(jù)備份到主集群B,以在舊的主集群A向新的主集群B切換完成后由新的主集群B對外向用戶提供數(shù)據(jù)讀寫服務(wù),另外,由于舊的主集群A向新的主集群B同步先于集群切換開始,新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)包括 集群切換開始前,新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù),及集群切換開始后至集群切換結(jié)束,新的主集群B上從舊的主集群A同步來的剩余的原始數(shù)據(jù),例如,舊的主集群A上原有5000條原始數(shù)據(jù),新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)包括集群切換開始前,新的主集群B上已經(jīng)從舊的主集群A同步來的5000條原始數(shù)據(jù)中的2000條,那么新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)還要包括集群切換開始后至集群切換結(jié)束,新的主集群B上需要從舊的主集群A同步來的剩余的3000條原始數(shù)據(jù),在此,無論是集群切換開始前,還是集群切換開始后至集群切換結(jié)束,新的主集群B上從舊的主集群A同步來的原始數(shù)據(jù)的優(yōu)先級都設(shè)置為低級如0級,以與后續(xù)設(shè)置為高級的寫操作請求對應(yīng)的新數(shù)據(jù)如1級相區(qū)分;
同步期間寫響應(yīng)裝置2,用于在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求,其中,將寫操作請求對應(yīng)的新數(shù)據(jù)的優(yōu)先級設(shè)置為高級,并只允許在新的主集群上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本;具體的,同步裝置1和同步期間寫響應(yīng)裝置2是同時進行的,在集群切換開始后,新的主集群B上會存在兩類數(shù)據(jù),一類是新數(shù)據(jù),另一類是從舊的主集群A同步來的原始數(shù)據(jù),為了防止從舊的主集群A同步來的原始數(shù)據(jù)覆蓋新數(shù)據(jù),并保證新數(shù)據(jù)如1級數(shù)據(jù)能夠覆蓋從舊的主集群A同步來的原始數(shù)據(jù)(低級數(shù)據(jù)如0級數(shù)據(jù))或者更新的新數(shù)據(jù)(同級數(shù)據(jù)如1級數(shù)據(jù)),這里設(shè)置只允許新的主集群B上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本,例如,新的主集群B上有一從舊的主集群上同步來的原始數(shù)據(jù)a=100,隨后用戶發(fā)起一個寫操作請求所對應(yīng)的新數(shù)據(jù)為a=200,由于a=100的數(shù)據(jù)級別為低級如0級,而a=200的數(shù)據(jù)級別為高級如1級,則高級數(shù)據(jù)覆蓋同一數(shù)據(jù)低級版本,新的主集群B上a數(shù)據(jù)的值對應(yīng)更新為200,如果,接著又有用戶發(fā)起一個更新的寫操作請求所對應(yīng)的新數(shù)據(jù)為a=300,則高級覆蓋同一數(shù)據(jù)之前同級版本,新的主集群上a數(shù)據(jù)的值對應(yīng)更新為 300;又如,在新的主集群B上用戶發(fā)起一個寫操作請求所對應(yīng)的新數(shù)據(jù)為a=200,隨后,又有一從舊的主集群A上同步來的原始數(shù)據(jù)a=100,由于a=100的數(shù)據(jù)級別為低級如0級,而a=200的數(shù)據(jù)級別為高級如1級,則低級不能覆蓋同一數(shù)據(jù)高級版本,新的主集群上a數(shù)據(jù)的值對應(yīng)仍為200;
同步結(jié)束寫響應(yīng)裝置3,用于在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,在新的主集群上響應(yīng)寫操作請求。具體的,同步結(jié)束寫響應(yīng)裝置3是在同步裝置1和同步期間寫響應(yīng)裝置2執(zhí)行之后進行,在集群同步結(jié)束后,由于舊的主集群A的所有原始數(shù)據(jù)已經(jīng)都同步到新的主集群B上,所以只要在新的主集群B上響應(yīng)數(shù)據(jù)寫操作請求即可,也不再需要區(qū)分新的主集群B上數(shù)據(jù)的優(yōu)先級。本實施例能夠在不影響用戶使用的情況下,切換對外服務(wù)的主集群,即在不需要禁止用戶訪問的情況下,在切換開始后至切換結(jié)束期間使用戶能讀寫到全部數(shù)據(jù),并且舊的和新的主集群上數(shù)據(jù)能夠保證一致,實現(xiàn)集群間數(shù)據(jù)的無縫遷移或備份。
如圖8所示,本申請的集群切換設(shè)備一優(yōu)選的實施例中,所述設(shè)備100還包括同步期間讀響應(yīng)裝置4,用于在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在舊的和新的主集群上響應(yīng)的讀操作請求;
所述設(shè)備100還包括同步結(jié)束讀響應(yīng)裝置5,用于在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群結(jié)束后,在新的主集群上響應(yīng)讀操作請求。具體的,在集群同步結(jié)束前,需要在舊的和新的主集群上響應(yīng)在舊的主集群A向新的主集群B同步期間的數(shù)據(jù)讀操作請求,以避免集群同步結(jié)束前,在有些原始數(shù)據(jù)還沒有同步到新的主集群的情況下,即使沒有在新的主集群B上找到需要的原始數(shù)據(jù),還可以在舊的主集群上找到需要的原始數(shù)據(jù),所以這時需要同時在舊的和新的主集群上響應(yīng)在舊的主集群A向新的主集群B同步期間的數(shù)據(jù)讀操作請求;而在集群同步結(jié)束后,由于舊的主集群的所有原始數(shù)據(jù)已經(jīng)都同步到新的主集群上,所以只要在新的主集群上響應(yīng)數(shù)據(jù)讀操作請求即可,都可以滿足用戶的數(shù)據(jù)需求。
本申請的集群切換設(shè)備一優(yōu)選的實施例中,所述寫操作請求包括對數(shù)據(jù)的新增、改寫和刪除操作請求。具體的,舊的主集群向新的主集群切換開始后,用戶的寫操作請求在新的主集群上新增其沒有的數(shù)據(jù),或者對已有的數(shù)據(jù)版本的修改,或者對已有數(shù)據(jù)的刪除,從而滿足用戶的各種寫操作需求。本領(lǐng)域技術(shù)人員應(yīng)能理解上述寫操作請求的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的寫操作請求的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
如圖9所示,本申請的集群切換設(shè)備一優(yōu)選的實施例中,所述設(shè)備100還包括新增或改寫請求消息隊列裝置6,用于當所述寫操作請求為對數(shù)據(jù)的新增或改寫時,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,將所述新增或改寫操作請求寫入消息隊列,從所述消息隊列中讀取新增或改寫操作請求,將讀取到的新增或改寫操作請求所對應(yīng)的新的主集群上的新增或改寫數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的寫操作請求。在此,消息隊列中的寫操作請求用于標注新的主集群B上待同步到舊的主集群A上的新增或改寫數(shù)據(jù),在每完成將新的主集群B上的一個新增或改寫數(shù)據(jù)同步到舊的主集群A上之后,則將對應(yīng)的一個寫操作請求刪除,從而保證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。本領(lǐng)域技術(shù)人員應(yīng)能理解上述消息隊列的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的消息隊列的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
本申請的集群切換設(shè)備一優(yōu)選的實施例中,所述新增或改寫請求消息隊列裝置6,用于判斷新的主集群上是否存在讀取到的新增或改寫操作請求所對應(yīng)的新增或改寫數(shù)據(jù),若存在,將該新增或改寫數(shù)據(jù)同步到舊的主集群上,刪除消息隊列中所述讀取到的新增或改寫操作請求,在此,如果一次數(shù)據(jù)同步失敗,可以不停地重試,直到新的主集群的新增或改寫數(shù)據(jù)被成功同步入 舊的主集群A為止;若不存在,刪除消息隊列中所述讀取到的新增或改寫操作請求,在此,當新增或改寫數(shù)據(jù)寫入新的主集群B失敗時,雖然消息隊列里記錄有對應(yīng)的新增或改寫操作請求,但此時不需要同步新的主集群B中沒有的數(shù)據(jù)到舊的主集A,直接將消息隊列中所述讀取到的新增或改寫操作請求刪除即可,從而保證舊的和新的主集群上數(shù)據(jù)的一致性。本領(lǐng)域技術(shù)人員應(yīng)能理解上述新的主集群上是否存在讀取到的新增或改寫操作請求的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的新的主集群上是否存在讀取到的新增或改寫操作請求的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
如圖10所示,本申請的集群切換設(shè)備一優(yōu)選的實施例中,所述設(shè)備100還包括刪除請求消息隊列裝置7,用于當所述寫操作請求為對數(shù)據(jù)的刪除操作請求時,在將舊的主集群上待同步的剩余原始數(shù)據(jù)同步到新的主集群期間,在新的主集群上響應(yīng)寫操作請求的同時,將所述刪除操作請求寫入消息隊列,從消息隊列中讀取刪除操作請求,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致后,刪除消息隊列中所述讀取到的刪除操作請求。在此,消息隊列中的寫操作請求用于標注新的主集群B上待與舊的主集群A上的對應(yīng)數(shù)據(jù)保持一致的刪除數(shù)據(jù),在每完成將新的主集群B上的一個刪除數(shù)據(jù)與舊的主集群A上數(shù)據(jù)一致之后,則將對應(yīng)的一個寫操作請求刪除,從而保證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。本領(lǐng)域技術(shù)人員應(yīng)能理解上述消息隊列的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的消息隊列的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
本申請的集群切換設(shè)備一優(yōu)選的實施例中,所述刪除請求消息隊列裝置7,用于若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都不存在,則刪除消息隊列中所述讀取到的刪除操作請求,此時,所述舊的和 新的主集群上的對應(yīng)數(shù)據(jù)已經(jīng)保持一致,直接刪除消息隊列中所述讀取到的刪除操作請求即可;若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在新的主集群上不存在,而在舊的主集群上存在,則刪除舊的主集群上對應(yīng)的刪除數(shù)據(jù)后,刪除消息隊列中所述讀取到的刪除操作請求,在此,由于新的主集群上的對應(yīng)數(shù)據(jù)已經(jīng)刪除,則應(yīng)對應(yīng)將舊的主集群上對應(yīng)的刪除數(shù)據(jù),然后刪除消息隊列中所述讀取到的刪除操作請求,從而使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致;若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的主集群上不存在,而在新的主集群上存在,則將新的主集群上對應(yīng)的刪除數(shù)據(jù)同步到舊的主集群上后,刪除消息隊列中所述讀取到的刪除操作請求,在此,由于新的主集群B上應(yīng)該刪除的數(shù)據(jù)沒有刪除,為了使舊的主集群A與新的主集群B始終保持一致,可以將新的主集群B上該未刪除的數(shù)據(jù)刪除同步到舊的主集群A后,再刪除消息隊列中對應(yīng)的刪除操作請求;若讀取到刪除操作請求所對應(yīng)的刪除數(shù)據(jù)在舊的和新的主集群上都存在,則刪除消息隊列中所述讀取到的刪除操作請求,在此,所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)已經(jīng)保持一致,直接刪除消息隊列中所述讀取到的刪除操作請求即可。本領(lǐng)域技術(shù)人員應(yīng)能理解上述所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致的描述僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致的描述如可適用于本申請,也應(yīng)包含在本申請保護范圍以內(nèi),并在此以引用方式包含于此。
本申請的集群切換設(shè)備一優(yōu)選的實施例中,所述同步期間讀響應(yīng)裝置4,用于判斷是否從舊的和新的主集群上讀取到所述讀操作請求所對應(yīng)的數(shù)據(jù),若在舊的或新的主集群讀取到對應(yīng)的數(shù)據(jù),則返回該數(shù)據(jù),在此,若從舊的或新的主集群中的其中一個主集群上讀取到對應(yīng)的數(shù)據(jù),則直接向返回該讀取到的數(shù)據(jù)即可,以滿足用戶的讀取需求;若在舊的和新的主集群都讀取到對應(yīng)的數(shù)據(jù),則返回新的主集群上讀取到的對應(yīng)的數(shù)據(jù),在此,若同時在舊的或新的主集群上都讀取到對應(yīng)的數(shù)據(jù),由于新的主集群B上的數(shù)據(jù)要么是 跟舊的主集群A上的數(shù)據(jù)版本一致,要么是比舊的主集群A上的數(shù)據(jù)版本更新的版本,即替換后的優(yōu)先級更高的對應(yīng)數(shù)據(jù)的更新版本,所以向用戶返回新的主集群上讀取到的對應(yīng)的數(shù)據(jù)即可。
綜上所述,本申請通過在舊的主集群向新的主集群同步期間,在新的主集群上響應(yīng)寫操作請求,并將寫操作請求對應(yīng)的新數(shù)據(jù)的優(yōu)先級設(shè)置為高級,其中,只允許在新的主集群上優(yōu)先級為高級的數(shù)據(jù)的版本覆蓋優(yōu)先級為低級或高級的同一數(shù)據(jù)的另一版本,能夠在不影響用戶使用的情況下,切換對外服務(wù)的主集群,即在不需要禁止用戶訪問的情況下,在切換開始后至切換結(jié)束期間使用戶能讀寫到全部數(shù)據(jù),并且舊的和新的主集群上數(shù)據(jù)能夠保證一致,實現(xiàn)集群間數(shù)據(jù)的無縫遷移或備份。
進一步的,本申請通過將所述新增或改寫操作請求寫入消息隊列,從所述消息隊列中讀取新增或改寫操作請求,將讀取到的新增或改寫操作請求所對應(yīng)的新的主集群B上的新增或改寫數(shù)據(jù)同步到舊的主集群A上后,刪除消息隊列中所述讀取到的寫操作請求,從而保證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。
進一步的,本申請通過將所述刪除操作請求寫入消息隊列,從消息隊列中讀取刪除操作請求,根據(jù)讀取到刪除操作請求使所述舊的和新的主集群上的對應(yīng)數(shù)據(jù)保持一致,刪除消息隊列中所述讀取到的刪除操作請求,從而保證舊的和新的主集群上數(shù)據(jù)的一致性,始終保持兩個集群上的數(shù)據(jù)同步,以滿足當又有從新的主集群B切換回舊的主集群A的需求。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。
需要注意的是,本發(fā)明可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設(shè) 備來實現(xiàn)。在一個實施例中,本發(fā)明的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本發(fā)明的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本發(fā)明的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。
另外,本發(fā)明的一部分可被應(yīng)用為計算機程序產(chǎn)品,例如計算機程序指令,當其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本發(fā)明的方法和/或技術(shù)方案。而調(diào)用本發(fā)明的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設(shè)備的工作存儲器中。在此,根據(jù)本發(fā)明的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本發(fā)明的多個實施例的方法和/或技術(shù)方案。
對于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本發(fā)明內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。