一種異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)遷移方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)迀移方法,尤其是涉及一種異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)迀移方法。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時代的來臨,越來越多的分布式存儲系統(tǒng)應(yīng)運而生。當(dāng)現(xiàn)有的分布式存儲系統(tǒng)在實際使用一段時間后,可能會出現(xiàn)各種各樣的問題:并發(fā)性不高,性能變差,可用空間越來越少,服務(wù)器負(fù)載越來越高等。有些問題可能可以通過簡單的添加磁盤,內(nèi)存的方式解決,但有些問題可能需要重新設(shè)計和改變底層的分布式存儲系統(tǒng)來解決。
[0003]若兩種異構(gòu)的分布式存儲系統(tǒng)數(shù)據(jù)格式變化不是太大,還可以勉強(qiáng)兼容的情況下,可能可以采用直接格式轉(zhuǎn)換的方式進(jìn)行數(shù)據(jù)轉(zhuǎn)換以達(dá)到迀移的目的。但如果數(shù)據(jù)格式不能兼容,則意味著需要將原來的分布式存儲系統(tǒng)上面的數(shù)據(jù)迀移到新的分布式存儲系統(tǒng)中。為了解決異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)迀移問題,需要一個研發(fā)團(tuán)隊來實現(xiàn)數(shù)據(jù)迀移的過程,他們需要對兩邊的分布式系統(tǒng)都十分了解,制定一套完整的數(shù)據(jù)迀移的解決方案,并進(jìn)行環(huán)境搭建配置,和前期的反復(fù)預(yù)測試。
[0004]分布式存儲系統(tǒng)的數(shù)據(jù)迀移并不是一項簡單的工程,通常需要一個專業(yè)人員去實施迀移過程,并且需要停止原來的分布式存儲系統(tǒng)的服務(wù),也就是只能離線迀移,而且迀移時間和數(shù)據(jù)量成正比,缺少是否迀移完全的校驗,如果迀移過程中,出現(xiàn)誤操作或者異常問題,可能會有丟失數(shù)據(jù)的風(fēng)險。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)迀移方法,采用MVC模式,實現(xiàn)了迀移可視化,迀移過程可管理,不中斷服務(wù)的在線迀移,而且使用簡單,無須專業(yè)人員,即可完成迀移過程,保證數(shù)據(jù)不丟失。
[0006]本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
[0007]—種異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)迀移方法,其特征在于,該方法采用MVC模式,具體包括以下步驟:
[0008]1) View模塊發(fā)起迀移任務(wù);
[0009]2) Controller模塊接收迀移命令;
[0010]3) Controller模塊開始數(shù)據(jù)迀移;
[0011]4) View模塊每隔設(shè)定時間自動向Controller模塊查詢迀移進(jìn)度。
[0012]所述的Controller模塊的數(shù)據(jù)迀移過程為:
[0013]首先調(diào)用Model模塊的讀取數(shù)據(jù)接口,從第一分布式存儲系統(tǒng)中讀取數(shù)據(jù);
[0014]然后調(diào)用Model模塊的寫入數(shù)據(jù)接口,往第二分布式存儲系統(tǒng)中寫入剛剛讀取的數(shù)據(jù);
[0015]最后保存該條迀移記錄,如此循環(huán),直到迀移任務(wù)中的數(shù)據(jù)全部迀移完成,則迀移過程結(jié)束。
[0016]所述的View模塊為帶有圖形界面的客戶端,包括圖形界面展示單元、迀移命令發(fā)起單元和迀移進(jìn)度實時查詢單元。
[0017]所述的View模塊運行于Windows系統(tǒng)上。
[0018]所述的Controller模塊為控制器,包括迀移命令接收單元、數(shù)據(jù)迀移的調(diào)度單元以及迀移過程中的進(jìn)度記錄單元。
[0019]所述的Model模塊為數(shù)據(jù)讀寫模塊,包括從第一分布式存儲系統(tǒng)中讀取數(shù)據(jù)接口,以及往第二分布式存儲系統(tǒng)中寫入數(shù)據(jù)接口。
[0020]當(dāng)多個任務(wù)一起迀移時,采用多線程的方式進(jìn)行任務(wù)迀移。
[0021]所述的采用多線程的方式進(jìn)行任務(wù)迀移具體為:
[0022]Controller模塊接收迀移任務(wù)之后,生成一個隨機(jī)的任務(wù)ID,開啟一個迀移線程,此時View模塊發(fā)起任務(wù)就結(jié)束了,View模塊根據(jù)返回的任務(wù)ID去查詢該迀移任務(wù)的進(jìn)度;
[0023]線程中則執(zhí)行迀移數(shù)據(jù)的流程,保存迀移記錄也按照不同的ID保存到不同的容器中;
[0024]迀移結(jié)束后,該任務(wù)ID結(jié)束,View模塊查詢到該任務(wù)ID結(jié)束,不再繼續(xù)查詢?nèi)蝿?wù)記錄。
[0025]當(dāng)數(shù)據(jù)迀移過程發(fā)生中斷,斷點處繼續(xù)迀移包括以下步驟:
[0026]A) Controller 模塊開始運行;
[0027]B)讀取所有未結(jié)束的任務(wù)ID ;
[0028]C)讀取未結(jié)束的任務(wù)ID容器中的迀移記錄;
[0029]D)根據(jù)迀移記錄分析出斷點;
[0030]E)啟動迀移線程繼續(xù)迀移。
[0031]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
[0032]1)通過可視化的圖形界面,減少了迀移過程中的人工成本,不需要具備專業(yè)知識的人也能夠?qū)嵤?shù)據(jù)迀移的過程;
[0033]2)通過可視化的圖形界面,使得迀移過程可以管理,可以通過拆分很多子迀移任務(wù),使一個迀移任務(wù)不會花費時間太長;同時讓可以多個互不關(guān)聯(lián)的子任務(wù)一起迀移,提高迀移效率;
[0034]3)由于保存了迀移記錄,可以實現(xiàn)增量迀移(待迀移的數(shù)據(jù)第一次迀移完成之后,發(fā)生了變化,第二次迀移不需要迀移全部數(shù)據(jù),只需要迀移增量部分的數(shù)據(jù))和斷點處續(xù)迀(迀移過程因各種異常情況的因素導(dǎo)致中斷,迀移數(shù)據(jù)再次開始時,能從中斷的地方繼續(xù)迀移,而不需要全部再迀移一遍);
[0035]4)由于分布式存儲系統(tǒng)的讀取操作并不會導(dǎo)致分布式存儲系統(tǒng)提供的服務(wù)中斷,該方案還支持在線地在異構(gòu)分布式存儲系統(tǒng)之間數(shù)據(jù)迀移;同時對原有的分布式存儲系統(tǒng)不會構(gòu)成數(shù)據(jù)丟失的風(fēng)險。
【附圖說明】
[0036]圖1為本發(fā)明的整體結(jié)構(gòu)示意圖;
[0037]圖2為異構(gòu)分布式存儲系統(tǒng)的多任務(wù)并發(fā)迀移流程圖;
[0038]圖3為異構(gòu)分布式存儲系統(tǒng)的斷點續(xù)迀移數(shù)據(jù)流程圖。
【具體實施方式】
[0039]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應(yīng)屬于本發(fā)明保護(hù)的范圍。
[0040]MVC模式全名為Model View Controller,是模型-視圖-控制器的縮寫,是一種軟件設(shè)計典范,是一種業(yè)務(wù)邏輯、數(shù)據(jù),界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個部件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯。本發(fā)明采用MVC模式實現(xiàn)一種異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)迀移方法,則可以讓迀移過程可視化。
[0041]如圖1所示,本發(fā)明基于MVC的分布式存儲系統(tǒng)的數(shù)據(jù)迀移方法,包括以下步驟:
[0042]1)、View模塊發(fā)起迀移任務(wù);
[0043]2)、Controller模塊接收迀移命令之后開始迀移;
[0044]3)、Controller模塊從View模塊讀取待迀移數(shù)據(jù);
[0045]4)、View模塊調(diào)用第一分布式存儲系統(tǒng)的讀取數(shù)據(jù)接口讀取數(shù)據(jù);
[0046]5)、Controller模塊往View模塊寫入待迀移數(shù)據(jù);
[0047]6)、View模塊調(diào)用第二分布式存儲系統(tǒng)的寫入數(shù)據(jù)接口寫入數(shù)據(jù);
[0048]7)、Controller模塊保存迀移記錄;
[0049]8)、View模塊每隔設(shè)定時間查詢迀移進(jìn)度。
[0050]當(dāng)多個任務(wù)一起迀移時,采用多線程的方式進(jìn)行任務(wù)迀移,各個線程之間的數(shù)據(jù)迀移不受影響,如圖2所示,Controller模塊接收迀移任務(wù)之后,生成一個隨機(jī)的任務(wù)ID,開啟一個迀移線程,此時View模塊發(fā)起任務(wù)就結(jié)束了,View模塊可以根據(jù)返回的任務(wù)ID去查詢該迀移任務(wù)的進(jìn)度了。線程中則執(zhí)行迀移數(shù)據(jù)的流程,保存迀移記錄也是按照不同的ID保存到不同的容器中。迀移結(jié)束后,該任務(wù)ID也就結(jié)束了。View模塊查詢到該任務(wù)ID結(jié)束,不再繼續(xù)查詢?nèi)蝿?wù)記錄。
[0051]當(dāng)數(shù)據(jù)迀移過程發(fā)生中斷,如圖3所示,斷點處繼續(xù)迀移包括以下步驟:
[0052]1)、Controller模塊開始運行;2)、讀取所有未結(jié)束的任務(wù)ID ;3)、讀取未結(jié)束的任務(wù)ID容器中的迀移記錄;4)、根據(jù)迀移記錄分析出斷點;5)、啟動迀移線程繼續(xù)迀移。
[0053]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項】
1.一種異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)迀移方法,其特征在于,該方法采用MVC模式,具體包括以下步驟: 1)View模塊發(fā)起迀移任務(wù); 2)Controller模塊接收迀移命令; 3)Controller模塊開始數(shù)據(jù)迀移; 4)View模塊每隔設(shè)定時間自動向Controller模塊查詢迀移進(jìn)度。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)迀移方法,其特征在于,所述的Controller模塊的數(shù)據(jù)迀移過程為: 首先調(diào)用Model模塊的讀取數(shù)據(jù)接口,從第一分布式存儲系統(tǒng)中讀取數(shù)據(jù); 然后調(diào)用Model模塊的寫入數(shù)據(jù)接口,往第二分布式存儲系統(tǒng)中寫入剛剛讀取的數(shù)據(jù); 最后保存該條迀移記錄,如此循環(huán),直到迀移任務(wù)中的數(shù)據(jù)全部迀移完成,則迀移過程結(jié)束。3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)迀移方法,其特征在于,所述的View模塊為帶有圖形界面的客戶端,包括圖形界面展示單元、迀移命令發(fā)起單元和迀移進(jìn)度實時查詢單元。4.根據(jù)權(quán)利要求1或3所述的數(shù)據(jù)迀移方法,其特征在于,所述的View模塊運行于Windows系統(tǒng)上。5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)迀移方法,其特征在于,所述的Controller模塊為控制器,包括迀移命令接收單元、數(shù)據(jù)迀移的調(diào)度單元以及迀移過程中的進(jìn)度記錄單元。6.根據(jù)權(quán)利要求2所述的數(shù)據(jù)迀移方法,其特征在于,所述的Model模塊為數(shù)據(jù)讀寫模塊,包括從第一分布式存儲系統(tǒng)中讀取數(shù)據(jù)接口,以及往第二分布式存儲系統(tǒng)中寫入數(shù)據(jù)接口。7.根據(jù)權(quán)利要求1所述的數(shù)據(jù)迀移方法,其特征在于,當(dāng)多個任務(wù)一起迀移時,采用多線程的方式進(jìn)行任務(wù)迀移。8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)迀移方法,其特征在于,所述的采用多線程的方式進(jìn)行任務(wù)迀移具體為:Controller模塊接收迀移任務(wù)之后,生成一個隨機(jī)的任務(wù)ID,開啟一個迀移線程,此時View模塊發(fā)起任務(wù)就結(jié)束了,View模塊根據(jù)返回的任務(wù)ID去查詢該迀移任務(wù)的進(jìn)度;線程中則執(zhí)行迀移數(shù)據(jù)的流程,保存迀移記錄也按照不同的ID保存到不同的容器中;迀移結(jié)束后,該任務(wù)ID結(jié)束,View模塊查詢到該任務(wù)ID結(jié)束,不再繼續(xù)查詢?nèi)蝿?wù)記錄。9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)迀移方法,其特征在于,當(dāng)數(shù)據(jù)迀移過程發(fā)生中斷,斷點處繼續(xù)迀移包括以下步驟: A)Controller模塊開始運行; B)讀取所有未結(jié)束的任務(wù)ID; C)讀取未結(jié)束的任務(wù)ID容器中的迀移記錄; D)根據(jù)迀移記錄分析出斷點; E)啟動迀移線程繼續(xù)迀移。
【專利摘要】本發(fā)明涉及一種異構(gòu)分布式存儲系統(tǒng)的數(shù)據(jù)遷移方法,該方法采用MVC模式,具體包括以下步驟:1)View模塊發(fā)起遷移任務(wù);2)Controller模塊接收遷移命令;3)Controller模塊開始數(shù)據(jù)遷移;4)View模塊每隔設(shè)定時間自動向Controller模塊查詢遷移進(jìn)度。與現(xiàn)有技術(shù)相比,本發(fā)明具有實現(xiàn)了遷移可視化,遷移過程可管理,不中斷服務(wù)的在線遷移,而且使用簡單,無須專業(yè)人員即可完成遷移過程,保證數(shù)據(jù)不丟失等優(yōu)點。
【IPC分類】G06F3/06
【公開號】CN105404474
【申請?zhí)枴緾N201510893938
【發(fā)明人】劉浪
【申請人】上海愛數(shù)信息技術(shù)股份有限公司
【公開日】2016年3月16日
【申請日】2015年12月7日