本公開的實施例總體涉及數(shù)據(jù)移動,更具體地,涉及一種用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法和裝置。
背景技術(shù):
云計算和第三平臺的概念已經(jīng)在全球范圍內(nèi)被迅速采納。許多企業(yè)已經(jīng)將其基礎(chǔ)設(shè)施或服務(wù)轉(zhuǎn)移到第三平臺。這樣的服務(wù)由大型數(shù)據(jù)中心支持,而這些數(shù)據(jù)中心通常在地理上是分布式的。因此,在這些地理上分布式的數(shù)據(jù)中心之間的高效和可靠的數(shù)據(jù)移動機(jī)制對于提供高數(shù)據(jù)移動性和可用性以及可預(yù)測的數(shù)據(jù)服務(wù)級別而言是必要的。針對地理上分布式的數(shù)據(jù)中心之間的數(shù)據(jù)移動的挑戰(zhàn)存在于以下方面。首先,要被分發(fā)的數(shù)據(jù)量可能是巨大的。其次,這些數(shù)據(jù)中心間的網(wǎng)絡(luò)連接可能具有有限的帶寬且不穩(wěn)定。再次,要被分發(fā)的數(shù)據(jù)可能具有各種不同類型,例如,文件、數(shù)據(jù)塊和/或?qū)ο蟮取?/p>
然而,現(xiàn)有的解決方案不能夠在第三平臺上很好地解決這些問題。第一,許多現(xiàn)有數(shù)據(jù)中心的數(shù)據(jù)分發(fā)工具當(dāng)在多個數(shù)據(jù)中間移動數(shù)據(jù)時要求1:1:1映射的拓?fù)浣Y(jié)構(gòu)。如果數(shù)據(jù)中心的數(shù)目多于5個則拓?fù)浣Y(jié)構(gòu)配置變得非常復(fù)雜。然而,第三平臺上的數(shù)據(jù)中心要求靈活的數(shù)據(jù)移動機(jī)制,其中數(shù)據(jù)中心間的網(wǎng)絡(luò)連接的拓?fù)浣Y(jié)構(gòu)是自適應(yīng)的,使得數(shù)據(jù)中心能夠動態(tài)地加入或離開該網(wǎng)絡(luò),而不需要復(fù)雜的預(yù)先配置或繁瑣的運(yùn)行時協(xié)調(diào)。第二,現(xiàn)有數(shù)據(jù)移動解決方案僅能夠工作于其間距離在城市或國家級別的數(shù)據(jù)中心。由于不穩(wěn)定和低帶寬的網(wǎng)絡(luò)連接,現(xiàn)有數(shù)據(jù)移動解決方案不能夠用于全球級別的可靠和高效的數(shù)據(jù)移動。第三,現(xiàn)有的針對數(shù)據(jù)中心的數(shù)據(jù)移動和同步工具僅支持基于塊的存儲。用于構(gòu)建在數(shù)據(jù)中心上的上層應(yīng)用的數(shù)據(jù)同步工具通常是基于文件的。然而,通常存在三種類型的數(shù)據(jù)存儲:基于文件的、基 于塊的和基于對象的?,F(xiàn)有解決方案缺乏在不同類型存儲設(shè)備之間移動數(shù)據(jù)的功能和機(jī)制。第四,現(xiàn)有技術(shù)方案通常不支持跨不同數(shù)據(jù)中心的多個服務(wù)器協(xié)同進(jìn)行大規(guī)模數(shù)據(jù)計算。
因此,本領(lǐng)域中需要一種更為高效和可靠的數(shù)據(jù)移動方案來解決上述問題。
技術(shù)實現(xiàn)要素:
本公開的實施例旨在提供一種用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法和裝置,以解決上述問題。
根據(jù)本公開的第一方面,提供了一種用于利用對等網(wǎng)絡(luò)在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法,包括:對要移動的數(shù)據(jù)進(jìn)行預(yù)處理,以減小所述數(shù)據(jù)的數(shù)據(jù)量;針對所述數(shù)據(jù)生成種子文件;向一個或多個對端數(shù)據(jù)中心分發(fā)所述種子文件;以及響應(yīng)于接收到來自所述一個或多個對端數(shù)據(jù)中心的數(shù)據(jù)請求,向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)的一個或多個片段。
在一些實施例中,對要移動的數(shù)據(jù)進(jìn)行預(yù)處理包括:對所述數(shù)據(jù)進(jìn)行去重和壓縮。
在一些實施例中,針對所述數(shù)據(jù)生成種子文件包括:將所述數(shù)據(jù)分割成等長的多個片段;計算每個片段的哈希值;以及將每個片段的索引和所述哈希值寫入到所述種子文件中。
在一些實施例中,所述種子文件包括與所述數(shù)據(jù)有關(guān)的配置信息,并且其中針對所述數(shù)據(jù)生成種子文件還包括:生成與所述數(shù)據(jù)有關(guān)的所述配置信息;以及將所述配置信息寫入到所述種子文件中。
在一些實施例中,生成與所述數(shù)據(jù)有關(guān)的所述配置信息包括:確定一個或多個候選配置信息;確定每個候選配置信息的代價;以及將代價最小的候選配置信息選擇作為與所述數(shù)據(jù)有關(guān)的所述配置信息。
在一些實施例中,向一個或多個對端數(shù)據(jù)中心分發(fā)所述種子文件包括:利用可靠網(wǎng)絡(luò)協(xié)議并且經(jīng)由種子服務(wù)器向所述一個或多個對端數(shù)據(jù)中心分發(fā)所述種子文件。
在一些實施例中,所述數(shù)據(jù)包括文件,并且其中向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)的一個或多個片段包括:將所述文件分割成等長的多個片段;以及向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述文件的多個片段。
在一些實施例中,所述數(shù)據(jù)包括數(shù)據(jù)塊,并且其中向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)的多個片段還包括:向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)塊。
在一些實施例中,所述數(shù)據(jù)包括對象,并且其中向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)的一個或多個片段還包括:向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述對象。
根據(jù)本公開的第二方面,提供了一種用于利用對等網(wǎng)絡(luò)在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法,包括:接收來自源數(shù)據(jù)中心的種子文件;基于所述種子文件,向與其建立連接的一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求,以獲取與所述種子文件相關(guān)聯(lián)的數(shù)據(jù)的一個或多個片段;從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)的一個或多個片段;以及響應(yīng)于接收到所述數(shù)據(jù)的所有片段,將所有片段組合成所述數(shù)據(jù)。
在一些實施例中,接收來自源數(shù)據(jù)中心的種子文件包括:利用可靠網(wǎng)絡(luò)協(xié)議并且經(jīng)由種子服務(wù)器接收來自所述源數(shù)據(jù)中心的所述種子文件。
在一些實施例中,所述一個或多個對端數(shù)據(jù)中心包括所述源數(shù)據(jù)中心。
在一些實施例中,所述種子文件包括與所述數(shù)據(jù)有關(guān)的配置信息,并且其中基于所述種子文件,向與其建立連接的一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求包括:根據(jù)所述配置信息,向所述一個或多個對端數(shù)據(jù)中心發(fā)送用于獲取所述數(shù)據(jù)的數(shù)據(jù)請求。
在一些實施例中,從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)的一個或多個片段包括:響應(yīng)于接收到所述數(shù)據(jù)的每個片段,計算所述片段的第一哈希值;將所述第一哈希值與所述種子文件中包括的、 與所述片段相對應(yīng)的第二哈希值進(jìn)行比較;響應(yīng)于所述第一哈希值等于所述第二哈希值,保存所述片段;以及響應(yīng)于所述第一哈希值不等于所述第二哈希值,向一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求以重新獲取所述片段。
在一些實施例中,所述數(shù)據(jù)包括文件,并且其中從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)的一個或多個片段包括:從所述一個或多個對端數(shù)據(jù)中心接收所述文件的一個或多個片段。
在一些實施例中,響應(yīng)于接收到所述數(shù)據(jù)的所有片段,將所有片段組合成所述數(shù)據(jù)包括:響應(yīng)于接收到所述文件的所有片段,將所有片段順序地連接以得到所述文件。
在一些實施例中,所述數(shù)據(jù)包括數(shù)據(jù)塊,并且其中從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)的一個或多個片段還包括:從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)塊。
在一些實施例中,響應(yīng)于接收到所述數(shù)據(jù)的所有片段,將所有片段組合成所述數(shù)據(jù)包括:響應(yīng)于接收到所述數(shù)據(jù)塊,將所述數(shù)據(jù)塊的內(nèi)容寫回到相應(yīng)的數(shù)據(jù)塊中。
在一些實施例中,所述數(shù)據(jù)包括對象,并且其中從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)的一個或多個片段還包括:從所述一個或多個對端數(shù)據(jù)中心接收所述對象。
在一些實施例中,所述方法還包括:響應(yīng)于與所述一個或多個對端數(shù)據(jù)中心中的一個對端數(shù)據(jù)中心之間的網(wǎng)絡(luò)連接斷開,與另一對端數(shù)據(jù)中心建立連接,以向所述另一對端數(shù)據(jù)中心發(fā)送用于獲取所述數(shù)據(jù)的數(shù)據(jù)請求。
在一些實施例中,所述方法還包括:響應(yīng)于來自所述一個或多個對端數(shù)據(jù)中心的數(shù)據(jù)請求,向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)的一個或多個片段。
根據(jù)本公開的第三方面,提供了一種用于利用對等網(wǎng)絡(luò)在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的裝置,包括:預(yù)處理模塊,被配置為對要移動的數(shù)據(jù)進(jìn)行預(yù)處理,以減小所述數(shù)據(jù)的數(shù)據(jù)量;種子文件生成 模塊,被配置為針對所述數(shù)據(jù)生成種子文件;種子文件分發(fā)模塊,被配置為向一個或多個對端數(shù)據(jù)中心分發(fā)所述種子文件;以及第一數(shù)據(jù)發(fā)送模塊,被配置為響應(yīng)于接收到來自所述一個或多個對端數(shù)據(jù)中心的數(shù)據(jù)請求,向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)的一個或多個片段。
在一些實施例中,所述預(yù)處理模塊還被配置為:對所述數(shù)據(jù)進(jìn)行去重和壓縮。
在一些實施例中,所述種子文件生成模塊還被配置為:將所述數(shù)據(jù)分割成等長的多個片段;計算每個片段的哈希值;以及將每個片段的索引和所述哈希值寫入到所述種子文件中。
在一些實施例中,所述種子文件包括與所述數(shù)據(jù)有關(guān)的配置信息,并且其中所述種子文件生成模塊還被配置為:生成與所述數(shù)據(jù)有關(guān)的所述配置信息;以及將所述配置信息寫入到所述種子文件中。
在一些實施例中,生成與所述數(shù)據(jù)有關(guān)的所述配置信息包括:確定一個或多個候選配置信息;確定每個候選配置信息的代價;以及將代價最小的候選配置信息選擇作為與所述數(shù)據(jù)有關(guān)的所述配置信息。
在一些實施例中,所述種子文件分發(fā)模塊還被配置為:利用可靠網(wǎng)絡(luò)協(xié)議并且經(jīng)由種子服務(wù)器向所述一個或多個對端數(shù)據(jù)中心分發(fā)所述種子文件。
在一些實施例中,所述數(shù)據(jù)包括文件,并且其中所述第一數(shù)據(jù)發(fā)送模塊還被配置為:將所述文件分割成等長的多個片段;以及向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述文件的多個片段。
在一些實施例中,所述數(shù)據(jù)包括數(shù)據(jù)塊,并且其中所述第一數(shù)據(jù)發(fā)送模塊還被配置為:向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)塊。
在一些實施例中,所述數(shù)據(jù)包括對象,并且其中所述第一數(shù)據(jù)發(fā)送模塊還被配置為:向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述對象。
根據(jù)本公開的第四方面,提供了一種用于利用對等網(wǎng)絡(luò)在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的裝置,包括:種子文件接收模塊,被配 置為接收來自源數(shù)據(jù)中心的種子文件;請求發(fā)送模塊,被配置為基于所述種子文件,向與其建立連接的一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求,以獲取與所述種子文件相關(guān)聯(lián)的數(shù)據(jù)的一個或多個片段;數(shù)據(jù)接收模塊,被配置為從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)的一個或多個片段;數(shù)據(jù)組合模塊,被配置為響應(yīng)于接收到所述數(shù)據(jù)的所有片段,將所有片段組合成所述數(shù)據(jù)。
在一些實施例中,所述數(shù)據(jù)接收模塊還被配置為:利用可靠網(wǎng)絡(luò)協(xié)議并且經(jīng)由種子服務(wù)器接收來自所述源數(shù)據(jù)中心的所述種子文件。
在一些實施例中,所述一個或多個對端數(shù)據(jù)中心包括所述源數(shù)據(jù)中心。
在一些實施例中,所述種子文件包括與所述數(shù)據(jù)有關(guān)的配置信息,并且其中所述請求發(fā)送模塊還被配置為:根據(jù)所述配置信息,向所述一個或多個對端數(shù)據(jù)中心發(fā)送用于獲取所述數(shù)據(jù)的數(shù)據(jù)請求。
在一些實施例中,所述數(shù)據(jù)接收模塊還被配置為:響應(yīng)于接收到所述數(shù)據(jù)的每個片段,計算所述片段的第一哈希值;將所述第一哈希值與所述種子文件中包括的、與所述片段相對應(yīng)的第二哈希值進(jìn)行比較;響應(yīng)于所述第一哈希值等于所述第二哈希值,保存所述片段;以及響應(yīng)于所述第一哈希值不等于所述第二哈希值,向一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求以重新獲取所述片段。
在一些實施例中,所述數(shù)據(jù)包括文件,并且其中所述數(shù)據(jù)接收模塊還被配置為:從所述一個或多個對端數(shù)據(jù)中心接收所述文件的一個或多個片段。
在一些實施例中,所述數(shù)據(jù)組合模塊還被配置為:響應(yīng)于接收到所述文件的所有片段,將所有片段順序地連接以得到所述文件。
在一些實施例中,所述數(shù)據(jù)包括數(shù)據(jù)塊,并且其中所述數(shù)據(jù)接收模塊還被配置為:從所述一個或多個對端數(shù)據(jù)中心接收所述數(shù)據(jù)塊。
在一些實施例中,所述數(shù)據(jù)組合模塊還被配置為:響應(yīng)于接收到所述數(shù)據(jù)塊,將所述數(shù)據(jù)塊的內(nèi)容寫回到相應(yīng)的數(shù)據(jù)塊中。
在一些實施例中,所述數(shù)據(jù)包括對象,并且其中所述數(shù)據(jù)接收模 塊還被配置為:從所述一個或多個對端數(shù)據(jù)中心接收所述對象。
在一些實施例中,所述裝置還包括:網(wǎng)絡(luò)連接模塊,被配置為響應(yīng)于與所述一個或多個對端數(shù)據(jù)中心中的一個對端數(shù)據(jù)中心之間的網(wǎng)絡(luò)連接斷開,與另一對端數(shù)據(jù)中心建立連接,以向所述另一對端數(shù)據(jù)中心發(fā)送用于獲取所述數(shù)據(jù)的數(shù)據(jù)請求。
在一些實施例中,所述裝置還包括:第二數(shù)據(jù)發(fā)送模塊,被配置為響應(yīng)于來自所述一個或多個對端數(shù)據(jù)中心的數(shù)據(jù)請求,向所述一個或多個對端數(shù)據(jù)中心發(fā)送所述數(shù)據(jù)的一個或多個片段。
根據(jù)本公開的第五方面,提供了一種用于數(shù)據(jù)處理的計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品被有形地存儲在非瞬態(tài)計算機(jī)可讀介質(zhì)上并且包括機(jī)器可執(zhí)行指令,所述機(jī)器可執(zhí)行指令在被執(zhí)行時使得機(jī)器執(zhí)行所述方法中的任意方法的任意步驟。
與現(xiàn)有技術(shù)相比,本公開的實施例能夠在不可靠和低帶寬網(wǎng)絡(luò)上實現(xiàn)分布式數(shù)據(jù)中心間的可靠和快速的數(shù)據(jù)移動,能夠支持分布式數(shù)據(jù)中心間的自適應(yīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)而無需復(fù)雜的預(yù)先配置或繁瑣的運(yùn)行時協(xié)調(diào),能夠支持不同的數(shù)據(jù)存儲類型,并且便于進(jìn)行分布式數(shù)據(jù)中心間的協(xié)作式云計算和數(shù)據(jù)聚合。
附圖說明
通過參考附圖閱讀下文的詳細(xì)描述,本公開的實施例的上述以及其他目的、特征和優(yōu)點(diǎn)將變得易于理解。在附圖中,以示例而非限制性的方式示出了本公開的若干實施例,其中:
圖1圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的環(huán)境100的示意圖;
圖2圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法200的流程圖;
圖3圖示了根據(jù)本公開的實施例的用于基于代價的方式來生成與要移動的數(shù)據(jù)有關(guān)的配置信息的方法300的流程圖;
圖4圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn) 行數(shù)據(jù)移動的方法400的流程圖;
圖5圖示了根據(jù)本公開的實施例的針對在移動過程中被修改的數(shù)據(jù)的數(shù)據(jù)移動的示意圖;
圖6圖示了根據(jù)本公開的實施例的在分布式數(shù)據(jù)中心之間進(jìn)行協(xié)作式云計算的示意圖;
圖7圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的裝置700的框圖;
圖8圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的裝置800的框圖;以及
圖9示出了可以用來實施本公開的實施例的設(shè)備900的示意性框圖。
在各個附圖中,相同或?qū)?yīng)的標(biāo)號表示相同或?qū)?yīng)的部分。
具體實施方式
在下文中,將參考附圖詳細(xì)描述本公開的各個示例性實施例。應(yīng)當(dāng)注意,這些附圖和描述涉及的僅僅是作為示例性的實施例。應(yīng)該指出的是,根據(jù)隨后描述,很容易設(shè)想出此處公開的結(jié)構(gòu)和方法的替換實施例,并且可以在不脫離本公開要求保護(hù)的原理的情況下使用這些替代實施例。
應(yīng)當(dāng)理解,給出這些示例性實施例僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實現(xiàn)本公開,而并非以任何方式限制本公開的范圍。
在此使用的術(shù)語“包括”、“包含”及類似術(shù)語應(yīng)該被理解為是開放性的術(shù)語,即“包括/包含但不限于”。術(shù)語“基于”是“至少部分地基于”。術(shù)語“一個實施例”表示“至少一個實施例”;術(shù)語“另一實施例”表示“至少一個另外的實施例”。其他術(shù)語的相關(guān)定義將在下文描述中給出。
在下文中,將參考附圖來詳細(xì)描述根據(jù)本公開的實施例的確定設(shè)備的物理位置的技術(shù)方案。
如上所述,為了實現(xiàn)分布式數(shù)據(jù)中心間的可靠和快速的數(shù)據(jù)移動, 本公開的實施例提出了對等(peer-to-peer,簡稱為p2p)數(shù)據(jù)移動方案。該方案可以被用于構(gòu)建全球虛擬數(shù)據(jù)中心以在全球范圍內(nèi)透明地共享和重定位數(shù)據(jù)。當(dāng)兩個或更多個節(jié)點(diǎn)被連接并且需要在不經(jīng)過單獨(dú)的服務(wù)器節(jié)點(diǎn)的情況下共享資源時,p2p網(wǎng)絡(luò)可以被創(chuàng)建。p2p能夠可靠并快速地在所有對等節(jié)點(diǎn)間傳遞數(shù)據(jù)。
圖1圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的環(huán)境100的示意圖。圖1示出了多個數(shù)據(jù)中心1101、1102……110n,多個數(shù)據(jù)中心1101、1102……110n彼此遠(yuǎn)離并且之間經(jīng)由帶寬有限且不穩(wěn)定的網(wǎng)絡(luò)140進(jìn)行連接,其中例如數(shù)據(jù)中心1101想要向其他數(shù)據(jù)中心移動數(shù)據(jù)(下文中也將數(shù)據(jù)中心1101稱為“源數(shù)據(jù)中心”)。根據(jù)本公開的實施例,為了在多個數(shù)據(jù)中心1101、1102……110n之間建立用于進(jìn)行數(shù)據(jù)移動的對等網(wǎng)絡(luò),首先可以建立中心種子(torrent)服務(wù)器。例如,圖1圖示了所建立的種子服務(wù)器120,其用于托管種子文件(torrentfile)并且在所有數(shù)據(jù)中心(即,數(shù)據(jù)中心1101、1102……110n)之間交換數(shù)據(jù)。種子服務(wù)器120中存儲的種子文件可以包括所有數(shù)據(jù)中心和要移動的數(shù)據(jù)的元數(shù)據(jù),諸如數(shù)據(jù)中心的地址、每個數(shù)據(jù)片段的描述和校驗和等。其次,針對每個數(shù)據(jù)中心(即,數(shù)據(jù)中心1101、1102……110n中的每個數(shù)據(jù)中心),可以建立相應(yīng)的p2p代理。例如,圖1圖示了多個p2p代理1301、1302……130n,它們分別與相應(yīng)的數(shù)據(jù)中心相關(guān)聯(lián)。每個數(shù)據(jù)中心將通過其p2p代理來與其他數(shù)據(jù)中心建立p2p網(wǎng)絡(luò)。p2p代理可以用于與其他p2p代理以及種子服務(wù)器進(jìn)行通信,以在與其相關(guān)聯(lián)的主數(shù)據(jù)中心和其他遠(yuǎn)程數(shù)據(jù)中心之間發(fā)送和接收數(shù)據(jù)。p2p代理可以被實施為數(shù)據(jù)中心中的可插入物理裝置或者在數(shù)據(jù)中心中運(yùn)行的軟件應(yīng)用。這樣,每個數(shù)據(jù)中心具有利用p2p協(xié)議進(jìn)行數(shù)據(jù)交換和移動的p2p代理,從而使得能夠在所有數(shù)據(jù)中心之間建立p2p網(wǎng)絡(luò)。
圖2圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法200的流程圖。以下將參考圖1來對方法200進(jìn)行詳細(xì)描述。例如,方法200可以由圖1中所示出的、想要向其他數(shù)據(jù) 中心移動數(shù)據(jù)的數(shù)據(jù)中心1101(即源數(shù)據(jù)中心)來實施。更具體地,方法200可以由數(shù)據(jù)中心1101的p2p代理1301來實施。方法200可以包括步驟s201至步驟s204。
在步驟s201,對要移動的數(shù)據(jù)進(jìn)行預(yù)處理,以減小該數(shù)據(jù)的數(shù)據(jù)量。根據(jù)本公開的實施例,例如,數(shù)據(jù)中心1101(例如,其p2p代理1301)可以對要移動的數(shù)據(jù)進(jìn)行去重和壓縮,以減小要移動的數(shù)據(jù)的數(shù)據(jù)量。
接下來,方法200進(jìn)行至步驟s202。在步驟s202,針對數(shù)據(jù)生成種子文件。根據(jù)本公開的實施例,可以由數(shù)據(jù)中心1101(例如,其p2p代理1301)來生成針對要移動的數(shù)據(jù)的種子文件。例如,生成種子文件的過程可以包括:將數(shù)據(jù)分割成等長的多個片段;計算每個片段的哈希值;以及將每個片段的索引和哈希值寫入到種子文件中。
在一些實施例中,種子文件還可以包括與要移動的數(shù)據(jù)有關(guān)的配置信息,該配置信息可以包括與數(shù)據(jù)放置和重定位有關(guān)的信息,例如,如何將要移動的數(shù)據(jù)放置在多個遠(yuǎn)程數(shù)據(jù)中心中以達(dá)到最佳性能(諸如高可用性(ha)和服務(wù)等級協(xié)議(sla)等)。根據(jù)本公開的實施例,例如,可以由數(shù)據(jù)中心1101(例如,其p2p代理1301)來生成與要移動的數(shù)據(jù)有關(guān)的配置信息并且將該配置信息寫入到種子文件中。附加地或者備選地,可以利用基于代價的方式來生成與要移動的數(shù)據(jù)有關(guān)的配置信息。例如,圖3圖示了根據(jù)本公開的實施例的用于基于代價的方式來生成與要移動的數(shù)據(jù)有關(guān)的配置信息的方法300的流程圖。如圖3所示,方法300可以包括步驟s301至步驟s303。在步驟s301,確定一個或多個候選配置信息。根據(jù)本公開的實施例,在放置和重定位數(shù)據(jù)時可以考慮以下因素:存儲設(shè)備容量、ha、訪問性能(例如,數(shù)據(jù)訪問延遲)、數(shù)據(jù)所在地以及容錯等。接下來,方法300進(jìn)行至步驟s302,確定每個候選配置信息的代價。例如,可以針對以上列出的每個因素計算代價得分,并且通過將所有代價得分相加可以計算出每個候選配置信息的總代價。較小的總代價可以指示該配置信息所包括的數(shù)據(jù)放置方案更優(yōu)。接下來,方法300進(jìn)行至步驟s303, 將代價最小的候選配置信息選擇作為與數(shù)據(jù)有關(guān)的配置信息。因此,該配置信息可以包括與該數(shù)據(jù)有關(guān)的最佳放置方案。選出的配置信息可以被放置在種子文件中,以便于將其分發(fā)給所有數(shù)據(jù)中心。當(dāng)對端數(shù)據(jù)中心獲得該種子文件時,該對端數(shù)據(jù)中心可以從該種子文件中獲得與要移動的數(shù)據(jù)有關(guān)的配置信息(例如,包括該數(shù)據(jù)的放置方案),從而可以根據(jù)該配置信息來獲取相應(yīng)的數(shù)據(jù)。當(dāng)配置信息要被改變時(例如,要更改其中包括的數(shù)據(jù)放置方案),可以修改包含該配置信息的種子文件。這樣,其他數(shù)據(jù)中心可以根據(jù)經(jīng)修改的種子文件來相應(yīng)地調(diào)整和交換它們的數(shù)據(jù)。由此可見,相對于傳統(tǒng)方案而言,根據(jù)本公開的實施例能夠?qū)崿F(xiàn)動態(tài)和智能數(shù)據(jù)放置及重定位。
返回到圖2,接下來,方法200進(jìn)行至步驟s203。在步驟s203,向一個或多個對端數(shù)據(jù)中心分發(fā)種子文件。根據(jù)本公開的實施例,數(shù)據(jù)中心1101(例如,其p2p代理1301)可以利用可靠網(wǎng)絡(luò)協(xié)議(諸如,傳輸控制協(xié)議(tcp))來向一個或多個對端數(shù)據(jù)中心(例如,數(shù)據(jù)中心1102、1103……110n)分發(fā)種子文件。附加地或者備選地,數(shù)據(jù)中心1101(例如,其p2p代理1301)可以首先將種子文件上傳到種子服務(wù)器120;然后由數(shù)據(jù)中心1102、1103……110n(例如,其相應(yīng)的p2p代理1302、1303……130n)向種子服務(wù)器120請求以獲得該種子文件。在一個或多個對端數(shù)據(jù)中心獲得種子文件之后,它們可以向p2p網(wǎng)絡(luò)中所有可到達(dá)的數(shù)據(jù)中心(例如,包括但不限于數(shù)據(jù)中心1101)請求以獲取數(shù)據(jù)的片段。
接下來,方法200進(jìn)行至步驟s204。在步驟s204,響應(yīng)于接收到來自一個或多個對端數(shù)據(jù)中心的數(shù)據(jù)請求,向一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)的一個或多個片段。
根據(jù)本公開的實施例,要移動的數(shù)據(jù)可以包括至少三種類型:基于文件的數(shù)據(jù)、基于數(shù)據(jù)塊的數(shù)據(jù)以及基于對象的數(shù)據(jù)。當(dāng)要移動的數(shù)據(jù)為文件時,可以將文件分割成等長的多個片段并且將每個片段當(dāng)作數(shù)據(jù)傳遞的基本單元;當(dāng)要移動的數(shù)據(jù)為數(shù)據(jù)塊時,可以將每個數(shù)據(jù)塊作為數(shù)據(jù)傳遞的基本單元;以及當(dāng)要移動的數(shù)據(jù)為對象時,可以 將每個對象當(dāng)作數(shù)據(jù)傳遞的基本單元,或者例如針對較大對象,也可以將對象分割為等長的多個片段并且將對象的每個片段作為數(shù)據(jù)傳遞的基本單元。這樣,本公開的實施例能夠支持不同類型的數(shù)據(jù)存儲。
圖4圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法400的流程圖。以下將參考圖1來對方法400進(jìn)行詳細(xì)描述。例如,方法400可以由圖1中所示出的、想要向其他數(shù)據(jù)中心移動數(shù)據(jù)的數(shù)據(jù)中心1101的一個或多個對端數(shù)據(jù)中心(例如,數(shù)據(jù)中心1102)來實施。更具體地,例如,方法400可以由數(shù)據(jù)中心1102的p2p代理1302來實施。方法400可以包括步驟s401至步驟s404。
如上所述,數(shù)據(jù)中心1101可以經(jīng)由種子服務(wù)器120向?qū)Χ藬?shù)據(jù)中心(例如,數(shù)據(jù)中心1102)分發(fā)要移動的數(shù)據(jù)的種子文件(參考圖2所述的步驟s203)。在步驟s401,數(shù)據(jù)中心1102(例如,其p2p代理1302)可以接收來自源數(shù)據(jù)中心(即,數(shù)據(jù)中心1101)的種子文件。根據(jù)本公開的實施例,數(shù)據(jù)中心1102(例如,其p2p代理1302)可以利用可靠網(wǎng)絡(luò)協(xié)議(例如,tcp)并且經(jīng)由種子服務(wù)器120接收來自所述源數(shù)據(jù)中心的所述種子文件。
接下來,方法400進(jìn)行至步驟s402。在步驟s402,基于種子文件,向與其建立連接的一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求,以獲取與種子文件相關(guān)聯(lián)的數(shù)據(jù)的一個或多個片段。例如,數(shù)據(jù)中心1102(例如,其p2p代理1302)可以向與其建立連接的數(shù)據(jù)中心1101、1104等(例如,其相應(yīng)的p2p代理1301、1304等)發(fā)送數(shù)據(jù)請求,以獲取與種子文件相關(guān)聯(lián)的數(shù)據(jù)的一個或多個片段。根據(jù)本公開的實施例,種子文件可以包括與要移動的數(shù)據(jù)有關(guān)的配置信息,該配置信息可以包括與數(shù)據(jù)放置和重定位有關(guān)的信息,例如,如何將要移動的數(shù)據(jù)放置在多個遠(yuǎn)程數(shù)據(jù)中心中以達(dá)到最佳性能(諸如高可用性(ha)和服務(wù)等級協(xié)議(sla)等)。當(dāng)數(shù)據(jù)中心1102獲得種子文件時,數(shù)據(jù)中心1102可以從該種子文件中獲得與要移動的數(shù)據(jù)有關(guān)的配置信息(例如,包括該數(shù)據(jù)的放置方案),從而可以根據(jù)該配置信息發(fā)送用于獲取相應(yīng)數(shù)據(jù)的數(shù)據(jù)請求。例如,如果配置信息指示數(shù)據(jù)應(yīng)當(dāng)被放 置在包括數(shù)據(jù)中心1102的一個或多個數(shù)據(jù)中心中時,數(shù)據(jù)中心1102可以發(fā)送用于獲得相應(yīng)數(shù)據(jù)的數(shù)據(jù)請求;而如果配置信息沒有指示數(shù)據(jù)應(yīng)當(dāng)被放置在數(shù)據(jù)中心1102中時,數(shù)據(jù)中心1102可以不發(fā)送用于獲得相應(yīng)數(shù)據(jù)的數(shù)據(jù)請求。
接下來,方法400進(jìn)行至步驟s403。在步驟s403,從一個或多個對端數(shù)據(jù)中心接收數(shù)據(jù)的一個或多個片段。例如,響應(yīng)于種子文件中包括的配置信息指示數(shù)據(jù)應(yīng)當(dāng)被放置在數(shù)據(jù)中心1102(例如,其p2p代理1302)可以向與其建立連接的數(shù)據(jù)中心1101、1104等(例如,其相應(yīng)的p2p代理1301、1304等)發(fā)送數(shù)據(jù)請求,并且從數(shù)據(jù)中心1101、1104等接收數(shù)據(jù)的一個或多個片段。根據(jù)本公開的實施例,數(shù)據(jù)中心1102可以根據(jù)種子文件對接收到的一個或多個片段進(jìn)行驗證。例如步驟s403還可以包括:響應(yīng)于接收到數(shù)據(jù)的每個片段,計算該片段的第一哈希值;將第一哈希值與種子文件中包括的、與該片段相對應(yīng)的第二哈希值進(jìn)行比較;響應(yīng)于第一哈希值等于第二哈希值,保存該片段;以及響應(yīng)于第一哈希值不等于第二哈希值,向一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求以重新獲取該片段。
附加地,根據(jù)p2p網(wǎng)絡(luò)的原理,除了從一個或多個對端數(shù)據(jù)中心接收數(shù)據(jù)的一個或多個片段以外,數(shù)據(jù)中心1102也可以響應(yīng)于來自其他對端數(shù)據(jù)中心(例如,數(shù)據(jù)中心1103)的數(shù)據(jù)請求,向其他對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)的一個或多個片段。
接下來,方法400進(jìn)行至步驟s404。在步驟s404,響應(yīng)于接收到數(shù)據(jù)的所有片段,將所有片段組合成數(shù)據(jù)。例如,當(dāng)數(shù)據(jù)中心1102的p2p代理1302接收到數(shù)據(jù)的所有片段后,p2p代理1302可以根據(jù)種子文件將數(shù)據(jù)的所有片段重新組合成原始數(shù)據(jù)。
根據(jù)本公開的實施例,數(shù)據(jù)中心所接收到的數(shù)據(jù)可以包括至少三種類型:基于文件的數(shù)據(jù)、基于數(shù)據(jù)塊的數(shù)據(jù)以及基于對象的數(shù)據(jù)。當(dāng)接收到的數(shù)據(jù)為基于文件的數(shù)據(jù)時,文件可以已經(jīng)在源數(shù)據(jù)中心被分割成等長的多個片段并且每個片段被作為數(shù)據(jù)傳遞的基本單元;因此,響應(yīng)于接收到該文件的所有片段,可以將所有片段順序地連接以 得到原始文件。當(dāng)接收到的數(shù)據(jù)為基于數(shù)據(jù)塊的數(shù)據(jù)時,數(shù)據(jù)塊可以被作為數(shù)據(jù)傳遞的基本單元;因此,響應(yīng)于接收到數(shù)據(jù)塊,可以將該數(shù)據(jù)塊的內(nèi)容寫回到相應(yīng)的數(shù)據(jù)塊中。當(dāng)接收到的數(shù)據(jù)為基于對象的數(shù)據(jù)時,例如針對較大對象,對象可以已經(jīng)被源數(shù)據(jù)中心分割為等長的多個片段并且對象的每個片段被作為數(shù)據(jù)傳遞的基本單元。因此,響應(yīng)于接收到該對象的所有片段,可以將所有片段重新組合為原始對象。這樣,本公開的實施例能夠支持不同類型的數(shù)據(jù)存儲。
由于不同數(shù)據(jù)中心之間的網(wǎng)絡(luò)連接可能是間斷的或者不穩(wěn)定的,兩個數(shù)據(jù)中心之間的連接在任何時候可能被丟失,例如,如圖2所示,數(shù)據(jù)中心1102與1104之間的數(shù)據(jù)連接可能丟失,這時,數(shù)據(jù)中心1102可以與另一數(shù)據(jù)中心(例如,數(shù)據(jù)中心1105)建立連接,以便能夠向數(shù)據(jù)中心1105請求數(shù)據(jù)。因此,任何連接丟失將僅對整體的數(shù)據(jù)移動產(chǎn)生較小的影響,從而使得數(shù)據(jù)能夠被快速地傳播以減少數(shù)據(jù)移動的整體時間。
在實際場景中,要移動的數(shù)據(jù)可能在移動過程中被修改。本公開的實施例能夠提供針對在移動過程中被修改的數(shù)據(jù)的解決方案。
圖5圖示了根據(jù)本公開的實施例的針對在移動過程中被修改的數(shù)據(jù)的數(shù)據(jù)移動的示意圖。例如,圖5圖示了由源數(shù)據(jù)中心510向目標(biāo)數(shù)據(jù)中心520進(jìn)行的數(shù)據(jù)移動,在數(shù)據(jù)移動的過程中要移動的數(shù)據(jù)將被修改。如圖5所示,可以在開始移動數(shù)據(jù)前,由源數(shù)據(jù)中心510對要移動的數(shù)據(jù)進(jìn)行快照(s501),該快照可以利用參考圖2所述的方法200來被傳遞。與此同時,源數(shù)據(jù)中心510可以對該數(shù)據(jù)的改變進(jìn)行監(jiān)控。如果發(fā)生數(shù)據(jù)修改,源數(shù)據(jù)中心510可以生成對應(yīng)于該修改的增量數(shù)據(jù)并且利用參考圖2所述的方法200來傳遞該增量數(shù)據(jù)(s502)。在整個數(shù)據(jù)移動的過程中,源數(shù)據(jù)中心可以持續(xù)進(jìn)行上述動作。在另一方面,當(dāng)目標(biāo)數(shù)據(jù)中心520接收到該數(shù)據(jù)時,目標(biāo)數(shù)據(jù)中心520可以首先向其本地存儲應(yīng)用快照數(shù)據(jù),并且然后按照正確的次序應(yīng)用每個增量數(shù)據(jù);附加地,目標(biāo)數(shù)據(jù)中心520還可以以固定時間間隔(例如,一小時或者一天)對該數(shù)據(jù)的存儲狀態(tài)進(jìn)行檢查以能 夠?qū)Πl(fā)生故障的先前數(shù)據(jù)進(jìn)行恢復(fù)(s503)。
在實際場景中,利用本公開的實施例還能夠?qū)崿F(xiàn)分布式數(shù)據(jù)中心的進(jìn)行協(xié)作式云計算。
圖6圖示了根據(jù)本公開的實施例的在分布式數(shù)據(jù)中心之間進(jìn)行協(xié)作式云計算的示意圖。圖6示出了多個數(shù)據(jù)中心6101、6102……610n和種子服務(wù)器620,其中多個數(shù)據(jù)中心6101、6102……610n彼此遠(yuǎn)離。在諸如數(shù)據(jù)加密和科學(xué)計算的場景中,例如數(shù)據(jù)中心6101可以成為主數(shù)據(jù)中心,其可以向其他可達(dá)的數(shù)據(jù)中心(例如,數(shù)據(jù)中心6102、6103和6104)分配分布式任務(wù)。根據(jù)本公開的實施例,主數(shù)據(jù)中心6101可以向種子服務(wù)器620推送任務(wù)(s601)。具有計算能力的其他數(shù)據(jù)中心(例如,數(shù)據(jù)中心6102、6103和6104)可以經(jīng)由種子服務(wù)器620獲得相應(yīng)的任務(wù)并且對其進(jìn)行執(zhí)行(s602)。在完成相應(yīng)的任務(wù)之后,這些數(shù)據(jù)中心(例如,數(shù)據(jù)中心6102、6103和6104)可以向主數(shù)據(jù)中心6101發(fā)送相應(yīng)結(jié)果(s603)。主數(shù)據(jù)中心6101可以聚合所有的結(jié)果并且得到最終的計算結(jié)果(s604)。
另外,本公開的實施例還可以被應(yīng)用于數(shù)據(jù)聚合的場景。例如,可以在不同位置存在多個小的衛(wèi)星數(shù)據(jù)中心,其分別服務(wù)于不同的用戶。附加地,還可以存在中央數(shù)據(jù)中心,其持有所有的完整數(shù)據(jù)。衛(wèi)星數(shù)據(jù)中心可以利用根據(jù)本公開的實施例的p2p數(shù)據(jù)移動機(jī)制向中央數(shù)據(jù)中心周期性地發(fā)送數(shù)據(jù)以用于分析和/或存檔。因此,利用本公開的實施例能夠?qū)崿F(xiàn)分布式數(shù)據(jù)中心之間的數(shù)據(jù)聚合。
圖7圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的裝置700的框圖。如圖7所示,裝置700可以包括:預(yù)處理模塊701,被配置為對要移動的數(shù)據(jù)進(jìn)行預(yù)處理,以減小該數(shù)據(jù)的數(shù)據(jù)量;種子文件生成模塊702,被配置為針對數(shù)據(jù)生成種子文件;種子文件分發(fā)模塊703,被配置為向一個或多個對端數(shù)據(jù)中心分發(fā)該種子文件;以及第一數(shù)據(jù)發(fā)送模塊704,被配置為響應(yīng)于接收到來自一個或多個對端數(shù)據(jù)中心的數(shù)據(jù)請求,向一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)的一個或多個片段。
根據(jù)本公開的實施例,預(yù)處理模塊701還可以被配置為對數(shù)據(jù)進(jìn)行去重和壓縮。
根據(jù)本公開的實施例,種子文件生成模塊702還可以被配置為:將數(shù)據(jù)分割成等長的多個片段;計算每個片段的哈希值;以及將每個片段的索引和哈希值寫入到種子文件中。
根據(jù)本公開的實施例,種子文件可以包括與數(shù)據(jù)有關(guān)的配置信息,并且種子文件生成模塊702還可以被配置為:生成與數(shù)據(jù)有關(guān)的配置信息;以及將配置信息寫入到種子文件中。其中生成與數(shù)據(jù)有關(guān)的配置信息可以包括:確定一個或多個候選配置信息;確定每個候選配置信息的代價;以及將代價最小的候選配置信息選擇作為與數(shù)據(jù)有關(guān)的配置信息。
根據(jù)本公開的實施例,種子文件分發(fā)模塊703還可以被配置為:利用可靠網(wǎng)絡(luò)協(xié)議并且經(jīng)由種子服務(wù)器向一個或多個對端數(shù)據(jù)中心分發(fā)種子文件。
根據(jù)本公開的實施例,數(shù)據(jù)可以包括文件,并且第一數(shù)據(jù)發(fā)送模塊704還可以被配置為:將文件分割成等長的多個片段;以及向一個或多個對端數(shù)據(jù)中心發(fā)送該文件的多個片段。
根據(jù)本公開的實施例,數(shù)據(jù)可以包括數(shù)據(jù)塊,并且第一數(shù)據(jù)發(fā)送模塊704還可以被配置為向一個或多個對端數(shù)據(jù)中心發(fā)送該數(shù)據(jù)塊。
根據(jù)本公開的實施例,數(shù)據(jù)可以包括對象,并且第一數(shù)據(jù)發(fā)送模塊704還可以被配置為向一個或多個對端數(shù)據(jù)中心發(fā)送該對象。
出于清楚的目的,在圖7中沒有示出裝置700的某些可選模塊。然而,應(yīng)當(dāng)理解,上文參考圖1-6所描述的各個特征同樣適用于裝置700。而且,裝置700的各個模塊可以是硬件模塊,也可以是軟件模塊。例如,在某些實施例中,裝置700可以部分或者全部利用軟件和/或固件來實現(xiàn),例如被實現(xiàn)為包含在計算機(jī)可讀介質(zhì)上的計算機(jī)程序產(chǎn)品。備選地或附加地,裝置700可以部分或者全部基于硬件來實現(xiàn),例如被實現(xiàn)為集成電路(ic)、專用集成電路(asic)、片上系統(tǒng)(soc)、現(xiàn)場可編程門陣列(fpga)等。本公開的范圍在此方面不受限制。
圖8圖示了根據(jù)本公開的實施例的用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的裝置800的框圖。如圖8所示,裝置800可以包括:種子文件接收模塊801,被配置為接收來自源數(shù)據(jù)中心的種子文件;請求發(fā)送模塊802,被配置為基于種子文件,向與其建立連接的一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求,以獲取與該種子文件相關(guān)聯(lián)的數(shù)據(jù)的一個或多個片段;數(shù)據(jù)接收模塊803,被配置為從一個或多個對端數(shù)據(jù)中心接收數(shù)據(jù)的一個或多個片段;數(shù)據(jù)組合模塊804,被配置為響應(yīng)于接收到數(shù)據(jù)的所有片段,將所有片段組合成數(shù)據(jù)。
根據(jù)本公開的實施例,數(shù)據(jù)接收模塊803還可以被配置為利用可靠網(wǎng)絡(luò)協(xié)議并且經(jīng)由種子服務(wù)器接收來自源數(shù)據(jù)中心的種子文件。
根據(jù)本公開的實施例,一個或多個對端數(shù)據(jù)中心包括源數(shù)據(jù)中心。
根據(jù)本公開的實施例,種子文件可以包括與數(shù)據(jù)有關(guān)的配置信息,并且請求發(fā)送模塊803還可以被配置為根據(jù)該配置信息,向一個或多個對端數(shù)據(jù)中心發(fā)送用于獲取數(shù)據(jù)的數(shù)據(jù)請求。
根據(jù)本公開的實施例,數(shù)據(jù)接收模塊803還可以被配置為:響應(yīng)于接收到數(shù)據(jù)的每個片段,計算該片段的第一哈希值;將第一哈希值與種子文件中包括的、與該片段相對應(yīng)的第二哈希值進(jìn)行比較;響應(yīng)于第一哈希值等于第二哈希值,保存該片段;以及響應(yīng)于第一哈希值不等于第二哈希值,向一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)請求以重新獲取該片段。
根據(jù)本公開的實施例,數(shù)據(jù)可以包括文件,并且數(shù)據(jù)接收模塊803還可以被配置為從一個或多個對端數(shù)據(jù)中心接收該文件的一個或多個片段。數(shù)據(jù)組合模塊804還可以被配置為響應(yīng)于接收到該文件的所有片段,將所有片段順序地連接以得到該文件。
根據(jù)本公開的實施例,數(shù)據(jù)可以包括數(shù)據(jù)塊,并且數(shù)據(jù)接收模塊803還可以被配置為從一個或多個對端數(shù)據(jù)中心接收該數(shù)據(jù)塊。數(shù)據(jù)組合模塊804還可以被配置為響應(yīng)于接收到該數(shù)據(jù)塊,將該數(shù)據(jù)塊的內(nèi)容寫回到相應(yīng)的數(shù)據(jù)塊中。
根據(jù)本公開的實施例,數(shù)據(jù)可以包括對象,并且數(shù)據(jù)接收模塊803 還可以被配置為從一個或多個對端數(shù)據(jù)中心接收該對象。
根據(jù)本公開的實施例,裝置800還可以包括網(wǎng)絡(luò)連接模塊,被配置為響應(yīng)于與一個或多個對端數(shù)據(jù)中心中的一個對端數(shù)據(jù)中心之間的網(wǎng)絡(luò)連接斷開,與另一對端數(shù)據(jù)中心建立連接,以向另一對端數(shù)據(jù)中心發(fā)送用于獲取數(shù)據(jù)的數(shù)據(jù)請求。
根據(jù)本公開的實施例,裝置800還可以包括第二數(shù)據(jù)發(fā)送模塊,被配置為響應(yīng)于來自一個或多個對端數(shù)據(jù)中心的數(shù)據(jù)請求,向一個或多個對端數(shù)據(jù)中心發(fā)送數(shù)據(jù)的一個或多個片段。
出于清楚的目的,在圖8中沒有示出裝置800的某些可選模塊。然而,應(yīng)當(dāng)理解,上文參考圖1-6所描述的各個特征同樣適用于裝置800。而且,裝置800的各個模塊可以是硬件模塊,也可以是軟件模塊。例如,在某些實施例中,裝置800可以部分或者全部利用軟件和/或固件來實現(xiàn),例如被實現(xiàn)為包含在計算機(jī)可讀介質(zhì)上的計算機(jī)程序產(chǎn)品。備選地或附加地,裝置800可以部分或者全部基于硬件來實現(xiàn),例如被實現(xiàn)為集成電路(ic)、專用集成電路(asic)、片上系統(tǒng)(soc)、現(xiàn)場可編程門陣列(fpga)等。本公開的范圍在此方面不受限制。
圖9示出了可以用來實施本公開的實施例的設(shè)備900的示意性框圖。如圖所示,設(shè)備900包括中央處理單元(cpu)901,其可以根據(jù)存儲在只讀存儲器(rom)902中的計算機(jī)程序指令或者從存儲單元908加載到隨機(jī)訪問存儲器(ram)903中的計算機(jī)程序指令,來執(zhí)行各種適當(dāng)?shù)膭幼骱吞幚?。在ram903中,還可存儲設(shè)備900操作所需的各種程序和數(shù)據(jù)。cpu901、rom902以及ram903通過總線904彼此相連。輸入/輸出(i/o)接口905也連接至總線904。
設(shè)備900中的多個部件連接至i/o接口905,包括:輸入單元906,例如鍵盤、鼠標(biāo)等;輸出單元907,例如各種類型的顯示器、揚(yáng)聲器等;存儲單元908,例如磁盤、光盤等;以及通信單元909,例如網(wǎng)卡、調(diào)制解調(diào)器、無線通信收發(fā)機(jī)等。通信單元909允許設(shè)備900通過諸如因特網(wǎng)的計算機(jī)網(wǎng)絡(luò)和/或各種電信網(wǎng)絡(luò)與其他設(shè)備交換信息/數(shù)據(jù)。
上文所描述的各個過程和處理,例如方法200、方法300和方法400中的至少一個方法,可由處理單元901執(zhí)行。例如,在一些實施例中,方法200、方法300和方法400中的至少一個方法可被實現(xiàn)為計算機(jī)軟件程序,其被有形地包含于機(jī)器可讀介質(zhì),例如存儲單元908。在一些實施例中,計算機(jī)程序的部分或者全部可以經(jīng)由rom902和/或通信單元909而被載入和/或安裝到設(shè)備900上。當(dāng)計算機(jī)程序被加載到ram903并由cpu901執(zhí)行時,可以執(zhí)行上文描述的方法200、方法300和方法400中的至少一個方法的一個或多個步驟。
綜上所述,本公開的實施例提供了一種用于在分布式數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)移動的方法和裝置。與現(xiàn)有技術(shù)相比,本公開的實施例能夠在不可靠和低帶寬網(wǎng)絡(luò)上實現(xiàn)分布式數(shù)據(jù)中心間的可靠和快速的數(shù)據(jù)移動,能夠支持分布式數(shù)據(jù)中心間的自適應(yīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)而無需復(fù)雜的預(yù)先配置或繁瑣的運(yùn)行時協(xié)調(diào),能夠支持不同的數(shù)據(jù)存儲類型,并且便于進(jìn)行分布式數(shù)據(jù)中心間的協(xié)作式云計算和數(shù)據(jù)聚合。
一般而言,本公開的各種示例實施例可以在硬件或?qū)S秒娐?、軟件、邏輯,或其任何組合中實施。某些方面可以在硬件中實施,而其他方面可以在可以由控制器、微處理器或其他計算設(shè)備執(zhí)行的固件或軟件中實施。當(dāng)本公開的實施例的各方面被圖示或描述為框圖、流程圖或使用某些其他圖形表示時,將理解此處描述的方框、裝置、系統(tǒng)、技術(shù)或方法可以作為非限制性的示例在硬件、軟件、固件、專用電路或邏輯、通用硬件或控制器或其他計算設(shè)備,或其某些組合中實施。
而且,流程圖中的各框可以被看作是方法步驟,和/或計算機(jī)程序代碼的操作生成的操作,和/或理解為執(zhí)行相關(guān)功能的多個耦合的邏輯電路元件。例如,本公開的實施例包括計算機(jī)程序產(chǎn)品,該計算機(jī)程序產(chǎn)品包括有形地實現(xiàn)在機(jī)器可讀介質(zhì)上的計算機(jī)程序,該計算機(jī)程序包含被配置為實現(xiàn)上文描述方法的程序代碼。
在公開的上下文內(nèi),機(jī)器可讀介質(zhì)可以是包含或存儲用于或有關(guān)于指令執(zhí)行系統(tǒng)、裝置或設(shè)備的程序的任何有形介質(zhì)。機(jī)器可讀介質(zhì)可以是機(jī)器可讀信號介質(zhì)或機(jī)器可讀存儲介質(zhì)。機(jī)器可讀介質(zhì)可以包 括但不限于電子的、磁的、光學(xué)的、電磁的、紅外的或半導(dǎo)體系統(tǒng)、裝置或設(shè)備,或其任意合適的組合。機(jī)器可讀存儲介質(zhì)的更詳細(xì)示例包括帶有一根或多根導(dǎo)線的電氣連接、便攜式計算機(jī)磁盤、硬盤、隨機(jī)存取存取器(ram)、只讀存儲器(rom)、可擦除可編程只讀存儲器(eprom或閃存)、光存儲設(shè)備、磁存儲設(shè)備,或其任意合適的組合。
用于實現(xiàn)本公開的方法的計算機(jī)程序代碼可以用一種或多種編程語言編寫。這些計算機(jī)程序代碼可以提供給通用計算機(jī)、專用計算機(jī)或其他可編程的數(shù)據(jù)處理裝置的處理器,使得程序代碼在被計算機(jī)或其他可編程的數(shù)據(jù)處理裝置執(zhí)行的時候,引起在流程圖和/或框圖中規(guī)定的功能/操作被實施。程序代碼可以完全在計算機(jī)上、部分在計算機(jī)上、作為獨(dú)立的軟件包、部分在計算機(jī)上且部分在遠(yuǎn)程計算機(jī)上或完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。
另外,盡管操作以特定順序被描繪,但這并不應(yīng)該理解為要求此類操作以示出的特定順序或以相繼順序完成,或者執(zhí)行所有圖示的操作以獲取期望結(jié)果。在某些情況下,多任務(wù)或并行處理會是有益的。同樣地,盡管上述討論包含了某些特定的實施細(xì)節(jié),但這并不應(yīng)解釋為限制任何發(fā)明或權(quán)利要求的范圍,而應(yīng)解釋為對可以針對特定發(fā)明的特定實施例的描述。本說明書中在分開的實施例的上下文中描述的某些特征也可以整合實施在單個實施例中。相反地,在單個實施例的上下文中描述的各種特征也可以分離地在多個實施例或在任意合適的子組合中實施。
針對前述本公開的示例實施例的各種修改、改變將在連同附圖查看前述描述時對相關(guān)技術(shù)領(lǐng)域的技術(shù)人員變得明顯。任何及所有修改將仍落入非限制的和本公開的示例實施例范圍。此外,前述說明書和附圖存在啟發(fā)的益處,涉及本公開的這些實施例的技術(shù)領(lǐng)域的技術(shù)人員將會想到此處闡明的本公開的其他實施例。
將會理解,本公開的實施例不限于公開的特定實施例,并且修改和其他實施例都應(yīng)包含于所附的權(quán)利要求范圍內(nèi)。盡管此處使用了特 定的術(shù)語,但是它們僅在通用和描述的意義上使用,而并不用于限制目的。