一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法及存儲(chǔ)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及存儲(chǔ)系統(tǒng)領(lǐng)域,尤其涉及一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法及存儲(chǔ)系 統(tǒng)。
【背景技術(shù)】
[0002] 在當(dāng)前的分布式存儲(chǔ)系統(tǒng)中,用戶會(huì)從不同的分布式客戶端訪問系統(tǒng)中的數(shù)據(jù), 在這種場景下,分布式鎖管理(Distributed Lock Manager,簡稱:DLM)機(jī)制應(yīng)運(yùn)而生,分 布式鎖管理機(jī)制是保證分布式存儲(chǔ)系統(tǒng)正常運(yùn)行和數(shù)據(jù)一致性的關(guān)鍵,在實(shí)現(xiàn)DLM機(jī)制 時(shí),系統(tǒng)通常包括:分布式鎖客戶端(Distributed Lock Manager Client,簡稱:DLMC)與 分布式鎖服務(wù)器(Distributed Lock Manager Server,簡稱:DLMS),其中DLMC為系統(tǒng)的業(yè) 務(wù)層提供鎖管理接口,業(yè)務(wù)層在針對業(yè)務(wù)進(jìn)行操作的前后,都需要通過鎖管理接口向DLMC 進(jìn)行鎖操作,DLMC再與DLMS通信完成鎖的授權(quán)操作,以保證DLMC并發(fā)訪問時(shí)數(shù)據(jù)的一致 性。圖1為現(xiàn)有技術(shù)提供的分布式存儲(chǔ)系統(tǒng)文件創(chuàng)建寫機(jī)制的流程示意圖,參照圖1,該 分布式存儲(chǔ)系統(tǒng)包括:客戶端代理(Client Agent,簡稱:CA),DLMC,DLMS,元數(shù)據(jù)服務(wù)器 (Meta Server)和數(shù)據(jù)服務(wù)器(Data Server);該流程包括:步驟1、CA向元數(shù)據(jù)服務(wù)器發(fā) 送創(chuàng)建文件的請求消息;步驟2,DLMC與元數(shù)據(jù)服務(wù)器進(jìn)行交互獲得元數(shù)據(jù)并行讀鎖(Meta Concurrent Read Lock);步驟3, CA與元數(shù)據(jù)服務(wù)器進(jìn)行操作元數(shù)據(jù)的交互,CA根據(jù)元數(shù) 據(jù)并行讀鎖提供的權(quán)限,對創(chuàng)建文件相關(guān)的元數(shù)據(jù)進(jìn)行讀寫操作;步驟4、DLMC與DLMS進(jìn)行 交互獲得條帶獨(dú)占鎖(Stripe Exclusive Lock);步驟5、DLMC與數(shù)據(jù)服務(wù)器進(jìn)行數(shù)據(jù)寫入 的操作交互,具體的,CA根據(jù)條帶獨(dú)占鎖提供的權(quán)限,進(jìn)行數(shù)據(jù)寫的操作。
[0003] 但是,采用現(xiàn)有技術(shù)的寫入數(shù)據(jù)的機(jī)制,DLMC與DLMS、DLMC與元數(shù)據(jù)服務(wù)器之間 需要進(jìn)行多次交互才能夠完成鎖的授權(quán)操作,導(dǎo)致存儲(chǔ)系統(tǒng)在完成創(chuàng)建寫的過程中,不同 節(jié)點(diǎn)之間的交互次數(shù)過多,從而降低了寫數(shù)據(jù)的效率。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法及存儲(chǔ)系統(tǒng),用于提高寫入數(shù)據(jù)的 效率。
[0005] 本發(fā)明的第一個(gè)方面是提供一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法,所述方法應(yīng)用于 存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括客戶端、元數(shù)據(jù)服務(wù)器、鎖服務(wù)器和至少一個(gè)數(shù)據(jù)服務(wù)器, 所述方法由所述客戶端執(zhí)行,包括:
[0006] 向鎖服務(wù)器發(fā)送創(chuàng)建鎖的請求,所述創(chuàng)建鎖的請求用于創(chuàng)建元數(shù)據(jù)讀寫鎖和數(shù)據(jù) 讀寫鎖,所述元數(shù)據(jù)讀寫鎖用于所述客戶端獲得讀取或修改元數(shù)據(jù)的唯一權(quán)限,所述數(shù)據(jù) 讀寫鎖用于所述客戶端獲得讀取或修改數(shù)據(jù)的唯一權(quán)限;
[0007] 將所述元數(shù)據(jù)讀寫鎖和所述數(shù)據(jù)讀寫鎖保存在所述客戶端的緩存中;
[0008] 確定所述緩存中保存有所述數(shù)據(jù)讀寫鎖;
[0009] 將所述數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù)器;
[0010] 確定所述緩存中保存有所述元數(shù)據(jù)讀寫鎖;
[0011] 將第一元數(shù)據(jù)寫入所述元數(shù)據(jù)服務(wù)器。
[0012] 結(jié)合第一個(gè)方面,在第一種可行的實(shí)現(xiàn)方式中,所述數(shù)據(jù)的大小小于或等于預(yù)設(shè) 的閾值。
[0013] 結(jié)合第一個(gè)方面或第一個(gè)方面的第一種可行的實(shí)現(xiàn)方式,在第二種可行的實(shí)現(xiàn)方 式中,在所述將數(shù)據(jù)寫入所述數(shù)據(jù)服務(wù)器之前,還包括:
[0014] 向所述元數(shù)據(jù)服務(wù)器發(fā)送元數(shù)據(jù)請求,所述元數(shù)據(jù)請求用于請求所述第二元數(shù) 據(jù),所述第二元數(shù)據(jù)包含所述數(shù)據(jù)的分布信息,所述數(shù)據(jù)的分布信息表示所述數(shù)據(jù)在所述 至少一個(gè)數(shù)據(jù)服務(wù)器的存儲(chǔ)位置;
[0015] 所述將數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù)器,包括:
[0016] 根據(jù)所述數(shù)據(jù)的分布信息將所述數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù)器的存儲(chǔ)位置。
[0017] 結(jié)合第一個(gè)方面的第二種可行的實(shí)現(xiàn)方式,在第三種可行的實(shí)現(xiàn)方式中,在所述 根據(jù)所述數(shù)據(jù)的分布信息將所述數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù)器的存儲(chǔ)位置之后,還包 括:
[0018] 將所述第二元數(shù)據(jù)修改為所述第一元數(shù)據(jù),其中,所述第一元數(shù)據(jù)包括寫入所述 數(shù)據(jù)的時(shí)刻信息,所述寫入所述數(shù)據(jù)的時(shí)刻信息表示所述客戶端將所述數(shù)據(jù)寫入所述至少 一個(gè)數(shù)據(jù)服務(wù)器的時(shí)刻。
[0019] 本發(fā)明的第二個(gè)方面是提供一種存儲(chǔ)系統(tǒng),所述存儲(chǔ)系統(tǒng),包括:客戶端、元數(shù)據(jù) 服務(wù)器、鎖服務(wù)器和至少一個(gè)數(shù)據(jù)服務(wù)器;
[0020] 所述元數(shù)據(jù)服務(wù)器,用于存儲(chǔ)所述客戶端寫入的第一元數(shù)據(jù);
[0021] 所述數(shù)據(jù)服務(wù)器,用于存儲(chǔ)所述客戶端寫入的數(shù)據(jù);
[0022] 所述鎖服務(wù)器,用于接收所述客戶端發(fā)送的創(chuàng)建鎖的請求,所述創(chuàng)建鎖的請求用 于創(chuàng)建元數(shù)據(jù)讀寫鎖和數(shù)據(jù)讀寫鎖,所述元數(shù)據(jù)讀寫鎖用于所述客戶端獲得讀取或修改元 數(shù)據(jù)的唯一權(quán)限,所述數(shù)據(jù)讀寫鎖用于所述客戶端獲得讀取或修改數(shù)據(jù)的唯一權(quán)限;向所 述客戶端發(fā)送所述元數(shù)據(jù)讀寫鎖和所述數(shù)據(jù)讀寫鎖;
[0023] 所述客戶端,用于:
[0024] 向所述鎖服務(wù)器發(fā)送所述創(chuàng)建鎖的請求;
[0025] 將所述元數(shù)據(jù)讀寫鎖和所述數(shù)據(jù)讀寫鎖保存在所述客戶端的緩存中;
[0026] 確定所述緩存中保存有所述數(shù)據(jù)讀寫鎖;
[0027] 將所述數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù)器;
[0028] 確定所述緩存中保存有所述元數(shù)據(jù)讀寫鎖;
[0029] 將所述第一元數(shù)據(jù)寫入所述元數(shù)據(jù)服務(wù)器。
[0030] 結(jié)合第二個(gè)方面,在第一種可行的實(shí)現(xiàn)方式中,所述數(shù)據(jù)的大小小于或等于預(yù)設(shè) 的閾值。
[0031] 結(jié)合第二個(gè)方面或第二個(gè)方面的第一種可行的實(shí)現(xiàn)方式,在第二種可行的實(shí)現(xiàn)方 式中,所述客戶端,還用于在所述將數(shù)據(jù)寫入所述數(shù)據(jù)服務(wù)器之前,向所述元數(shù)據(jù)服務(wù)器發(fā) 送元數(shù)據(jù)請求,所述元數(shù)據(jù)請求用于請求所述第二元數(shù)據(jù),所述第二元數(shù)據(jù)包含所述數(shù)據(jù) 的分布信息;所述數(shù)據(jù)的分布信息表示所述數(shù)據(jù)在所述至少一個(gè)數(shù)據(jù)服務(wù)器的存儲(chǔ)位置; 根據(jù)所述數(shù)據(jù)的分布信息將所述數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù)器的存儲(chǔ)位置;
[0032] 所述元數(shù)據(jù)服務(wù)器,還用于接收所述元數(shù)據(jù)請求;向所述客戶端發(fā)送所述第二元 數(shù)據(jù)。
[0033] 結(jié)合第二個(gè)方面的第二種可行的實(shí)現(xiàn)方式,在第三種可行的實(shí)現(xiàn)方式中,所述至 少一個(gè)客戶端,還用于在根據(jù)所述數(shù)據(jù)的分布信息將所述數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù) 器的存儲(chǔ)位置之后,將所述第二元數(shù)據(jù)修改為所述第一元數(shù)據(jù),其中,所述第一元數(shù)據(jù)包括 寫入所述數(shù)據(jù)的時(shí)刻信息,所述寫入所述數(shù)據(jù)的時(shí)刻信息表示所述客戶端將所述數(shù)據(jù)寫入 所述至少一個(gè)數(shù)據(jù)服務(wù)器的時(shí)刻。
[0034] 本發(fā)明提供的一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法及存儲(chǔ)系統(tǒng),當(dāng)客戶端需要對數(shù) 據(jù)進(jìn)行寫操作時(shí),首先通過一次創(chuàng)建鎖的請求從鎖服務(wù)器獲得元數(shù)據(jù)讀寫鎖和數(shù)據(jù)讀寫 鎖,所述元數(shù)據(jù)讀寫鎖用于所述客戶端獲得讀取或修改元數(shù)據(jù)的唯一權(quán)限,所述數(shù)據(jù)讀寫 鎖用于所述客戶端獲得讀取或修改數(shù)據(jù)的唯一權(quán)限;客戶端緩存元數(shù)據(jù)讀寫鎖和數(shù)據(jù)讀寫 鎖。在確定緩存有數(shù)據(jù)讀寫鎖時(shí),客戶端將所述數(shù)據(jù)寫入所述至少一個(gè)數(shù)據(jù)服務(wù)器,無需采 用現(xiàn)有技術(shù)的交互流程再向鎖服務(wù)器申請數(shù)據(jù)讀寫鎖,進(jìn)一步的,當(dāng)客戶端將所述數(shù)據(jù)寫 入所述數(shù)據(jù)服務(wù)器后,該數(shù)據(jù)對應(yīng)的元數(shù)據(jù)可能發(fā)生變化,此時(shí),客戶端會(huì)將改變后的元數(shù) 據(jù)寫入所述元數(shù)據(jù)服務(wù)器,即所述第一元數(shù)據(jù),由于客戶端已將元數(shù)據(jù)讀寫鎖緩存,無需采 用現(xiàn)有技術(shù)的交互流程再向鎖服務(wù)器申請?jiān)獢?shù)據(jù)讀寫鎖,從而降低了客戶端在寫入數(shù)據(jù)過 程中與鎖服務(wù)器之間的交互次數(shù),提高了寫入數(shù)據(jù)的效率。
【附圖說明】
[0035] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖做一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0036] 圖1為現(xiàn)有技術(shù)提供的分布式存儲(chǔ)系統(tǒng)文件創(chuàng)建寫機(jī)制的流程示意圖;
[0037] 圖2為一種分布式存儲(chǔ)系統(tǒng)部署示意圖;
[0038] 圖3為本發(fā)明實(shí)施例提供的存儲(chǔ)系統(tǒng)不意圖;
[0039] 圖4為本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法的流程示意圖; [0040] 圖5為本發(fā)明實(shí)施例提供的另一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法的流程示意圖; [0041] 圖6為本發(fā)明實(shí)施例提供的另一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法的流程示意圖;
[0042] 圖7為本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法的信令交互示意 圖;
[0043] 圖8為本發(fā)明實(shí)施例提供的另一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法的信令交互示 意圖;
[0044] 圖9為本發(fā)明實(shí)施例提供的另一種將數(shù)據(jù)寫入數(shù)據(jù)服務(wù)器的方法的信