一種數(shù)據(jù)傳輸方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)通訊技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)傳輸方法和系統(tǒng)。
【背景技術(shù)】
[0002]HDFS (Hadoop Distributed File System, Hadoop 分布式文件系統(tǒng))具有高容錯性、高傳輸率和可以部署在低廉的硬件上等特點,適用于具有超大數(shù)據(jù)集的應(yīng)用程序。HDFS包括名字節(jié)點(NameNode )和多個數(shù)據(jù)節(jié)點(DataNode ),其中,包含名字節(jié)點的服務(wù)器為名字服務(wù)器,包含數(shù)據(jù)節(jié)點的服務(wù)器為數(shù)據(jù)服務(wù)器。目前客戶端和名字服務(wù)器與數(shù)據(jù)服務(wù)器的交互主要包括客戶端寫入文件到數(shù)據(jù)服務(wù)器和客戶端從數(shù)據(jù)服務(wù)器讀取文件,下面將分別進行介紹。
[0003]其中,目前客戶端寫入文件到數(shù)據(jù)服務(wù)器的過程,包括:
[0004]步驟Al、客戶端向名字服務(wù)器發(fā)送包含文件的名稱和大小的第一寫入請求消息;
[0005]步驟A2、名字服務(wù)器根據(jù)所述文件的大小、以及數(shù)據(jù)服務(wù)器當(dāng)前的剩余存儲容量,確定將所述文件劃分為數(shù)據(jù)塊的劃分策略、以及各數(shù)據(jù)塊名稱與數(shù)據(jù)服務(wù)器的對應(yīng)關(guān)系,并將所述文件的名稱、以及確定的劃分策略和各數(shù)據(jù)塊名稱與數(shù)據(jù)服務(wù)器的對應(yīng)關(guān)系發(fā)送給客戶端;
[0006]步驟A3、客戶端根據(jù)所述劃分策略,將所述文件的名稱對應(yīng)的文件劃分成數(shù)據(jù)塊,并將包含所述數(shù)據(jù)塊的數(shù)據(jù)和所述數(shù)據(jù)塊的名稱的第二寫入請求消息發(fā)送給所述數(shù)據(jù)塊對應(yīng)的數(shù)據(jù)服務(wù)器;
[0007]步驟A4、數(shù)據(jù)服務(wù)器將客戶端發(fā)送的數(shù)據(jù)塊的數(shù)據(jù)進行存儲,并保存數(shù)據(jù)塊的名稱和所述數(shù)據(jù)塊的數(shù)據(jù)的存儲地址的對應(yīng)關(guān)系。
[0008]其中,目前客戶端從數(shù)據(jù)服務(wù)器讀取文件的過程,包括:
[0009]步驟B1、客戶端向名字服務(wù)器發(fā)送包含文件的名稱的第一讀取請求消息;
[0010]步驟B2、名字服務(wù)器將所述文件的名稱對應(yīng)的文件包含的各數(shù)據(jù)塊的名稱與存儲各數(shù)據(jù)塊數(shù)據(jù)的數(shù)據(jù)服務(wù)器的對應(yīng)關(guān)系發(fā)送給所述客戶端;
[0011]步驟B3、客戶端將包含所述數(shù)據(jù)塊的名稱的第二讀取請求消息發(fā)送給所述數(shù)據(jù)塊對應(yīng)的數(shù)據(jù)服務(wù)器;
[0012]步驟B4、數(shù)據(jù)服務(wù)器根據(jù)數(shù)據(jù)塊的名稱,確定數(shù)據(jù)塊的數(shù)據(jù)的存儲地址,并到所述存儲地址獲取所述數(shù)據(jù)塊的數(shù)據(jù),向客戶端發(fā)送所述數(shù)據(jù)塊的數(shù)據(jù)。
[0013]目前客戶端文件以塊數(shù)據(jù)的形式存儲在數(shù)據(jù)服務(wù)器中,而由于數(shù)據(jù)服務(wù)器中的塊數(shù)據(jù)實際是存儲在硬盤中,因此,其他客戶端可以通過非法手段,使得數(shù)據(jù)服務(wù)器的硬盤丟失,從而獲取所述數(shù)據(jù)服務(wù)器中存儲的塊數(shù)據(jù),并根據(jù)所述塊數(shù)據(jù),得到客戶端文件內(nèi)容。
[0014]綜上所述,目前數(shù)據(jù)服務(wù)器對客戶端文件的保密程度比較低。
【發(fā)明內(nèi)容】
[0015]本發(fā)明實施例提供的一種數(shù)據(jù)傳輸方法和系統(tǒng),用以解決現(xiàn)有技術(shù)中存在的數(shù)據(jù)服務(wù)器對客戶端文件的保密程度比較低的問題。
[0016]第一方面,本發(fā)明實施例提供的一種數(shù)據(jù)傳輸方法,包括:
[0017]所述名字服務(wù)器接收客戶端發(fā)送的包含用戶名、文件名和文件大小的寫入請求消息;
[0018]所述名字服務(wù)器根據(jù)所述寫入請求消息確定并返回加密密鑰、指示所述客戶端將所述文件名對應(yīng)的文件劃分為數(shù)據(jù)塊的劃分策略、以及各數(shù)據(jù)塊名稱與數(shù)據(jù)服務(wù)器的對應(yīng)關(guān)系;以使所述客戶端在按照所述劃分策略劃分出數(shù)據(jù)塊后,將所述加密密鑰以及所述數(shù)據(jù)塊的數(shù)據(jù)和名稱發(fā)送給所述數(shù)據(jù)塊對應(yīng)的數(shù)據(jù)服務(wù)器進行加密保存;以及
[0019]所述名字服務(wù)器接收客戶端發(fā)送的包含用戶名和文件名的讀取請求消息;
[0020]所述名字服務(wù)器根據(jù)所述讀取請求消息確定并返回對應(yīng)的解密密鑰、所述文件名對應(yīng)的文件包含的各數(shù)據(jù)塊的名稱與存儲各數(shù)據(jù)塊數(shù)據(jù)的數(shù)據(jù)服務(wù)器的對應(yīng)關(guān)系,以使所述客戶端將所述解密密鑰和所述數(shù)據(jù)塊的名稱發(fā)送給對應(yīng)的數(shù)據(jù)服務(wù)器獲取解密后對應(yīng)的數(shù)據(jù)塊的數(shù)據(jù)。
[0021]較佳地,所述名字服務(wù)器根據(jù)所述寫入請求消息確定所述劃分策略、以及各數(shù)據(jù)塊名稱與數(shù)據(jù)服務(wù)器的對應(yīng)關(guān)系,包括:
[0022]所述名字服務(wù)器根據(jù)所述寫入請求消息中包含的文件大小、以及數(shù)據(jù)服務(wù)器當(dāng)前的剩余存儲容量,確定將所述文件劃分為數(shù)據(jù)塊的劃分策略、以及各數(shù)據(jù)塊名稱與數(shù)據(jù)服務(wù)器的對應(yīng)關(guān)系。
[0023]較佳地,所述名字服務(wù)器根據(jù)所述寫入請求消息確定所述加密密鑰,包括:
[0024]所述名字服務(wù)器確定是否本地存儲有所述寫入請求消息中包含的用戶名;
[0025]在確定本地存儲有所述用戶名時,向所述客戶端發(fā)送密鑰版本請求消息,接收所述客戶端發(fā)送的針對所述密鑰版本請求消息的密鑰版本,確定是否本地存儲有與所述用戶名對應(yīng)的所述客戶端發(fā)送的密鑰版本;以及,
[0026]在確定本地存儲有與所述用戶名對應(yīng)的所述客戶端發(fā)送的密鑰版本時,根據(jù)本地存儲的用戶名、密鑰版本和密鑰的對應(yīng)關(guān)系,確定所述用戶名和密鑰版本對應(yīng)的密鑰,并將所述用戶名和密鑰版本對應(yīng)的密鑰,作為所述加密密鑰;
[0027]所述名字服務(wù)器根據(jù)所述讀取請求消息確定所述解密密鑰,包括:
[0028]所述名字服務(wù)器根據(jù)本地存儲的文件名和密鑰版本的對應(yīng)關(guān)系,確定所述讀取請求消息中包含的文件名對應(yīng)的密鑰版本;
[0029]根據(jù)本地存儲的用戶名、密鑰版本和密鑰的對應(yīng)關(guān)系,確定所述讀取請求消息中包含的用戶名和所述密鑰版本對應(yīng)的密鑰;并且,
[0030]將所述用戶名和密鑰版本對應(yīng)的密鑰,作為所述解密密鑰。
[0031]較佳地,所述名字服務(wù)器在確定本地未存儲所述用戶名時,向所述客戶端發(fā)送未注冊提示消息,指示所述客戶端向名字服務(wù)器發(fā)送包含用戶名、密鑰版本和密鑰的注冊消肩、O
[0032]較佳地,所述名字服務(wù)器在確定本地未存儲與所述用戶名對應(yīng)的所述客戶端發(fā)送的密鑰版本時,向所述客戶端發(fā)送密鑰版本錯誤提示消息,指示所述客戶端向名字服務(wù)器發(fā)送新的密鑰版本。
[0033]較佳地,所述寫入請求消息還包括密鑰版本,所述名字服務(wù)器根據(jù)所述寫入請求消息確定加密密鑰,包括:
[0034]所述名字服務(wù)器在確定本地存儲有所述用戶名和密鑰版本時,根據(jù)本地存儲的用戶名、密鑰版本和密鑰的對應(yīng)關(guān)系,確定所述用戶名和密鑰版本對應(yīng)的密鑰,并將所述用戶名和密鑰版本對應(yīng)的密鑰,作為所述加密密鑰;
[0035]所述名字服務(wù)器根據(jù)所述讀取請求消息確定所述解密密鑰,包括:
[0036]所述名字服務(wù)器根據(jù)本地存儲的文件名和密鑰版本的對應(yīng)關(guān)系,確定所述讀取請求消息中包含的文件名對應(yīng)的密鑰版本;
[0037]根據(jù)本地存儲的用戶名、密鑰版本和密鑰的對應(yīng)關(guān)系,確定所述讀取請求消息中包含的用戶名和所述密鑰版本對應(yīng)的密鑰;并且,
[0038]將所述用戶名和密鑰版本對應(yīng)的密鑰,作為所述解密密鑰。
[0039]較佳地,所述名字服務(wù)器確定所述加密密鑰之前,還包括:
[0040]所述名字服務(wù)器接收所述客戶端發(fā)送的包含用戶名、密鑰版本和密鑰的注冊消息,并本地存儲所述注冊消息中指示的所述用戶名、密鑰版本和密鑰的對應(yīng)關(guān)系;
[0041]所述方法還包括:
[0042]所述名字服務(wù)器接收所述客戶端發(fā)送的至少一條包含用戶名、密鑰版本和密鑰的新增密鑰版本請求消息,并本地存儲所述新增密鑰版本請求消息中指示的所述用戶名、密鑰版本和密鑰的對應(yīng)關(guān)系。
[0043]第二方面,本發(fā)明實施例提供的一種數(shù)據(jù)傳輸方法,包括:
[0044]接收客戶端發(fā)送的加密密鑰、以及數(shù)據(jù)塊的數(shù)據(jù)和名稱,按照所述加密密鑰對所述數(shù)據(jù)塊的數(shù)據(jù)進行加密處理,保存加密處理后的所述數(shù)據(jù)塊的數(shù)據(jù),并保存所述數(shù)據(jù)塊的名稱和所述數(shù)據(jù)塊的數(shù)據(jù)的存儲地址的對應(yīng)關(guān)系;以及
[0045]接收客戶端發(fā)送的數(shù)據(jù)塊的名稱和解密密鑰,確定所述數(shù)據(jù)塊的名稱對應(yīng)的存儲地址,確定所述存儲地址中的數(shù)據(jù),并按照所述解密密鑰對所述數(shù)據(jù)進行解密處理,向客戶端發(fā)送解密處理后的所述數(shù)據(jù);
[0046]其中,所述數(shù)據(jù)塊是所述客戶端在接收到名字服務(wù)器發(fā)送的關(guān)于客戶端文件的劃分策略后,對所述文件進行劃分得到的數(shù)據(jù)塊;所述加密密鑰和解密密鑰是所述客戶端在與所述名字服務(wù)器進行交互后確定的。
[0047]較佳地,對所述數(shù)據(jù)塊的數(shù)據(jù)進行加密處理,包括:
[0048]基于高級加密標(biāo)準(zhǔn)AES加密方式,對所述數(shù)據(jù)塊的數(shù)據(jù)進行加密處理;
[0049]對所述數(shù)據(jù)進行解密處理,包括:
[0050]基于AES解密方式,對所述數(shù)據(jù)進行解密處理。
[0051]第三方面,本發(fā)明實施例提供的一種數(shù)據(jù)傳輸系統(tǒng),包括:
[0052]名字服務(wù)器,用于接收客戶端發(fā)送的包含用戶名、文件名和文件大小的寫入請求消息;根據(jù)所述寫入請求消息確定并返回加密密鑰、指示所述客戶端將所述文件名對應(yīng)的