分布式系統(tǒng)中元數(shù)據(jù)的遷移方法及裝置的制造方法
【專利摘要】本發(fā)明提供了一種分布式系統(tǒng)中元數(shù)據(jù)的遷移方法及裝置,其中該方法包括:接收來自分布式系統(tǒng)的通知消息,其中,該通知消息用于指示元數(shù)據(jù)分布路由規(guī)則發(fā)生了變化;依據(jù)通知消息比較調(diào)整前與調(diào)整后的元數(shù)據(jù)分布路由規(guī)則,得到元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的遷移數(shù)據(jù)流,其中,遷移數(shù)據(jù)流用于指示元數(shù)據(jù)的遷移過程。通過本發(fā)明,解決了相關(guān)技術(shù)中調(diào)整元數(shù)據(jù)路由規(guī)則時(shí),需要將部分元數(shù)據(jù)拆分或遷移到其它一個(gè)或多個(gè)元數(shù)據(jù)服務(wù)器群集,并同步修改受影響的元數(shù)據(jù)路由規(guī)則的問題。
【專利說明】
分布式系統(tǒng)中元數(shù)據(jù)的遷移方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種分布式系統(tǒng)中元數(shù)據(jù)的迀移方法及裝置。
【背景技術(shù)】
[0002]客戶請求消息到達(dá)的分布式系統(tǒng)中處理客戶請求消息的邊界網(wǎng)關(guān)后,邊界網(wǎng)關(guān)需要根據(jù)某種方法首先定位元數(shù)據(jù)服務(wù)器,之后由元數(shù)據(jù)服務(wù)器查詢自身數(shù)據(jù)庫將消息路由給下一級元數(shù)據(jù)服務(wù)器或路由給存儲真實(shí)數(shù)據(jù)的服務(wù)器。在上述定位元數(shù)據(jù)服務(wù)器的過程中,相關(guān)技術(shù)中通常采用兩種方案:預(yù)先配置元數(shù)據(jù)的路由信息或系統(tǒng)創(chuàng)建內(nèi)部數(shù)據(jù)庫以維護(hù)查詢條件與元數(shù)據(jù)服務(wù)器的路由對照關(guān)系。但隨著存儲數(shù)據(jù)的增多,查詢對照關(guān)系的操作將成為系統(tǒng)的瓶頸,并導(dǎo)致此方案將不再可行,因此在大容量數(shù)據(jù)庫的方案中多采用預(yù)先配置元數(shù)據(jù)路由信息的方案。
[0003]針對預(yù)先配置元數(shù)據(jù)路由的方案,相關(guān)技術(shù)中存在的問題是:在該方案中,路由規(guī)則一旦確定,元數(shù)據(jù)的分布即與元數(shù)據(jù)的路由信息產(chǎn)生綁定。因此當(dāng)系統(tǒng)需要調(diào)整元數(shù)據(jù)路由規(guī)則時(shí),需要首先將元數(shù)據(jù)從現(xiàn)有某一個(gè)元數(shù)據(jù)服務(wù)器群集迀移到另外一個(gè)群集,并確保在元數(shù)據(jù)迀移完成后控制系統(tǒng)切換到新的元數(shù)據(jù)分布路由方案,例如,系統(tǒng)中需要修改一個(gè)用戶號碼段的路由信息到新的元數(shù)據(jù)服務(wù)器群集時(shí),或者當(dāng)某一個(gè)元數(shù)據(jù)服務(wù)器群集中元數(shù)據(jù)的增長達(dá)到系統(tǒng)瓶頸時(shí),系統(tǒng)需要將部分元數(shù)據(jù)拆分到其他一個(gè)或多個(gè)元數(shù)據(jù)服務(wù)器群集,并同步修改受影響的元數(shù)據(jù)路由規(guī)則。
[0004]針對相關(guān)技術(shù)中調(diào)整元數(shù)據(jù)路由規(guī)則時(shí),需要將部分元數(shù)據(jù)拆分或迀移到其它一個(gè)或多個(gè)元數(shù)據(jù)服務(wù)器群集,并同步修改受影響的元數(shù)據(jù)路由規(guī)則的問題,業(yè)界尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的主要目的在于提供一種分布式系統(tǒng)中元數(shù)據(jù)的迀移方法及裝置,以解決相關(guān)技術(shù)中調(diào)整元數(shù)據(jù)路由規(guī)則時(shí),需要將部分元數(shù)據(jù)拆分或迀移到其它一個(gè)或多個(gè)元數(shù)據(jù)服務(wù)器群集,并同步修改受影響的元數(shù)據(jù)路由規(guī)則的問題。
[0006]根據(jù)本發(fā)明的一個(gè)方面,提供了一種分布式系統(tǒng)中元數(shù)據(jù)的迀移方法,包括:接收來自分布式系統(tǒng)的通知消息,其中,該通知消息用于指示元數(shù)據(jù)分布路由規(guī)則發(fā)生了變化;依據(jù)所述通知消息比較調(diào)整前與調(diào)整后的所述元數(shù)據(jù)分布路由規(guī)則,得到所述元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流,其中,所述迀移數(shù)據(jù)流用于指示所述元數(shù)據(jù)的迀移過程,所述迀移數(shù)據(jù)流包括:第一服務(wù)器集群中迀出所述元數(shù)據(jù)的迀出節(jié)點(diǎn)、第二服務(wù)器集群中迀入所述元數(shù)據(jù)的迀入節(jié)點(diǎn)、所述元數(shù)據(jù)的內(nèi)容;依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中。
[0007]進(jìn)一步地,在依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)之前,所述方法還包括:記錄迀出所述元數(shù)據(jù)的迀移啟動(dòng)信息,其中,所述啟動(dòng)信息包括:啟動(dòng)時(shí)間、所述分布式系統(tǒng)在啟動(dòng)數(shù)據(jù)迀移前最近一次的寫操作信息,其中,所述寫操作信息包括:寫操作發(fā)生的時(shí)間、寫操作的內(nèi)容、寫操作的序號;或,通知所述迀出節(jié)點(diǎn)申請第一鎖,其中,所述第一鎖用于鎖住所述迀出節(jié)點(diǎn)中所有迀移數(shù)據(jù)的寫操作。
[0008]進(jìn)一步地,在所述迀移數(shù)據(jù)流啟動(dòng)后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述方法還包括:在所述記錄所述元數(shù)據(jù)的所述迀移啟動(dòng)信息后,將在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前的所有寫操作信息寫入到同步隊(duì)列;或,在通知所述迀出節(jié)點(diǎn)申請第一鎖后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述方法還包括:禁止所述迀出節(jié)點(diǎn)執(zhí)行所述寫操作。
[0009]進(jìn)一步地,在依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)之后,包括:通知所述迀出節(jié)點(diǎn)申請第二鎖,其中,所述第二鎖用于鎖住迀出的所述元數(shù)據(jù)的寫操作;并向所述迀入節(jié)點(diǎn)發(fā)送所述同步隊(duì)列中的所述寫操作信息;在所述元數(shù)據(jù)的內(nèi)容復(fù)制完成后,通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第二鎖;或,通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第一鎖。
[0010]進(jìn)一步地,通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù)包括:在所述迀入節(jié)點(diǎn)和所述迀出節(jié)點(diǎn)完成數(shù)據(jù)復(fù)制時(shí),通知所述分布式系統(tǒng)當(dāng)前數(shù)據(jù)迀移流復(fù)制的完成,并接收所述通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù)的指示;或,向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送用于查詢所述迀移數(shù)據(jù)流的迀移狀態(tài)的查詢指令;接收所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送的響應(yīng)于所述查詢指令的響應(yīng)指令,其中,所述響應(yīng)指令用于指示所述迀移數(shù)據(jù)流迀移狀態(tài);在所述響應(yīng)指令指示所述迀移數(shù)據(jù)流迀移成功時(shí),通知所述分布式系統(tǒng)啟用新的元數(shù)據(jù)分布路由規(guī)則,并通知所述迀出節(jié)點(diǎn)刪除所述元數(shù)據(jù)的內(nèi)容。
[0011]進(jìn)一步地,所述方法還包括:在所述查詢指令指示所述迀移數(shù)據(jù)流迀移異常時(shí),向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送回退請求,其中,所述回退請求用于指示通知所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)終止所述迀移流數(shù)據(jù)的復(fù)制操作,以及通知所述迀入節(jié)點(diǎn)刪除已復(fù)制的所述元數(shù)據(jù)的內(nèi)容。
[0012]進(jìn)一步地,所述第一服務(wù)集群或所述第二服務(wù)集群可同時(shí)作為多個(gè)迀移數(shù)據(jù)流的迀入和迀出服務(wù)集群。
[0013]根據(jù)本發(fā)明的另一個(gè)方面,提供了一種分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置,包括:接收模塊,用于接收來自分布式系統(tǒng)的通知消息,其中,該通知消息用于指示元數(shù)據(jù)分布路由規(guī)則發(fā)生了變化;比較模塊,用于依據(jù)所述通知消息比較調(diào)整前與調(diào)整后的所述元數(shù)據(jù)分布路由規(guī)則,得到所述元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流,其中,所述迀移數(shù)據(jù)流用于指示所述元數(shù)據(jù)的迀移過程,所述迀移數(shù)據(jù)流包括:第一服務(wù)器集群中迀出所述元數(shù)據(jù)的迀出節(jié)點(diǎn)、第二服務(wù)器集群中迀入所述元數(shù)據(jù)的迀入節(jié)點(diǎn)、所述元數(shù)據(jù)的內(nèi)容;第一復(fù)制模塊,用于依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中。
[0014]進(jìn)一步地,在所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中之前,所述裝置還包括:記錄模塊,用于記錄迀出所述元數(shù)據(jù)的迀移啟動(dòng)信息,其中,所述啟動(dòng)信息包括:啟動(dòng)時(shí)間、所述分布式系統(tǒng)在啟動(dòng)數(shù)據(jù)迀移前最近一次的寫操作信息,其中,所述寫操作信息包括:寫操作發(fā)生的時(shí)間、寫操作的內(nèi)容、寫操作的序號;或,第一通知模塊,用于通知所述迀出節(jié)點(diǎn)申請第一鎖,其中,所述第一鎖用于鎖住所述迀出節(jié)點(diǎn)中所有迀移數(shù)據(jù)的寫操作。
[0015]進(jìn)一步地,在所述迀移數(shù)據(jù)流啟動(dòng)后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述裝置還包括:第二復(fù)制模塊,用于在所述記錄所述元數(shù)據(jù)的所述迀移啟動(dòng)信息后,將在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前的所有寫操作信息寫入到同步隊(duì)列;或,在通知所述迀出節(jié)點(diǎn)申請第一鎖后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述裝置還包括:禁止模塊,用于禁止所述迀出節(jié)點(diǎn)執(zhí)行所述寫操作。
[0016]進(jìn)一步地,在所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中之后,所述裝置還包括:第二通知模塊,用于通知所述迀出節(jié)點(diǎn)申請第二鎖,其中,所述第二鎖用于鎖住迀出的所述元數(shù)據(jù)的寫操作;并向所述迀入節(jié)點(diǎn)發(fā)送所述同步隊(duì)列中的所述寫操作信息;在所述元數(shù)據(jù)的內(nèi)容復(fù)制完成后,通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第二鎖;或,第三通知模塊,用于通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第一鎖。
[0017]進(jìn)一步地,所述第二通知模塊包括:第一通知單元,用于在所述迀入節(jié)點(diǎn)和所述迀出節(jié)點(diǎn)完成數(shù)據(jù)復(fù)制時(shí),通知所述分布式系統(tǒng)當(dāng)前數(shù)據(jù)迀移流復(fù)制的完成;第一接收單元,用于接收所述通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù)的指示;所述第三通知模塊包括:第一發(fā)送單元,用于向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送用于查詢所述迀移數(shù)據(jù)流的迀移狀態(tài)的查詢指令;第二接收單元,用于接收所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送的響應(yīng)于所述查詢指令的響應(yīng)指令,其中,所述響應(yīng)指令用于指示所述迀移數(shù)據(jù)流迀移狀態(tài);第二通知單元,用于在所述響應(yīng)指令指示所述迀移數(shù)據(jù)流迀移成功時(shí),通知所述分布式系統(tǒng)啟用新的元數(shù)據(jù)分布路由規(guī)則,并通知所述迀出節(jié)點(diǎn)刪除所述元數(shù)據(jù)的內(nèi)容。
[0018]進(jìn)一步地,所述第三通知模塊還包括:第二發(fā)送單元,用于在所述查詢指令指示所述迀移數(shù)據(jù)流迀移異常時(shí),向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送回退請求,其中,所述回退請求用于指示通知所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)終止所述迀移流數(shù)據(jù)的復(fù)制操作,以及通知所述迀入節(jié)點(diǎn)刪除已復(fù)制的所述元數(shù)據(jù)的內(nèi)容。
[0019]進(jìn)一步地,所述第一服務(wù)集群或所述第二服務(wù)集群可同時(shí)作為多個(gè)迀移數(shù)據(jù)流的迀入和迀出服務(wù)集群。
[0020]通過本發(fā)明,采用在接收到分布式系統(tǒng)中的元數(shù)據(jù)的分布路由規(guī)則發(fā)生變化之后,通過比較調(diào)整前與調(diào)整后的元數(shù)據(jù)分布路由規(guī)則,得到元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流,據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中的方式,即通過用于指示元數(shù)據(jù)的迀移過程的移數(shù)據(jù)流,將需要迀移的元數(shù)據(jù)復(fù)制到需要迀入的節(jié)點(diǎn),實(shí)現(xiàn)元數(shù)據(jù)的迀移,同時(shí)也不用改變其他元數(shù)據(jù)的路由規(guī)則,解決了相關(guān)技術(shù)中調(diào)整元數(shù)據(jù)路由規(guī)則時(shí),需要將部分元數(shù)據(jù)拆分或迀移到其它一個(gè)或多個(gè)元數(shù)據(jù)服務(wù)器群集,并同步修改受影響的元數(shù)據(jù)路由規(guī)則的問題,進(jìn)而達(dá)到了元數(shù)據(jù)平滑移動(dòng)的效果。
【附圖說明】
[0021]此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0022]圖1是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移方法的流程圖;
[0023]圖2是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置結(jié)構(gòu)框圖;
[0024]圖3是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置可選結(jié)構(gòu)框圖一;
[0025]圖4是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置可選結(jié)構(gòu)框圖二 ;
[0026]圖5是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置可選結(jié)構(gòu)框圖三;
[0027]圖6是根據(jù)本發(fā)明可選實(shí)施例的元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器群集重新分布的執(zhí)行順序不意圖;
[0028]圖7是根據(jù)本發(fā)明可選實(shí)施例的2個(gè)元數(shù)據(jù)群集之間的元數(shù)據(jù)調(diào)整方法流程圖;
[0029]圖8是根據(jù)本發(fā)明可選實(shí)施例的元數(shù)據(jù)重新分布的方法流程圖;
[0030]圖9是根據(jù)本發(fā)明可選實(shí)施例的待迀移元數(shù)據(jù)從迀出群集到迀入群集的復(fù)制方法的流程圖;
[0031]圖10是根據(jù)本發(fā)明可選實(shí)施例的數(shù)據(jù)重新分布的復(fù)制完成的方法流程圖;
[0032]圖11是根據(jù)本發(fā)明可選實(shí)施例的回退處理方法的流程圖;
[0033]圖12是根據(jù)本發(fā)明可選實(shí)施例的元數(shù)據(jù)的迀移完成處理方法流程圖。
【具體實(shí)施方式】
[0034]需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
[0035]在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0036]本實(shí)施例提供了一種分布式系統(tǒng)中元數(shù)據(jù)的迀移方法,圖1是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移方法的流程圖,如圖1所示,該流程包括以下步驟:
[0037]步驟S102:接收來自分布式系統(tǒng)的通知消息;
[0038]其中,該通知消息用于指示元數(shù)據(jù)分布路由規(guī)則發(fā)生了變化;
[0039]步驟S104:依據(jù)通知消息比較調(diào)整前與調(diào)整后的元數(shù)據(jù)分布路由規(guī)則,得到元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流;
[0040]其中,迀移數(shù)據(jù)流用于指示元數(shù)據(jù)的迀移過程,迀移數(shù)據(jù)流包括:第一服務(wù)器集群中迀出元數(shù)據(jù)的迀出節(jié)點(diǎn)、第二服務(wù)器集群中迀入元數(shù)據(jù)的迀入節(jié)點(diǎn)、迀移涉及的元數(shù)據(jù)的內(nèi)容;
[0041]步驟S106:依據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中。
[0042]通過本實(shí)施例,采用在接收到分布式系統(tǒng)中的元數(shù)據(jù)的分布路由規(guī)則發(fā)生變化之后,通過比較調(diào)整前與調(diào)整后的元數(shù)據(jù)分布路由規(guī)則,得到元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流,據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中的方式,即通過用于指示元數(shù)據(jù)的迀移過程的移數(shù)據(jù)流,將需要迀移的元數(shù)據(jù)復(fù)制到需要迀入的節(jié)點(diǎn),實(shí)現(xiàn)元數(shù)據(jù)的迀移,同時(shí)也不用改變其他元數(shù)據(jù)的路由規(guī)則,解決了相關(guān)技術(shù)中調(diào)整元數(shù)據(jù)路由規(guī)則時(shí),需要將部分元數(shù)據(jù)拆分或迀移到其它一個(gè)或多個(gè)元數(shù)據(jù)服務(wù)器群集,并同步修改受影響的元數(shù)據(jù)路由規(guī)則的問題,進(jìn)而達(dá)到了元數(shù)據(jù)平滑移動(dòng)的效果。
[0043]在本實(shí)施例的可選實(shí)施例中,在上述步驟S106中依據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)之前,本實(shí)施例還可以包括:在依據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)之前,本實(shí)施例可以包括如下兩種方式:
[0044]方式一:記錄迀出元數(shù)據(jù)的迀移啟動(dòng)信息,其中,啟動(dòng)信息包括:啟動(dòng)時(shí)間、分布式系統(tǒng)在啟動(dòng)數(shù)據(jù)迀移前最近一次的寫操作信息,其中,寫操作信息包括:寫操作發(fā)生的時(shí)間、寫操作的內(nèi)容、寫操作的序號;
[0045]此外,在迀移數(shù)據(jù)流啟動(dòng)后,并在復(fù)制元數(shù)據(jù)到迀入節(jié)點(diǎn)前,方法還包括:在記錄元數(shù)據(jù)的迀移啟動(dòng)信息后,將在復(fù)制元數(shù)據(jù)到迀入節(jié)點(diǎn)前的所有寫操作信息寫入到同步隊(duì)列;
[0046]方式二:通知迀出節(jié)點(diǎn)申請第一鎖,其中,第一鎖用于鎖住迀出節(jié)點(diǎn)中所有迀移數(shù)據(jù)的寫操作。
[0047]此外,在通知迀出節(jié)點(diǎn)申請第一鎖后,并在復(fù)制元數(shù)據(jù)到迀入節(jié)點(diǎn)前,方法還包括:禁止迀出節(jié)點(diǎn)執(zhí)行寫操作。
[0048]而在本實(shí)施例的一個(gè)可選實(shí)施方式中,基于上述方式一,在依據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)之后,本實(shí)施例的方法還可以包括:通知迀出節(jié)點(diǎn)申請第二鎖,其中,第二鎖用于鎖住迀出的元數(shù)據(jù)的寫操作;并向迀入節(jié)點(diǎn)發(fā)送同步隊(duì)列中的寫操作信息;在元數(shù)據(jù)的內(nèi)容復(fù)制完成后,通知?jiǎng)h除迀出節(jié)點(diǎn)中已復(fù)制的元數(shù)據(jù),并釋放第二鎖。
[0049]基于上述方式二,在依據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)之后,本實(shí)施例的方法還可以包括:通知?jiǎng)h除迀出節(jié)點(diǎn)中已復(fù)制的元數(shù)據(jù),并釋放第一鎖。
[0050]也即,通過上述方式一同步需要迀移的元數(shù)據(jù)之后鎖住同步之后的對迀移的元數(shù)據(jù)的寫操作,或者通過上述方式二鎖住迀出節(jié)點(diǎn)所有迀移數(shù)據(jù)的寫操作,進(jìn)而可以阻止迀出節(jié)點(diǎn)繼續(xù)處理針對待迀移元數(shù)據(jù)或全部數(shù)據(jù)的寫操作。也就是說,在迀移之前鎖住需要迀移的元數(shù)據(jù)的寫操作或者鎖住迀出節(jié)點(diǎn)所有迀移數(shù)據(jù)的寫操作,進(jìn)而可以實(shí)現(xiàn)元數(shù)據(jù)更加平滑的迀移。需要說明的是,上述兩種方式僅僅是本發(fā)明實(shí)施例的可選實(shí)施方式,并不構(gòu)成對本發(fā)明的限定。
[0051 ] 針對本實(shí)施例中上述通知?jiǎng)h除迀出節(jié)點(diǎn)中已復(fù)制的元數(shù)據(jù)的內(nèi)容的方式,可以通過如下方式來實(shí)現(xiàn),下面將通過本實(shí)施例中的兩種可選實(shí)施方式進(jìn)行舉例說明:
[0052]可選實(shí)施方式一:在迀入節(jié)點(diǎn)和迀出節(jié)點(diǎn)完成數(shù)據(jù)復(fù)制時(shí),通知分布式系統(tǒng)當(dāng)前數(shù)據(jù)迀移流復(fù)制的完成,并接收通知?jiǎng)h除迀出節(jié)點(diǎn)中已復(fù)制的元數(shù)據(jù)的指示。
[0053]可選實(shí)施方式二:向迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)發(fā)送用于查詢迀移數(shù)據(jù)流的迀移狀態(tài)的查詢指令;接收迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)發(fā)送的響應(yīng)于查詢指令的響應(yīng)指令,其中,響應(yīng)指令用于指示迀移數(shù)據(jù)流迀移狀態(tài);在響應(yīng)指令指示迀移數(shù)據(jù)流迀移成功時(shí),通知分布式系統(tǒng)啟用新的元數(shù)據(jù)分布路由規(guī)則,并通知迀出節(jié)點(diǎn)刪除元數(shù)據(jù)的內(nèi)容。
[0054]需要說明的是,上述兩種可選實(shí)施方式中,可選實(shí)施方式一為迀入和迀出節(jié)點(diǎn)完成數(shù)據(jù)復(fù)制后會主動(dòng)通知復(fù)制完成的方式;可選實(shí)施方式二維系統(tǒng)主動(dòng)查詢復(fù)制的完成狀態(tài)的方式。
[0055]此外,在上述可選實(shí)施方式二中在查詢指令指示迀移數(shù)據(jù)流迀移異常時(shí),本實(shí)施例的方法還包括:需要向迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)發(fā)送回退請求,其中,回退請求用于指示通知迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)終止迀移流數(shù)據(jù)的復(fù)制操作,以及通知迀入節(jié)點(diǎn)刪除已復(fù)制的元數(shù)據(jù)的內(nèi)容。
[0056]可選地,對于本實(shí)施例中涉及到的第一服務(wù)集群或第二服務(wù)集群可同時(shí)作為多個(gè)迀移數(shù)據(jù)流的迀入和迀出服務(wù)集群。
[0057]在本實(shí)施例中還提供了一種分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置,該裝置用于實(shí)現(xiàn)上述實(shí)施例及優(yōu)選實(shí)施方式,已經(jīng)進(jìn)行過說明的不再贅述。如以下所使用的,術(shù)語“模塊”“單元”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
[0058]圖2是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置結(jié)構(gòu)框圖,如圖2所示,該裝置包括:接收模塊22,用于接收來自分布式系統(tǒng)的通知消息,其中,該通知消息用于指示元數(shù)據(jù)分布路由規(guī)則發(fā)生了變化;比較模塊24,與接收模塊22耦合連接,用于依據(jù)通知消息比較調(diào)整前與調(diào)整后的元數(shù)據(jù)分布路由規(guī)則,得到元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流,其中,迀移數(shù)據(jù)流用于指示元數(shù)據(jù)的迀移過程,迀移數(shù)據(jù)流包括:第一服務(wù)器集群中迀出元數(shù)據(jù)的迀出節(jié)點(diǎn)、第二服務(wù)器集群中迀入元數(shù)據(jù)的迀入節(jié)點(diǎn)、元數(shù)據(jù)的內(nèi)容;第一復(fù)制模塊26,與比較模塊24耦合連接,用于依據(jù)迀移數(shù)據(jù)流通知迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中。
[0059]圖3是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置可選結(jié)構(gòu)框圖一,如圖3所示,在迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中之前,該裝置還可以包括:記錄模塊32,與比較模塊24耦合連接,用于記錄迀出元數(shù)據(jù)的迀移啟動(dòng)信息,其中,啟動(dòng)信息包括:啟動(dòng)時(shí)間、分布式系統(tǒng)在啟動(dòng)數(shù)據(jù)迀移前最近一次的寫操作信息,其中,寫操作信息包括:寫操作發(fā)生的時(shí)間、寫操作的內(nèi)容、寫操作的序號;在迀移數(shù)據(jù)流啟動(dòng)后,并在復(fù)制元數(shù)據(jù)到迀入節(jié)點(diǎn)前,該裝置還可以包括:第二復(fù)制模塊34,與記錄模塊32耦合連接,用于在記錄元數(shù)據(jù)的迀移啟動(dòng)信息后,將在復(fù)制元數(shù)據(jù)到迀入節(jié)點(diǎn)前的所有寫操作信息寫入到同步隊(duì)列。
[0060]在本實(shí)施例中,在迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中之后,該裝置包括:第二通知模塊36,與第二復(fù)制模塊34耦合連接并與第一復(fù)制模塊耦合連接,用于通知迀出節(jié)點(diǎn)申請第二鎖,其中,第二鎖用于鎖住迀出的元數(shù)據(jù)的寫操作;并向迀入節(jié)點(diǎn)發(fā)送同步隊(duì)列中的寫操作信息;在元數(shù)據(jù)的內(nèi)容復(fù)制完成后,通知?jiǎng)h除迀出節(jié)點(diǎn)中已復(fù)制的元數(shù)據(jù),并釋放第二鎖。
[0061]可選地,該第二通知模塊36包括:第一通知單元,用于在迀入節(jié)點(diǎn)和迀出節(jié)點(diǎn)完成數(shù)據(jù)復(fù)制時(shí),通知分布式系統(tǒng)當(dāng)前數(shù)據(jù)迀移流復(fù)制的完成;第一接收單元,用于接收通知?jiǎng)h除迀出節(jié)點(diǎn)中已復(fù)制的元數(shù)據(jù)的指示;
[0062]在本實(shí)施例的另一個(gè)可選結(jié)構(gòu)框圖中,圖4是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置可選結(jié)構(gòu)框圖二,如圖4所示,在迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中之前,該裝置還可以包括:第一通知模塊42,與比較模塊24耦合連接,用于通知迀出節(jié)點(diǎn)申請第一鎖,其中,第一鎖用于鎖住迀出節(jié)點(diǎn)中所有迀移數(shù)據(jù)的寫操作;在通知迀出節(jié)點(diǎn)申請第一鎖后,并在復(fù)制元數(shù)據(jù)到迀入節(jié)點(diǎn)前,該裝置還可以包括:禁止模塊44,與第一通知模塊42耦合連接,用于禁止迀出節(jié)點(diǎn)執(zhí)行寫操作。
[0063]在迀出節(jié)點(diǎn)將元數(shù)據(jù)的內(nèi)容復(fù)制到迀入節(jié)點(diǎn)中之后,裝置還可以包括:第三通知模塊46,與禁止模塊44耦合連接,用于通知?jiǎng)h除迀出節(jié)點(diǎn)中已復(fù)制的元數(shù)據(jù),并釋放第一鎖。
[0064]圖5是根據(jù)本發(fā)明實(shí)施例的分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置可選結(jié)構(gòu)框圖三,如圖5所示,第三通知模塊46包括:第一發(fā)送單元52,用于向迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)發(fā)送用于查詢迀移數(shù)據(jù)流的迀移狀態(tài)的查詢指令;第二接收單元54,與第一發(fā)送單元52耦合連接,用于接收迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)發(fā)送的響應(yīng)于查詢指令的響應(yīng)指令,其中,響應(yīng)指令用于指示迀移數(shù)據(jù)流迀移狀態(tài);第二通知單元56,與第二接收單元54耦合連接,用于在響應(yīng)指令指示迀移數(shù)據(jù)流迀移成功時(shí),通知分布式系統(tǒng)啟用新的元數(shù)據(jù)分布路由規(guī)則,并通知迀出節(jié)點(diǎn)刪除元數(shù)據(jù)的內(nèi)容。
[0065]而在查詢指令指示迀移數(shù)據(jù)流迀移異常時(shí),該第三通知模塊46還可以包括:第二發(fā)送單元58,與第二接收單元54耦合連接,用于在查詢指令指示迀移數(shù)據(jù)流迀移異常時(shí),向迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)發(fā)送回退請求,其中,回退請求用于指示通知迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)終止迀移流數(shù)據(jù)的復(fù)制操作,以及通知迀入節(jié)點(diǎn)刪除已復(fù)制的元數(shù)據(jù)的內(nèi)容。
[0066]需要說明的是,對于本實(shí)施例迀移裝置中涉及到的第一服務(wù)集群或第二服務(wù)集群可同時(shí)作為多個(gè)迀移數(shù)據(jù)流的迀入和迀出服務(wù)集群。
[0067]下面結(jié)合附圖以及可選實(shí)施例對本發(fā)明進(jìn)行舉例說明。
[0068]本可選實(shí)施例提供了一種基于規(guī)劃調(diào)整分布式系統(tǒng)中元數(shù)據(jù)分布的方法,圖6是根據(jù)本發(fā)明可選實(shí)施例的元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器群集重新分布的執(zhí)行順序示意圖,如圖6所示,按照執(zhí)行的業(yè)務(wù)邏輯先后順序,該方法的順序包括:
[0069]步驟S1、元數(shù)據(jù)路由重新分布后的準(zhǔn)備工作;
[0070]步驟S2、待迀移元數(shù)據(jù)從迀出群集到迀入群集的復(fù)制;
[0071]步驟S3、元數(shù)據(jù)重新分布的數(shù)據(jù)復(fù)制完成;
[0072]步驟S4、元數(shù)據(jù)重新分布的完成;
[0073]步驟S5、在上述步驟中可能出現(xiàn)的異常流程或人工干預(yù)時(shí),觸發(fā)系統(tǒng)執(zhí)行回退操作。
[0074]下面針對上述步驟SI?S5進(jìn)行--的解釋,首先針對本可選實(shí)施例中上述元數(shù)據(jù)重新分布的準(zhǔn)備工作的過程進(jìn)行相應(yīng)的解釋;
[0075]元數(shù)據(jù)重新分布的準(zhǔn)備工作可以在每次管理員調(diào)整元數(shù)據(jù)分布規(guī)則后自動(dòng)/手工觸發(fā),也可以由管理員設(shè)置執(zhí)行計(jì)劃在預(yù)定的時(shí)候自動(dòng)執(zhí)行。
[0076]本可選實(shí)施例在元數(shù)據(jù)分配規(guī)則發(fā)生變化后,分布式系統(tǒng)中存在一個(gè)元數(shù)據(jù)重新分布的控制裝置(其后簡稱裝置),此裝置將對比變化前與變化后的元數(shù)據(jù)分布路由規(guī)則,得到元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器群集之間的迀移數(shù)據(jù)流集合,每個(gè)元數(shù)據(jù)迀移數(shù)據(jù)流用于定義一個(gè)元數(shù)據(jù)的迀移過程,該迀移數(shù)據(jù)流中包括:元數(shù)據(jù)迀出服務(wù)器群集,迀入服務(wù)器群集以及迀移元數(shù)據(jù)的內(nèi)容。由于元數(shù)據(jù)分布的調(diào)整可能涉及同時(shí)向一個(gè)元數(shù)據(jù)服務(wù)器群集迀入部分?jǐn)?shù)據(jù)和迀出數(shù)據(jù),因此一個(gè)元數(shù)據(jù)服務(wù)器群集可能同時(shí)作為某一個(gè)迀移數(shù)據(jù)流的迀入服務(wù)器群集和另外一個(gè)迀移數(shù)據(jù)流的迀出服務(wù)器群集。
[0077]確定迀入迀出元數(shù)據(jù)群集后,裝置針對每個(gè)迀移數(shù)據(jù)流,從迀出群集中選擇一個(gè)可以處理寫操作的正常服務(wù)器作為迀出節(jié)點(diǎn),從迀入群集中選擇一個(gè)可以處理寫操作的正常服務(wù)器作為迀入節(jié)點(diǎn)。
[0078]所有迀移數(shù)據(jù)流的迀出節(jié)點(diǎn)和迀入節(jié)點(diǎn)確定后,裝置將控制每個(gè)元數(shù)據(jù)迀移流的迀入和迀出節(jié)點(diǎn)啟動(dòng)數(shù)據(jù)迀移流程,或按照操作員的指示取消操作。
[0079]針對本可選實(shí)施例中待迀移元數(shù)據(jù)從迀出群集到迀入群集的復(fù)制的過程:
[0080]每個(gè)元數(shù)據(jù)迀移數(shù)據(jù)流,當(dāng)元數(shù)據(jù)重新分布的控制裝置通知迀出和迀入服務(wù)器啟動(dòng)元數(shù)據(jù)分布調(diào)整后,為實(shí)現(xiàn)系統(tǒng)的平滑迀移,元數(shù)據(jù)迀出服務(wù)器可記錄啟動(dòng)數(shù)據(jù)復(fù)制的開始狀態(tài),例如開始時(shí)間,開始日志序號等信息,并將開始操作后發(fā)生的針對待迀移數(shù)據(jù)或本節(jié)點(diǎn)的所有寫操作記錄到同步隊(duì)列中。此后元數(shù)據(jù)將持續(xù)從迀出節(jié)點(diǎn)流向迀入節(jié)點(diǎn),當(dāng)待迀移的元數(shù)據(jù)復(fù)制到迀入節(jié)點(diǎn)并保存成功后,迀入節(jié)點(diǎn)將通過本群集內(nèi)部署的數(shù)據(jù)同步功能自動(dòng)同步變化數(shù)據(jù)到本群集內(nèi)的其他服務(wù)器節(jié)點(diǎn);
[0081]當(dāng)迀入服務(wù)器判斷待迀移的數(shù)據(jù)全部復(fù)制完成后,可向系統(tǒng)申請寫操作鎖,鎖定迀移的數(shù)據(jù)或整個(gè)節(jié)點(diǎn)的寫操作,阻止迀出元數(shù)據(jù)服務(wù)器繼續(xù)處理針對待迀移元數(shù)據(jù)或全部數(shù)據(jù)的寫操作,之后開始同步緩存在同步隊(duì)列中的操作信息。
[0082]當(dāng)迀出和迀入服務(wù)器確定迀出服務(wù)器中的同步隊(duì)列同步完成后,迀入服務(wù)器向元數(shù)據(jù)重新分布的控制裝置上報(bào)當(dāng)前處理的元數(shù)據(jù)迀移數(shù)據(jù)流。迀出元數(shù)據(jù)服務(wù)器釋放本服務(wù)器申請的寫操作鎖,并向元數(shù)據(jù)重新分布的控制裝置上報(bào)當(dāng)前處理的元數(shù)據(jù)迀移數(shù)據(jù)流完成。
[0083]針對本可選實(shí)施例中待迀移元數(shù)據(jù)的數(shù)據(jù)復(fù)制完成的過程進(jìn)行相應(yīng)的解釋:
[0084]裝置收到元數(shù)據(jù)服務(wù)器通知后更新元數(shù)據(jù)迀移數(shù)據(jù)流的狀態(tài)。為避免由于網(wǎng)絡(luò)瞬時(shí)故障而引起的消息丟失,元數(shù)據(jù)重新分布的控制裝置可啟動(dòng)查詢機(jī)制,向涉及的元數(shù)據(jù)服務(wù)器查詢每個(gè)迀移數(shù)據(jù)流的迀移狀態(tài)。
[0085]當(dāng)元數(shù)據(jù)重新分布的控制裝置確認(rèn)本次調(diào)整所涉及的元數(shù)據(jù)迀移數(shù)據(jù)流均迀移成功后,即可斷定待迀移元數(shù)據(jù)的數(shù)據(jù)復(fù)制完成。當(dāng)其中任何一個(gè)元數(shù)據(jù)迀移數(shù)據(jù)流執(zhí)行異常終止后元數(shù)據(jù)重新分布的控制裝置即判定本次元數(shù)據(jù)調(diào)整失敗,系統(tǒng)可進(jìn)入退回流程,或等待人工干預(yù)并解決故障后繼續(xù)數(shù)據(jù)復(fù)制流程。
[0086]針對本可選實(shí)施例中涉及到的元數(shù)據(jù)重新分布的數(shù)據(jù)迀移完成實(shí)現(xiàn)過程進(jìn)行相應(yīng)的解釋:
[0087]當(dāng)元數(shù)據(jù)重新分布的控制裝置確認(rèn)本次調(diào)整涉及的所有元數(shù)據(jù)迀移數(shù)據(jù)流均完成后,系統(tǒng)將執(zhí)行如下操作:
[0088]步驟A:向系統(tǒng)內(nèi)負(fù)責(zé)元數(shù)據(jù)路由的網(wǎng)關(guān)或客戶端發(fā)送通知,通知啟用新的元數(shù)據(jù)分布、路由規(guī)則。
[0089]步驟B:向數(shù)據(jù)迀出群集發(fā)送通知消息,通知迀出元數(shù)據(jù)群集刪除已復(fù)制并待刪除的迀移元數(shù)據(jù)。
[0090]處理元數(shù)據(jù)路由的網(wǎng)關(guān)、客戶端以及迀出服務(wù)器刪除數(shù)據(jù)結(jié)束后向元數(shù)據(jù)重新分布的控制裝置確認(rèn)處理結(jié)果,本次元數(shù)據(jù)分布調(diào)整正確結(jié)束。
[0091]為提供系統(tǒng)穩(wěn)定性,裝置可啟動(dòng)定時(shí)查詢機(jī)制向處理元數(shù)據(jù)路由的網(wǎng)關(guān)、客戶端以及迀出服務(wù)器查詢處理狀態(tài)。
[0092]針對本可選實(shí)施例中的元數(shù)據(jù)重新分布的回退實(shí)現(xiàn)過程進(jìn)行相應(yīng)的解釋:
[0093]元數(shù)據(jù)重新分布過程中在如下場景可觸發(fā)回退操作,條件判斷不分先后:
[0094]場景一:待迀移的元數(shù)據(jù)復(fù)制過程中,針對元數(shù)據(jù)迀移數(shù)據(jù)流,無法找合適的迀入和迀出元數(shù)據(jù)服務(wù)器。
[0095]場景二:待迀移的元數(shù)據(jù)復(fù)制過程中,數(shù)據(jù)復(fù)制失敗。
[0096]場景三:元數(shù)據(jù)重新分布控制裝置在元數(shù)據(jù)重新分布過程中與至少一個(gè)迀入,迀出元數(shù)據(jù)服務(wù)器群集失去通訊。
[0097]場景四:人工操作設(shè)置操作回退。
[0098]其中,回退操作的執(zhí)行可支持如下方式:(I):系統(tǒng)立即執(zhí)行;(2):
【申請人】工干預(yù),需要人工選擇執(zhí)行回退或選擇繼續(xù)嘗試直到故障消除。
[0099]回退操作啟動(dòng)后,元數(shù)據(jù)重新分布的控制裝置向每個(gè)元數(shù)據(jù)迀移數(shù)據(jù)流涉及的迀入和迀出服務(wù)器發(fā)送回退請求,當(dāng)收到回退請求后迀入和迀出服務(wù)器執(zhí)行如下操作:
[0100]迀出服務(wù)器:按照要求終止對應(yīng)的元數(shù)據(jù)迀移數(shù)據(jù)流的復(fù)制流程,清空同步隊(duì)列。如已申請寫操作鎖,則釋放操作鎖。
[0101]迀入服務(wù)器:按照要求停止對應(yīng)的元數(shù)據(jù)迀移數(shù)據(jù)流復(fù)制過程,刪除已經(jīng)復(fù)制的數(shù)據(jù)。
[0102]通過本可選實(shí)施例,當(dāng)系統(tǒng)需要調(diào)整元數(shù)據(jù)的分布規(guī)則時(shí),基于對比更新前后的元數(shù)據(jù)路由規(guī)則變化,確定需要執(zhí)行數(shù)據(jù)迀移的元數(shù)據(jù)服務(wù)器群集,協(xié)作和控制元數(shù)據(jù)在元數(shù)據(jù)群集之間的迀移,實(shí)現(xiàn)元數(shù)據(jù)分布隨著路由信息的調(diào)整而在系統(tǒng)中的平滑迀移。同時(shí)可以在控制系統(tǒng)調(diào)整完成后自動(dòng)切換到新的元數(shù)據(jù)分布規(guī)則避免業(yè)務(wù)中斷。
[0103]下面結(jié)合附圖和具體實(shí)施例對本可選實(shí)施例進(jìn)行詳細(xì)的說明;
[0104]實(shí)施例一
[0105]圖7是根據(jù)本發(fā)明可選實(shí)施例的2個(gè)元數(shù)據(jù)群集之間的元數(shù)據(jù)調(diào)整方法流程圖,如圖7所示,以2個(gè)元數(shù)據(jù)群集的系統(tǒng)為例,基于規(guī)劃的元數(shù)據(jù)調(diào)整方法的步驟包括:
[0106]步驟S702?S704:客戶端或負(fù)責(zé)分發(fā)客戶消息的網(wǎng)關(guān)依照元數(shù)據(jù)分布的規(guī)則,訪問元數(shù)據(jù)群集I和元數(shù)據(jù)群集2中的服務(wù)器節(jié)點(diǎn)。
[0107]步驟S706:系統(tǒng)管理員調(diào)整了元數(shù)據(jù)的分布規(guī)則,并根據(jù)系統(tǒng)觸發(fā)的方式:自動(dòng)、手動(dòng)、定時(shí)在觸發(fā)后;由分布規(guī)則調(diào)整后向系統(tǒng)中元數(shù)據(jù)重新分布裝置提起元數(shù)據(jù)重新分布請求。
[0108]步驟S708:元數(shù)據(jù)重分布裝置分析調(diào)整前和調(diào)整后的元數(shù)據(jù)分布規(guī)則,得到本次調(diào)整的變化內(nèi)容:確認(rèn)將部分元數(shù)據(jù)服務(wù)器群集I中的元數(shù)據(jù)調(diào)整到元數(shù)據(jù)服務(wù)器群集2中。同時(shí),元數(shù)據(jù)重分布裝置根據(jù)服務(wù)器的狀態(tài)選取元數(shù)據(jù)服務(wù)器1-1作為迀出服務(wù)器,元數(shù)據(jù)服務(wù)器2-1作為迀入服務(wù)器。
[0109]步驟S710:元數(shù)據(jù)重分布裝置請求元數(shù)據(jù)的迀出服務(wù)器需要執(zhí)行數(shù)據(jù)迀出操作;
[0110]步驟S712:元數(shù)據(jù)重分布裝置請求元數(shù)據(jù)的迀入服務(wù)器需要執(zhí)行數(shù)據(jù)迀出操作;
[0111]步驟S714:元數(shù)據(jù)啟動(dòng)迀移,迀入和迀出服務(wù)器將按照元數(shù)據(jù)重分布裝置給出的指示,將待迀移的元數(shù)據(jù)從迀出服務(wù)器向迀入服務(wù)器復(fù)制;
[0112]步驟S716:迀移的元數(shù)據(jù)進(jìn)入迀入服務(wù)器并成功保存后,元數(shù)據(jù)迀入服務(wù)器將通過本群集中部署的數(shù)據(jù)同步機(jī)制將迀入的數(shù)據(jù)同步到本群集的其他節(jié)點(diǎn);
[0113]步驟S718:元數(shù)據(jù)迀出服務(wù)器確認(rèn)待迀出的元數(shù)據(jù)已完成向迀入元服務(wù)器的復(fù)制后,向元數(shù)據(jù)重分布裝置上報(bào)完成狀態(tài);
[0114]步驟S720:元數(shù)據(jù)迀出服務(wù)器確認(rèn)待迀入的數(shù)據(jù)已成功保存并向元數(shù)據(jù)重分布裝置上報(bào)完成狀態(tài);
[0115]步驟S722:元數(shù)據(jù)重分布裝置根據(jù)迀入和迀出服務(wù)器的確認(rèn)消息,確認(rèn)本次調(diào)整涉及的元數(shù)據(jù)迀移操作均已完成,向系統(tǒng)負(fù)責(zé)路由客戶請求到元數(shù)據(jù)服務(wù)器的網(wǎng)關(guān)(或客戶端,當(dāng)客戶端負(fù)責(zé)數(shù)據(jù)路由時(shí))同步變化后的元數(shù)據(jù)分布規(guī)則。
[0116]步驟S724:路由客戶請求的元數(shù)據(jù)服務(wù)器的網(wǎng)關(guān)或客戶端生效新的元數(shù)據(jù)分布規(guī)則;
[0117]步驟S726:路由客戶請求的元數(shù)據(jù)服務(wù)器的網(wǎng)關(guān)或客戶端向元數(shù)據(jù)重分布裝置確認(rèn)新的元數(shù)據(jù)分布規(guī)則生效;
[0118]步驟S728:元數(shù)據(jù)重分布裝置通知迀出服務(wù)器刪除迀出數(shù)據(jù),迀出服務(wù)器執(zhí)行數(shù)據(jù)刪除操作,刪除已迀出的元數(shù)據(jù);
[0119]步驟S730:元數(shù)據(jù)迀出服務(wù)器刪除元數(shù)據(jù)后,通過本群集中部署的數(shù)據(jù)同步機(jī)制實(shí)現(xiàn)在本群集中其它服務(wù)器刪除迀出的元數(shù)據(jù);
[0120]在本實(shí)施例一中,元數(shù)據(jù)重分布裝置可通過如下步驟的方式觸發(fā)回退流程:
[0121]方式一:在步驟S708:中,元數(shù)據(jù)重分布裝置無法從系統(tǒng)中選擇狀態(tài)正常的迀入或迀出服務(wù)器。
[0122]方式二:在步驟S710,S712中,迀出或迀入服務(wù)器確認(rèn)無法執(zhí)行數(shù)據(jù)迀移。
[0123]方式三:在步驟S714中元數(shù)據(jù)重分布裝置失去與迀入或迀出服務(wù)器的通訊。
[0124]方式四:在步驟S718,S720中,迀出服務(wù)器上報(bào)數(shù)據(jù)迀出或迀入異常。
[0125]方式五:在步驟S720前,操作員提交回退請求。
[0126]其中,對本實(shí)施一涉及的回退流程的處理方式為:A:元數(shù)據(jù)重分布裝置請求元數(shù)據(jù)迀出服務(wù)器停止數(shù)據(jù)迀出:元數(shù)據(jù)重分布裝置請求元數(shù)據(jù)迀入服務(wù)器停止數(shù)據(jù)迀入,迀入服務(wù)器收到請求后將刪除已復(fù)制的元數(shù)據(jù),刪除操作將通過本群集內(nèi)部署的同步機(jī)制同步到本群集中的其它服務(wù)器。
[0127]圖8是根據(jù)本發(fā)明可選實(shí)施例的元數(shù)據(jù)重新分布的方法流程圖,如圖8所示,本實(shí)施例中元數(shù)據(jù)重新分布的準(zhǔn)備工作的步驟包括:
[0128]步驟S802:修改元數(shù)據(jù)分布路由規(guī)則;
[0129]步驟S804:向分布式系統(tǒng)確認(rèn)修改并設(shè)置系統(tǒng)的執(zhí)行方式;
[0130]其中,該執(zhí)行方式可以立即執(zhí)行:系統(tǒng)將立即執(zhí)行元數(shù)據(jù)重新分布的準(zhǔn)備工作;或,定時(shí)執(zhí)行:管理員希望系統(tǒng)在將來的某個(gè)時(shí)間點(diǎn)執(zhí)行;
[0131]步驟S806:設(shè)置執(zhí)行方式,立即執(zhí)行則進(jìn)入步驟S810,否則進(jìn)入步驟S808 ;
[0132]步驟S808:系統(tǒng)等待管理員設(shè)置的時(shí)間到達(dá);
[0133]步驟S810:元數(shù)據(jù)重新分布控制裝置對比變化前后的元數(shù)據(jù)路由規(guī)則,獲得需要迀出和迀入的元數(shù)據(jù)服務(wù)器群集信息以及需要調(diào)整的元數(shù)據(jù)信息;
[0134]其中,由于元數(shù)據(jù)的分布規(guī)則調(diào)整,一個(gè)元數(shù)據(jù)節(jié)點(diǎn)在元數(shù)據(jù)分布調(diào)整過程中可能同時(shí)本發(fā)明在元數(shù)據(jù)分配規(guī)則發(fā)生變化后,分布式系統(tǒng)中存在一個(gè)元數(shù)據(jù)重新分布的控制裝置,此裝置將對比變化前與變化后的元數(shù)據(jù)分布規(guī)則,得到元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器群集之間的迀移數(shù)據(jù)流,針對每個(gè)元數(shù)據(jù)迀移數(shù)據(jù)流,包含迀出服務(wù)器的群集以及迀入服務(wù)器的群集。
[0135]步驟S812:元數(shù)據(jù)重新分布控制裝置檢查本次調(diào)整是否需要執(zhí)行數(shù)據(jù)迀移,需要?jiǎng)t執(zhí)行步驟S814,否則執(zhí)行結(jié)束;
[0136]步驟S814:分別從每個(gè)迀移數(shù)據(jù)流涉及的迀入和迀出元數(shù)據(jù)服務(wù)器群集中,選擇一個(gè)能夠處理寫操作的服務(wù)器;
[0137]其中,元數(shù)據(jù)重新分布控制裝置針對每個(gè)迀移數(shù)據(jù)流,從迀出群集中選擇一個(gè)可以處理寫操作的正常服務(wù)器作為迀出節(jié)點(diǎn),從迀出群集中選擇一個(gè)可以處理寫操作的正常服務(wù)器作為迀入節(jié)點(diǎn)。
[0138]步驟S816:檢查所有迀移數(shù)據(jù)流均操作成功;如果成功,則執(zhí)行步驟S818 ;如果失敗,則執(zhí)行步驟S820;
[0139]步驟S818:待迀移元數(shù)據(jù)從迀出群集到迀入群集的復(fù)制,執(zhí)行結(jié)束;
[0140]步驟S820:系統(tǒng)進(jìn)入回退流程判斷。
[0141]圖9是根據(jù)本發(fā)明可選實(shí)施例的待迀移元數(shù)據(jù)從迀出群集到迀入群集的復(fù)制方法的流程圖,如圖9所示,該方法的步驟包括:
[0142]步驟S902:元數(shù)據(jù)重新分布控制裝置向每個(gè)迀移數(shù)據(jù)流的迀入和迀出服務(wù)器發(fā)起數(shù)據(jù)迀移請求;
[0143]步驟S904:迀入服務(wù)器記錄數(shù)據(jù)迀移開始,其后所有涉及到待迀移數(shù)據(jù)的寫操作或全部寫操作將被記錄同步隊(duì)列;
[0144]步驟S906:迀入服務(wù)器根據(jù)指示,將待迀出的元數(shù)據(jù)發(fā)送到迀入服務(wù)器;
[0145]其中,數(shù)據(jù)迀移啟動(dòng)后,元數(shù)據(jù)將持續(xù)從迀出節(jié)點(diǎn)拷貝到迀入節(jié)點(diǎn),當(dāng)拷貝的元數(shù)據(jù)到達(dá)迀入節(jié)點(diǎn)并保存成功后,迀入節(jié)點(diǎn)將通過本群集內(nèi)已存在的數(shù)據(jù)同步功能自動(dòng)同步變化數(shù)據(jù)到本群集內(nèi)的其他服務(wù)器節(jié)點(diǎn)。由于系統(tǒng)客戶端在數(shù)據(jù)迀移完成后才會生效新的元數(shù)據(jù)分布規(guī)則,為保證業(yè)務(wù)的連續(xù)性,待迀出元數(shù)據(jù)從迀出元服務(wù)器群集復(fù)制到迀入元服務(wù)器群集后不能立即刪除數(shù)據(jù),必須得到元數(shù)據(jù)重新分布控制裝置的確認(rèn)或手工確認(rèn)后迀出元數(shù)據(jù)庫服務(wù)器才能執(zhí)行刪除操作。
[0146]步驟S908:迀出節(jié)點(diǎn)判斷待迀移的數(shù)據(jù)是否全部拷貝到迀入服務(wù)器,如果是,則執(zhí)行S910,否則繼續(xù)執(zhí)行步驟S906 ;
[0147]步驟S910:迀出服務(wù)器鎖住待迀移元數(shù)據(jù)的寫操作,向迀入服務(wù)器同步緩存在同步隊(duì)列中的操作;
[0148]步驟S912:迀出服務(wù)器判斷同步隊(duì)列中的操作是否全部拷貝到迀入服務(wù)器,如果是,則執(zhí)行S914:否則繼續(xù)執(zhí)行S910 ;
[0149]步驟S914:迀入和迀出服務(wù)器向“元數(shù)據(jù)重新分布控制裝置”上報(bào)當(dāng)前處理的元數(shù)據(jù)迀移數(shù)據(jù)流完成。
[0150]步驟S916:進(jìn)入“元數(shù)據(jù)重新分布的數(shù)據(jù)迀移完成”流程,等待系統(tǒng)判定數(shù)據(jù)迀移完成;
[0151]圖10是根據(jù)本發(fā)明可選實(shí)施例的數(shù)據(jù)重新分布的復(fù)制完成的方法流程圖,如圖10所示,該方法的步驟包括:
[0152]步驟S1002:元數(shù)據(jù)重新分布的控制裝置判定裝置內(nèi)部的事件類型:
[0153]其中,A,如果是迀入和迀出服務(wù)器上報(bào)的狀態(tài)信息或狀態(tài)查詢應(yīng)答消息,則執(zhí)行步驟S1004 ;
[0154]B,如果是元數(shù)據(jù)重新分布的控制裝置內(nèi)部的定時(shí)檢查任務(wù),則行步驟S1006 ;
[0155]步驟S1004:元數(shù)據(jù)重新分布的控制裝置更新對應(yīng)的元數(shù)據(jù)迀移數(shù)據(jù)流狀態(tài),流程結(jié)束;
[0156]步驟S1006:元數(shù)據(jù)重新分布的控制裝置需要獲得元數(shù)據(jù)迀移數(shù)據(jù)流的列表;
[0157]步驟S1008:元數(shù)據(jù)重新分布的控制裝置檢查元數(shù)據(jù)迀移數(shù)據(jù)流列表中的每個(gè)迀移數(shù)據(jù)流狀態(tài)并檢查是否存在執(zhí)行狀態(tài)異常的數(shù)據(jù)流;
[0158]A,如果存在,則進(jìn)入步驟S1010的回退流程;
[0159]B,如果沒有,則進(jìn)入步驟S1012繼續(xù)執(zhí)行;
[0160]步驟S1010:裝置執(zhí)行回退流程處理;
[0161]步驟S1012:元數(shù)據(jù)重新分布的控制裝置繼續(xù)檢查是否所有的迀移數(shù)據(jù)流均成功完成,并根據(jù)檢查結(jié)果進(jìn)行判斷:如果全部執(zhí)行完成,則進(jìn)入步驟S1014執(zhí)行;如果存在未完成的迀移數(shù)據(jù)流,則進(jìn)入步驟S1016執(zhí)行;
[0162]步驟S1014:進(jìn)入“元數(shù)據(jù)重新分布的數(shù)據(jù)迀移完成”流程,參見本發(fā)明“元數(shù)據(jù)重新分布的數(shù)據(jù)迀移完成”流程描述,處理結(jié)束;
[0163]步驟S1016:檢查是否存在元數(shù)據(jù)迀移數(shù)據(jù)流的迀入和迀出服務(wù)器未能在約定時(shí)間向元數(shù)據(jù)重新分布的控制裝置上報(bào)狀態(tài):如果是,則執(zhí)行步驟S1018 ;如果否,則執(zhí)行步驟 S1020 ;
[0164]步驟S1018:元數(shù)據(jù)重新分布的控制裝置向迀移數(shù)據(jù)流的迀入和迀出服務(wù)器發(fā)起狀態(tài)查詢請求并等待應(yīng)答,流程處理結(jié)束;
[0165]步驟S1020:元數(shù)據(jù)重新分布的控制裝置進(jìn)入等待狀態(tài),等待下一次檢查元數(shù)據(jù)迀移數(shù)據(jù)流是否全部結(jié)束。
[0166]需要說明的是上述涉及到的回退處理過程都是涉及到的圖11中的回退處理過程。
[0167]圖11是根據(jù)本發(fā)明可選實(shí)施例的回退處理方法的流程圖,如圖11所示,該回退處理方法的步驟包括:
[0168]步驟S1102:回退流程啟動(dòng)后首先檢查本次回退流程是否為人工干預(yù)的回退:如果是,裝置將立即執(zhí)行回退操作,進(jìn)入步驟S1104執(zhí)行;如果否,則裝置進(jìn)入S1104執(zhí)行根據(jù)系統(tǒng)的設(shè)置決定是立即回退或需要人工確認(rèn)后才能執(zhí)行回退。
[0169]步驟S1104:裝置針對每一個(gè)元數(shù)據(jù)迀移數(shù)據(jù)流,向其中的迀入和迀出服務(wù)器節(jié)點(diǎn)發(fā)送回退請求;
[0170]步驟S1106:迀出服務(wù)器收到回退請求后清空復(fù)制隊(duì)列,停止復(fù)制數(shù)據(jù)的發(fā)送,如已申請操作鎖,則需要執(zhí)行鎖釋放操作。迀入服務(wù)器收到回退請求后刪除已復(fù)制的元數(shù)據(jù),流程執(zhí)行結(jié)束;
[0171]步驟S1108:裝置需要檢查系統(tǒng)設(shè)置的處理方式:如果系統(tǒng)設(shè)置為自動(dòng)回退,則進(jìn)入步驟S1104處理;如果系統(tǒng)設(shè)置為需要人工干預(yù)確認(rèn)是否回退,則執(zhí)行步驟SlllO ;
[0172]步驟SlllO:檢查人工干預(yù)的結(jié)果:如果人工確認(rèn)結(jié)果為執(zhí)行回退,則進(jìn)入步驟S1104處理;如果人工確認(rèn)結(jié)果為不執(zhí)行退回,則裝置判斷結(jié)束,裝置會通過圖11中的定時(shí)檢測流程等待故障消除后繼續(xù)數(shù)據(jù)迀移。
[0173]圖12是根據(jù)本發(fā)明可選實(shí)施例的元數(shù)據(jù)的迀移完成處理方法流程圖,如圖12所示,本實(shí)施例的元數(shù)據(jù)的迀移完成的處理方法的步驟包括:
[0174]步驟S1202:裝置判斷當(dāng)前是否為定時(shí)檢查消息:
[0175]如果是,則進(jìn)入步驟S1216處理,定時(shí)檢查系統(tǒng)中使用元數(shù)據(jù)分布規(guī)則的消息分發(fā)網(wǎng)關(guān)/客戶端和涉及的迀移元數(shù)據(jù)服務(wù)器狀態(tài)。
[0176]如果否,進(jìn)入步驟S1204處理,通知系統(tǒng)完成元數(shù)據(jù)迀移操作。
[0177]步驟S1204:裝置向元數(shù)據(jù)路由網(wǎng)關(guān)/系統(tǒng)客戶端發(fā)出通知,要求其切換為新的元數(shù)據(jù)路由規(guī)則;
[0178]步驟S1206:裝置判斷是否收到元數(shù)據(jù)路由網(wǎng)關(guān)/系統(tǒng)客戶端返回的確認(rèn)消息:如果是,則執(zhí)行步驟S1208 ;如果否,則執(zhí)行步驟S1214繼續(xù)等待;
[0179]步驟S1208:向每個(gè)元數(shù)據(jù)迀移流中的迀出服務(wù)器發(fā)送請求,刪除迀移數(shù)據(jù)。
[0180]步驟S1210:裝置判斷迀出服務(wù)器是否執(zhí)行結(jié)束并向裝置返回處理結(jié)果:如果是,執(zhí)行步驟S1212,如果否,執(zhí)行步驟S1214 ;
[0181]步驟S1212:更新元數(shù)據(jù)操作狀態(tài)為完成,處理結(jié)束;
[0182]步驟S1214:設(shè)置定時(shí)狀態(tài)查詢,查詢迀出服務(wù)器和元數(shù)據(jù)分發(fā)網(wǎng)關(guān)/客戶端的執(zhí)行狀態(tài),流程處理結(jié)束;
[0183]步驟S1216:判斷為定時(shí)器操作,裝置向元數(shù)據(jù)分發(fā)網(wǎng)關(guān)/客戶端和迀出元數(shù)據(jù)服務(wù)器查詢執(zhí)行操作的結(jié)果;
[0184]步驟S1218:檢查元數(shù)據(jù)分發(fā)網(wǎng)關(guān)/客戶端是否完成路由規(guī)則切換:如果是,執(zhí)行步驟S1220 ;如果否,處理流程結(jié)束;
[0185]步驟S1220:檢查迀出服務(wù)器是否完成迀出數(shù)據(jù)刪除:如果是,執(zhí)行步驟S1212 ;如果否,流程處理結(jié)束。
[0186]通過本可選實(shí)施例,當(dāng)系統(tǒng)需要調(diào)整元數(shù)據(jù)的分布規(guī)則時(shí),基于對比更新前后的元數(shù)據(jù)路由規(guī)則變化,確定需要執(zhí)行數(shù)據(jù)迀移的元數(shù)據(jù)服務(wù)器群集,協(xié)作和控制元數(shù)據(jù)在元數(shù)據(jù)群集之間的迀移,實(shí)現(xiàn)元數(shù)據(jù)分布隨著路由信息的調(diào)整而在系統(tǒng)中的平滑迀移。同時(shí)可以在控制系統(tǒng)調(diào)整完成后自動(dòng)切換到新的元數(shù)據(jù)分布規(guī)則避免業(yè)務(wù)中斷。
[0187]以上僅為本發(fā)明的可選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種分布式系統(tǒng)中元數(shù)據(jù)的迀移方法,其特征在于,包括: 接收來自分布式系統(tǒng)的通知消息,其中,該通知消息用于指示元數(shù)據(jù)分布路由規(guī)則發(fā)生了變化; 依據(jù)所述通知消息比較調(diào)整前與調(diào)整后的所述元數(shù)據(jù)分布路由規(guī)則,得到所述元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流,其中,所述迀移數(shù)據(jù)流用于指示所述元數(shù)據(jù)的迀移過程,所述迀移數(shù)據(jù)流包括:第一服務(wù)器集群中迀出所述元數(shù)據(jù)的迀出節(jié)點(diǎn)、第二服務(wù)器集群中迀入所述元數(shù)據(jù)的迀入節(jié)點(diǎn)、所述元數(shù)據(jù)的內(nèi)容; 依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)之前,所述方法還包括: 記錄迀出所述元數(shù)據(jù)的迀移啟動(dòng)信息,其中,所述啟動(dòng)信息包括:啟動(dòng)時(shí)間、所述分布式系統(tǒng)在啟動(dòng)數(shù)據(jù)迀移前最近一次的寫操作信息,其中,所述寫操作信息包括:寫操作發(fā)生的時(shí)間、寫操作的內(nèi)容、寫操作的序號;或, 通知所述迀出節(jié)點(diǎn)申請第一鎖,其中,所述第一鎖用于鎖住所述迀出節(jié)點(diǎn)中所有迀移數(shù)據(jù)的寫操作。3.根據(jù)權(quán)利要求2所述的方法,其特征在于, 在所述迀移數(shù)據(jù)流啟動(dòng)后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述方法還包括:在所述記錄所述元數(shù)據(jù)的所述迀移啟動(dòng)信息后,將在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前的所有寫操作信息寫入到同步隊(duì)列;或, 在通知所述迀出節(jié)點(diǎn)申請第一鎖后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述方法還包括:禁止所述迀出節(jié)點(diǎn)執(zhí)行所述寫操作。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)之后,包括: 通知所述迀出節(jié)點(diǎn)申請第二鎖,其中,所述第二鎖用于鎖住迀出的所述元數(shù)據(jù)的寫操作;并向所述迀入節(jié)點(diǎn)發(fā)送所述同步隊(duì)列中的所述寫操作信息;在所述元數(shù)據(jù)的內(nèi)容復(fù)制完成后,通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第二鎖;或, 通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第一鎖。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù)包括: 在所述迀入節(jié)點(diǎn)和所述迀出節(jié)點(diǎn)完成數(shù)據(jù)復(fù)制時(shí),通知所述分布式系統(tǒng)當(dāng)前數(shù)據(jù)迀移流復(fù)制的完成,并接收所述通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù)的指示;或, 向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送用于查詢所述迀移數(shù)據(jù)流的迀移狀態(tài)的查詢指令;接收所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送的響應(yīng)于所述查詢指令的響應(yīng)指令,其中,所述響應(yīng)指令用于指示所述迀移數(shù)據(jù)流迀移狀態(tài);在所述響應(yīng)指令指示所述迀移數(shù)據(jù)流迀移成功時(shí),通知所述分布式系統(tǒng)啟用新的元數(shù)據(jù)分布路由規(guī)則,并通知所述迀出節(jié)點(diǎn)刪除所述元數(shù)據(jù)的內(nèi)容。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括: 在所述查詢指令指示所述迀移數(shù)據(jù)流迀移異常時(shí),向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送回退請求,其中,所述回退請求用于指示通知所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)終止所述迀移流數(shù)據(jù)的復(fù)制操作,以及通知所述迀入節(jié)點(diǎn)刪除已復(fù)制的所述元數(shù)據(jù)的內(nèi)容。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一服務(wù)集群或所述第二服務(wù)集群可同時(shí)作為多個(gè)迀移數(shù)據(jù)流的迀入和迀出服務(wù)集群。8.一種分布式系統(tǒng)中元數(shù)據(jù)的迀移裝置,其特征在于,包括: 接收模塊,用于接收來自分布式系統(tǒng)的通知消息,其中,該通知消息用于指示元數(shù)據(jù)分布路由規(guī)則發(fā)生了變化; 比較模塊,用于依據(jù)所述通知消息比較調(diào)整前與調(diào)整后的所述元數(shù)據(jù)分布路由規(guī)則,得到所述元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器集群的節(jié)點(diǎn)之間的迀移數(shù)據(jù)流,其中,所述迀移數(shù)據(jù)流用于指示所述元數(shù)據(jù)的迀移過程,所述迀移數(shù)據(jù)流包括:第一服務(wù)器集群中迀出所述元數(shù)據(jù)的迀出節(jié)點(diǎn)、第二服務(wù)器集群中迀入所述元數(shù)據(jù)的迀入節(jié)點(diǎn)、所述元數(shù)據(jù)的內(nèi)容; 第一復(fù)制模塊,用于依據(jù)所述迀移數(shù)據(jù)流通知所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中之前,所述裝置還包括: 記錄模塊,用于記錄迀出所述元數(shù)據(jù)的迀移啟動(dòng)信息,其中,所述啟動(dòng)信息包括:啟動(dòng)時(shí)間、所述分布式系統(tǒng)在啟動(dòng)數(shù)據(jù)迀移前最近一次的寫操作信息,其中,所述寫操作信息包括:寫操作發(fā)生的時(shí)間、寫操作的內(nèi)容、寫操作的序號;或, 第一通知模塊,用于通知所述迀出節(jié)點(diǎn)申請第一鎖,其中,所述第一鎖用于鎖住所述迀出節(jié)點(diǎn)中所有迀移數(shù)據(jù)的寫操作。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 在所述迀移數(shù)據(jù)流啟動(dòng)后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述裝置還包括:第二復(fù)制模塊,用于在所述記錄所述元數(shù)據(jù)的所述迀移啟動(dòng)信息后,將在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前的所有寫操作信息寫入到同步隊(duì)列;或, 在通知所述迀出節(jié)點(diǎn)申請第一鎖后,并在復(fù)制所述元數(shù)據(jù)到所述迀入節(jié)點(diǎn)前,所述裝置還包括:禁止模塊,用于禁止所述迀出節(jié)點(diǎn)執(zhí)行所述寫操作。11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,在所述迀出節(jié)點(diǎn)將所述元數(shù)據(jù)的內(nèi)容復(fù)制到所述迀入節(jié)點(diǎn)中之后,所述裝置還包括: 第二通知模塊,用于通知所述迀出節(jié)點(diǎn)申請第二鎖,其中,所述第二鎖用于鎖住迀出的所述元數(shù)據(jù)的寫操作;并向所述迀入節(jié)點(diǎn)發(fā)送所述同步隊(duì)列中的所述寫操作信息;在所述元數(shù)據(jù)的內(nèi)容復(fù)制完成后,通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第二鎖;或, 第三通知模塊,用于通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù),并釋放所述第一鎖。12.根據(jù)權(quán)利要求11所述的裝置,其特征在于, 所述第二通知模塊包括:第一通知單元,用于在所述迀入節(jié)點(diǎn)和所述迀出節(jié)點(diǎn)完成數(shù)據(jù)復(fù)制時(shí),通知所述分布式系統(tǒng)當(dāng)前數(shù)據(jù)迀移流復(fù)制的完成;第一接收單元,用于接收所述通知?jiǎng)h除所述迀出節(jié)點(diǎn)中已復(fù)制的所述元數(shù)據(jù)的指示; 所述第三通知模塊包括:第一發(fā)送單元,用于向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送用于查詢所述迀移數(shù)據(jù)流的迀移狀態(tài)的查詢指令;第二接收單元,用于接收所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送的響應(yīng)于所述查詢指令的響應(yīng)指令,其中,所述響應(yīng)指令用于指示所述迀移數(shù)據(jù)流迀移狀態(tài);第二通知單元,用于在所述響應(yīng)指令指示所述迀移數(shù)據(jù)流迀移成功時(shí),通知所述分布式系統(tǒng)啟用新的元數(shù)據(jù)分布路由規(guī)則,并通知所述迀出節(jié)點(diǎn)刪除所述元數(shù)據(jù)的內(nèi)容。13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第三通知模塊還包括: 第二發(fā)送單元,用于在所述查詢指令指示所述迀移數(shù)據(jù)流迀移異常時(shí),向所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)發(fā)送回退請求,其中,所述回退請求用于指示通知所述迀出節(jié)點(diǎn)和所述迀入節(jié)點(diǎn)終止所述迀移流數(shù)據(jù)的復(fù)制操作,以及通知所述迀入節(jié)點(diǎn)刪除已復(fù)制的所述元數(shù)據(jù)的內(nèi)容。14.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第一服務(wù)集群或所述第二服務(wù)集群可同時(shí)作為多個(gè)迀移數(shù)據(jù)流的迀入和迀出服務(wù)集群。
【文檔編號】H04L29/08GK106034080SQ201510105459
【公開日】2016年10月19日
【申請日】2015年3月10日
【發(fā)明人】姬慶發(fā)
【申請人】中興通訊股份有限公司