寫文件、讀文件、刪除文件、查詢文件的方法及客戶端的制作方法
【技術領域】
[0001 ] 本發明涉及分布式文件系統領域,尤其涉及寫文件、讀文件、刪除文件、查詢文件的方法及客戶端。
【背景技術】
[0002]隨著分布式文件系統的廣泛應用,文件量級也從千萬級別,快速上升至億、十億、百億級別。在文件量如此巨大,特別是小文件數量日益增多的情況下,應用程序需要高頻地寫入、讀取或者修改其元數據,那么,就是的文件訪問客戶端頻繁地與元數據進行交互,令元數據服務器不堪重負。
[0003]但是,在現有技術中并不存在一種合理的減輕元數據服務器壓力的技術方案。
【發明內容】
[0004]有鑒于此,本發明實施例期望提供寫文件、讀文件、刪除文件、查詢文件的方法及客戶端,以減少文件訪問客戶端與元數據服務器的交互開銷,最大程度的減輕元數據服務器的壓力。
[0005]為達到上述目的,本發明的技術方案是這樣實現的:
[0006]第一方面,本發明實施例提供一種寫文件的方法,應用于文件訪問客戶端,所述方法包括:接收應用程序發送的寫請求,其中,所述寫請求用于請求將待寫入數據寫入目標文件;從本地數據庫中獲得所述目標文件的元數據,其中,所述元數據至少包括所述目標文件的分片位置信息;根據所述分片位置信息,將所述待寫入數據寫入對應的數據服務器。
[0007]進一步地,在所述根據所述分片位置信息,將所述待寫入數據寫入對應的數據服務器之前,所述方法還包括:向遠端元數據服務器發送寫鎖請求,其中,所述寫鎖請求用于請求所述遠端元數據服務器寫鎖所述元數據;接收所述遠端元數據服務器返回的寫鎖應答,其中,所述寫鎖應答中攜帶有時間戳;將所述時間戳保存至所述本地數據庫。
[0008]進一步地,在所述根據所述分片位置信息,將所述待寫入數據寫入對應的數據服務器之后,所述方法還包括:更新所述本地數據庫中所述元數據;將更新后的元數據同步至遠端元數據服務器。
[0009]進一步地,所述將更新后的元數據同步至遠端元數據服務器,包括:在寫入所述待寫入數據的過程中,每間隔預設時長,從所述本地數據庫中獲取所述更新后的元數據,并同步至所述遠端元數據服務器;或,接收來自所述應用程序的關閉請求,從所述本地數據庫中獲取所述更新后的元數據,并同步至所述遠端元數據服務器。
[0010]進一步地,在所述接收應用程序發送的寫請求之前,所述方法還包括:接收所述應用程序發送的文件創建請求,其中,所述文件創建請求用于請求為所述應用程序創建所述目標文件;向目錄樹服務器發送索引節點創建請求,其中,所述索引節點創建請求用于請求所述目錄樹服務器為所述目標文件創建索引節點;接收并在所述本地數據庫中添加來自所述目錄樹服務器的所述索引節點的索引信息以及所述元數據,完成所述目標文件的創建。
[0011]第二方面,本發明實施例提供一種讀文件的方法,應用于文件訪問客戶端,所述方法包括:接收應用程序發送的讀取請求,其中,所述讀取請求用于請求讀取目標文件中的待讀取數據;從本地數據庫中獲得所述目標文件的元數據,其中,所述元數據至少包括所述目標文件的分片位置信息;根據所述分片位置信息,從對應的數據服務器中讀取所述待讀取數據;將所述待讀取數據返回所述應用程序。
[0012]進一步地,在所述接收應用程序發送的讀取請求之前,所述方法還包括:接收所述應用程序發送的讀鎖請求,其中,所述讀鎖請求用于請求讀鎖所述目標文件;當所述元數據存儲在所述本地數據庫時,返回讀鎖成功應答給所述應用程序;當所述元數據沒有存儲在所述本地數據庫時,從遠端元數據服務器獲取所述元數據后,保存在所述本地數據庫中,并返回所述讀鎖成功應答給所述應用程序。
[0013]進一步地,在所述接收所述應用程序發送的讀鎖請求之后,所述方法還包括:向所述遠端元數據服務器發送所述目標文件的時間戳,其中,所述時間戳用于所述遠端元數據服務器確定所述元數據是否存儲于所述本地數據庫。
[0014]進一步地,在所述將所述待讀取數據返回所述應用程序之后,所述方法還包括:接收所述應用程序發送的關閉請求后,通知遠端元數據服務器釋放所述目標文件的讀鎖,其中,所述關閉請求用于請求關閉所述目標文件。
[0015]第三方面,本發明實施例提供一種刪除文件的方法,應用于文件訪問客戶端,所述方法包括:接收所述應用程序發送的刪除文件請求;刪除本地數據庫中的目標文件的元數據。
[0016]進一步地,在所述接收所述應用程序發送的刪除文件請求之后,所述方法還包括:向遠端元數據服務器發送第一刪除請求,其中,所述第一刪除請求用于指示所述遠端元數據服務器刪除所述元數據;接收所述遠端元數據服務器發送的刪除應答。
[0017]進一步地,在所述向遠端元數據服務器發送第一刪除請求之前,所述方法還包括:向目錄樹服務器發送第二刪除請求,其中,所述第二刪除請求用于指示所述目錄樹服務器刪除所述目標文件的索引信息。
[0018]進一步地,在所述接收所述遠端元數據服務器發送的刪除應答之后,所述方法還包括:向其它文件訪問客戶端通知所述目標文件已刪除。
[0019]第四方面,本發明實施例提供一種查詢文件的方法,應用于文件訪問客戶端,所述方法包括:接收應用程序發送的查詢請求,其中,所述查詢請求用于查詢目標文件的元數據;在本地數據庫中查詢到所述元數據后,返回所述元數據給所述應用程序。
[0020]進一步地,所述接收應用程序發送的查詢請求之后,所述方法還包括:在所述本地數據庫中未查詢到所述元數據后,從遠端元數據服務器獲取所述元數據;將所述元數據存儲于所述本地數據庫,并返回所述元數據給所述應用程序。
[0021 ] 進一步地,所述方法還包括:當所述本地數據庫的數據存儲量超過淘汰門限值時,根據所述本地數據庫當前同步的時間戳,將與遠端元數據服務器中的時間戳間隔大于預設值的元數據刪除。
[0022]第五方面,本發明實施例提供一種文件訪問客戶端,所述文件訪問客戶端包括:文件訪問模塊、本地元數據服務模塊以及本地數據庫;其中,所述文件訪問模塊,用于接收應用程序發送的寫請求,其中,所述寫請求用于請求將待寫入數據寫入目標文件;還用于根據所述目標文件的分片位置信息,將所述待寫入數據寫入對應的數據服務器;所述本地元數據服務模塊,用于從本地數據庫中獲得所述目標文件的元數據,其中,所述元數據至少包括所述分片位置信息;所述本地數據庫,用于存儲所述元數據。
[0023]進一步地,所述本地元數據服務模塊,還用于在所述文件訪問模塊根據所述分片位置信息,將所述待寫入數據寫入所述數據服務器之前,向遠端元數據服務器發起寫鎖請求,其中,所述寫鎖請求用于請求所述遠端元數據服務器寫鎖所述元數據;接收所述遠端元數據服務器返回的寫鎖應答,其中,所述寫鎖應答中攜帶有時間戳;將所述時間戳保存至所述本地數據庫。
[0024]進一步地,所述本地元數據服務模塊,還用于在所述文件訪問模塊根據所述分片位置信息,將所述待寫入數據寫入所述數據服務器之后,更新所述本地數據庫中所述元數據;將更新后的元數據同步至遠端元數據服務器。
[0025]進一步地,所述本地元數據服務模塊,具體用于在寫入所述待寫入數據的過程中,每間隔預設時長,從所述本地數據庫中獲取所述更新后的元數據,并同步至所述遠端元數據服務器;或,接收來自所述應用程序的關閉請求,從所述本地數據庫中獲取所述更新后的元數據,并同步至所述遠端元數據服務器。
[0026]進一步地,所述文件訪問模塊,還用于在接收所述寫請求之前,接收所述應用程序發送的文件創建請求,其中,所述文件創建請求用于請求為所述應用程序創建所述目標文件;所述本地元數據服務模塊,還用于向目錄樹服務器發送索引節點創建請求,其中,所述索引節點創建請求用于請求所述目錄樹服務器為所述目標文件創建索引節點;接收并在所述本地數據庫中添加來自所述目錄樹服務器的所述索引節點的索引信息以及所述元數據,完成所述目標文件的創建。
[0027]進一步地,所述文件訪問模塊,還用于接收應用程序發送的讀取請求,其中,所述讀取請求用于請求讀取目標文件中的待讀取數據;還用于將所述待讀取數據返回所述應用程序;所述本地元數據服務模塊,還用于從所述本地數據庫中獲得所述目標文件的元數據,其中,所述元數據至少包括所述目標文件的分片位置信息;根據所述分片位置信息,從對應的數據服務器中讀取所述待讀取數據。
[0028]進一步地,所述文件訪問模塊,用于在接收應用程序發送的