一種元數(shù)據(jù)訪問方法、相關(guān)設(shè)備及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種元數(shù)據(jù)訪問方法、相關(guān)設(shè)備及系統(tǒng)。
【背景技術(shù)】
[0002]分布式文件系統(tǒng)(Distributed File System,GFS)采用了文件的元數(shù)據(jù)和數(shù)據(jù)訪問分離的架構(gòu),通過獨(dú)立的元數(shù)據(jù)服務(wù)子系統(tǒng)提供元數(shù)據(jù)訪問功能,使分布式文件系統(tǒng)具備了一定的擴(kuò)展能力,能夠提供海量文件的存儲和訪問服務(wù)。請參見圖1,GFS中元數(shù)據(jù)訪問的部分包括三個子系統(tǒng):元數(shù)據(jù)客戶子系統(tǒng)10、元數(shù)據(jù)服務(wù)子系統(tǒng)20和集群服務(wù)子系統(tǒng)30,元數(shù)據(jù)客戶子系統(tǒng)10包括多個客戶端(Client),圖1中以客戶端101?103為例;元數(shù)據(jù)服務(wù)子系統(tǒng)20包括多個元數(shù)據(jù)服務(wù)器,圖1中以元數(shù)據(jù)服務(wù)器201?203為例;集群服務(wù)子系統(tǒng)30主要包括集群管理服務(wù)器301、分布式一致性服務(wù)器302和元數(shù)據(jù)路由服務(wù)器303。
[0003]圖1中的客戶端訪問元數(shù)據(jù)的原理如圖2所示,當(dāng)客戶端101需要訪問目標(biāo)元數(shù)據(jù)時(shí),先向分布式一致性服務(wù)器302發(fā)送對該目標(biāo)元數(shù)據(jù)的排它訪問權(quán)限,如果申請到了該排它訪問權(quán)限,那么該客戶端101就是所有的客戶端101?103中唯一可以直接請求元數(shù)據(jù)服務(wù)器201?203對該目標(biāo)元數(shù)據(jù)進(jìn)行操作的客戶端,這樣一來就保證了該目標(biāo)元數(shù)據(jù)的緩存一致性。之后客戶端101向元數(shù)據(jù)路由服務(wù)器303查詢目標(biāo)元數(shù)據(jù)的歸屬信息,即查詢該目標(biāo)元數(shù)據(jù)歸屬到哪個元數(shù)據(jù)服務(wù)器操作;元數(shù)據(jù)路由服務(wù)器303根據(jù)存儲的元數(shù)據(jù)與元數(shù)據(jù)服務(wù)器的映射關(guān)系查詢目標(biāo)元數(shù)據(jù)的歸屬信息,并將查詢到的歸屬信息發(fā)送給客戶端101;該客戶端101對該歸屬信息進(jìn)行分析,當(dāng)分析出目標(biāo)元數(shù)據(jù)歸屬到元數(shù)據(jù)服務(wù)器201時(shí),向該元數(shù)據(jù)服務(wù)器201發(fā)出請求以請求訪問目標(biāo)元數(shù)據(jù),元數(shù)據(jù)服務(wù)器201接收客戶端101的請求,并根據(jù)該請求對目標(biāo)元數(shù)據(jù)進(jìn)行操作,然后將操作結(jié)果反饋給客戶端101,相應(yīng)地,客戶端101接收元數(shù)據(jù)服務(wù)器201發(fā)送的操作結(jié)果,并將該操作結(jié)果緩存到本地,至此,客戶端101訪問目標(biāo)元數(shù)據(jù)結(jié)束。
[0004]上述分布式一致性服務(wù)器302授予客戶端101對目標(biāo)元數(shù)據(jù)的排它訪問權(quán)限可以通過分布式鎖、分布式協(xié)議等技術(shù)來實(shí)現(xiàn),當(dāng)通過分布式鎖來時(shí),分布式一致性服務(wù)器302和客戶端101之間需要進(jìn)行交互來執(zhí)行鎖申請、鎖釋放以及鎖召回的操作,該過程中節(jié)點(diǎn)間的通信開銷較大;尤其在海量小文件(Lot of Small Files,LoSF)的場景下,分布式文件系統(tǒng)(GFS)中的小文件的元數(shù)據(jù)非常多,客戶端101訪問其中每個小文件的元數(shù)據(jù)時(shí)都要與分布式一致性服務(wù)器進(jìn)行鎖申請、鎖釋放以及鎖召回的操作,這個過程產(chǎn)生的巨大的通信開銷降低了客戶端訪問元數(shù)據(jù)的效率。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例公開了一種元數(shù)據(jù)的訪問方法、相關(guān)設(shè)備及系統(tǒng),能夠減少客戶端訪問元數(shù)據(jù)的過程中維護(hù)元數(shù)據(jù)緩存一致性的開銷,提高元數(shù)據(jù)的訪問效率。
[0006]第一方面,本發(fā)明實(shí)施例提供了一種元數(shù)據(jù)的訪問方法,該方法包括:
[0007]第一客戶端在請求訪問目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù)時(shí),向目錄鎖服務(wù)器發(fā)送第一申請消息以申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,其中,所述目標(biāo)目錄為存儲有多個元數(shù)據(jù)的目錄,所述第一目標(biāo)元數(shù)據(jù)為所述第一客戶端當(dāng)前需要訪問的元數(shù)據(jù);所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限用于供所述第一客戶端訪問所述目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù),以及訪問所述目標(biāo)目錄中除所述第一目標(biāo)元數(shù)據(jù)之外的元數(shù)據(jù);
[0008]當(dāng)所述第一客戶端申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),所述第一客戶端訪問所述第一目標(biāo)元數(shù)據(jù)。
[0009]通過執(zhí)行上述步驟,第一客戶端訪問目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù)時(shí),一次性向目錄鎖服務(wù)器申請目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,這樣一來,第一客戶端就可以順利訪問第一目標(biāo)元數(shù)據(jù),并且后續(xù)訪問目標(biāo)目錄中其他元數(shù)據(jù)時(shí)不需要再重新申請?jiān)L問權(quán)限,節(jié)省了維護(hù)緩存一致性的開銷。
[0010]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,當(dāng)所述第一客戶端未申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),所述第一客戶端接收所述目錄鎖服務(wù)器發(fā)送的第二客戶端所在的節(jié)點(diǎn)信息,并根據(jù)所述節(jié)點(diǎn)信息向所述第二客戶端發(fā)送請求消息以通過所述第二客戶端訪問所述第一目標(biāo)元數(shù)據(jù),所述第二客戶端為向所述目錄鎖服務(wù)器申請到了對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限的客戶端。
[0011 ]通過執(zhí)行上述步驟,第一客戶端在申請不到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),通過已經(jīng)獲取了目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限的第二客戶端訪問第一目標(biāo)元數(shù)據(jù),使得第一客戶端在申請不到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí)依然可以順利訪問到目標(biāo)元數(shù)據(jù)。
[0012]結(jié)合第一方面,或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述第一客戶端在請求訪問目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù)時(shí),向目錄鎖服務(wù)器發(fā)送第一申請消息以申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限包括:
[0013]第一客戶端在請求訪問目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù)時(shí),獲取描述所述目標(biāo)目錄的元數(shù)據(jù),所述描述所述目標(biāo)目錄的元數(shù)據(jù)設(shè)有用于標(biāo)識所述目標(biāo)目錄是否為存儲有多個元數(shù)據(jù)的目錄的標(biāo)識信息;
[0014]根據(jù)所述描述所述目標(biāo)目錄的元數(shù)據(jù)來判斷所述目標(biāo)目錄是否為存儲有多個元數(shù)據(jù)的目錄;
[0015]若是,則向目錄鎖服務(wù)器發(fā)送第一申請消息以申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限。
[0016]結(jié)合第一方面,或者第一方面的第一種可能的實(shí)現(xiàn)方式,或者第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述當(dāng)所述第一客戶端申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),所述第一客戶端訪問所述第一目標(biāo)元數(shù)據(jù)之后,所述方法還包括:
[0017]所述第一客戶端接收第三客戶端發(fā)送的請求消息,所述請求消息用于請求通過所述第一客戶端訪問所述第一目標(biāo)元數(shù)據(jù),所述請求消息為所述第三客戶端向所述目錄鎖服務(wù)器申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,并接收到所述目錄鎖服務(wù)器返回的所述第一客戶端的節(jié)點(diǎn)信息后,根據(jù)所述第一客戶端的節(jié)點(diǎn)信息向所述第一客戶端發(fā)送的消息;
[0018]所述第一客戶端根據(jù)所述請求消息訪問所述第一目標(biāo)元數(shù)據(jù),并將訪問所述第一目標(biāo)元數(shù)據(jù)的訪問結(jié)果發(fā)送給所述第三客戶端。
[0019]通過執(zhí)行上述步驟,第一客戶端獲取到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限后,如果第三客戶端有訪問目標(biāo)目錄中第一目標(biāo)元數(shù)據(jù)的需求,則第三客戶端將訪問請求發(fā)送至第一客戶端,通過第一客戶端訪問該第一目標(biāo)元數(shù)據(jù),保證了申請不到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限的客戶端也都能正常地訪問第一目標(biāo)元數(shù)據(jù)。
[0020]結(jié)合第一方面,或者第一方面的第一種可能的實(shí)現(xiàn)方式,或者第一方面的第二種可能的實(shí)現(xiàn)方式,或者第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述當(dāng)所述第一客戶端申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),所述第一客戶端訪問所述第一目標(biāo)元數(shù)據(jù)之后,所述方法還包括:
[0021 ]所述第一客戶端在請求訪問所述目標(biāo)目錄中的第二目標(biāo)元數(shù)據(jù)時(shí),如果第二目標(biāo)元數(shù)據(jù)屬于所述目標(biāo)目錄中除所述第一目標(biāo)元數(shù)據(jù)之外的元數(shù)據(jù);
[0022]則所述第一客戶端按照已獲得的對所述第二目標(biāo)元數(shù)據(jù)的排它訪問權(quán)限,對所述第二目標(biāo)元數(shù)據(jù)進(jìn)行訪問。
[0023]通過執(zhí)行上述步驟,第一客戶端在訪問目標(biāo)目錄中的其他元數(shù)據(jù)(如第二目標(biāo)元數(shù)據(jù))時(shí),可以直接對該第二目標(biāo)元數(shù)據(jù)進(jìn)行訪問,無需再次申請?jiān)L問訪問權(quán)限,提高了第一客戶端訪問目標(biāo)目錄中的元數(shù)據(jù)的效率。
[0024]結(jié)合第一方面,或者第一方面的第一種可能的實(shí)現(xiàn)方式,或者第一方面的第二種可能的實(shí)現(xiàn)方式,或者第一方面的第三種可能的實(shí)現(xiàn)方式,或者第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述第一客戶端訪問所述第一目標(biāo)元數(shù)據(jù)包括:
[0025]所述第一客戶端向元數(shù)據(jù)路由服務(wù)器請求所述目標(biāo)目錄的歸屬信息,所述元數(shù)據(jù)路由服務(wù)器預(yù)存有目錄的歸屬信息;
[0026]所述第一客戶端接收所述元數(shù)據(jù)路由服務(wù)器發(fā)送的所述目標(biāo)目錄的歸屬信息,所述目標(biāo)目錄的歸屬信息用于指示所述目標(biāo)目錄的操作權(quán)限歸屬到目標(biāo)元數(shù)據(jù)服務(wù)器;
[0027]所述第一客戶端向所述目標(biāo)元數(shù)據(jù)服務(wù)器發(fā)送操作請求消息,請求所述目標(biāo)元數(shù)據(jù)服務(wù)器根據(jù)所述對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限操作所述第一目標(biāo)元數(shù)據(jù);
[0028]所述第一客戶端接收所述目標(biāo)元數(shù)據(jù)服務(wù)器發(fā)送的操作結(jié)果;所述操作結(jié)果為所述目標(biāo)元數(shù)據(jù)服務(wù)器向所述目錄鎖服務(wù)器申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限后,對所述第一目標(biāo)元數(shù)據(jù)進(jìn)行操作的結(jié)果。
[0029]通過執(zhí)行上述步驟,目標(biāo)元數(shù)據(jù)服務(wù)器接收到第一客戶端發(fā)送的訪問目標(biāo)目錄下的第一目標(biāo)元數(shù)據(jù)的請求后,在對目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù)進(jìn)行操作之前,先向目錄鎖服務(wù)器申請目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限,使得所有的元數(shù)據(jù)服務(wù)器中始終只有一個元數(shù)據(jù)服務(wù)器具備對目標(biāo)目錄的操作權(quán)限,保證了目標(biāo)目錄下的元數(shù)據(jù)的持久化保存一致性。
[0030]結(jié)合第一方面,或者第一方面的第一種可能的實(shí)現(xiàn)方式,或者第一方面的第二種可能的實(shí)現(xiàn)方式,或者第一方面的第三種可能的實(shí)現(xiàn)方式,或者第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,所述第一客戶端訪問所述第一目標(biāo)元數(shù)據(jù)包括:
[0031]所述第一客戶端向元數(shù)據(jù)路由服務(wù)器發(fā)送切換消息,指示所述元數(shù)據(jù)路由服務(wù)器將所述目標(biāo)目錄的操作權(quán)限歸屬到所述第一客戶端;
[0032]所述第一客戶端接收所述元數(shù)據(jù)路由服務(wù)器發(fā)送的通知消息,所述通知消息用于指示所述目標(biāo)目錄的操作權(quán)限歸屬到所述第一客戶端;
[0033]所述第一客戶端向所述目錄鎖服務(wù)器發(fā)送第二申請消息以申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限;
[0034]所述第一客戶端接收所述目錄鎖服務(wù)器發(fā)送的授予所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限的授予消息,所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限用于供所述第一客戶端操作所述目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù),以及操作所述目標(biāo)目錄中除所述第一目標(biāo)元數(shù)據(jù)之外的元數(shù)據(jù);
[0035]所述第一客戶端根據(jù)所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限對所述第一目標(biāo)元數(shù)據(jù)進(jìn)行操作,獲得操作結(jié)果。
[0036]通過執(zhí)行上述步驟,第一客戶端同時(shí)充當(dāng)客戶端和元數(shù)據(jù)服務(wù)器的功能,第一客戶端獲取到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限后,不需要與遠(yuǎn)端的元數(shù)據(jù)服務(wù)器進(jìn)行交互來請求元數(shù)據(jù)服務(wù)器對第一目標(biāo)元數(shù)據(jù)進(jìn)行操作,減少了節(jié)點(diǎn)之間的開銷,提高了訪問第一目標(biāo)元數(shù)據(jù)的訪問效率。
[0037]結(jié)合第一方面,或者第一方面的第一種可能的實(shí)現(xiàn)方式,或者第一方面的第二種可能的實(shí)現(xiàn)方式,或者第一方面的第五種可能的實(shí)現(xiàn)方式,或者第一方面的第六種可能的實(shí)現(xiàn)方式,在第一方面的第七種可能的實(shí)現(xiàn)方式中,所述當(dāng)所述第一客戶端申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),所述第一客戶端訪問所述第一目標(biāo)元數(shù)據(jù)之后,所述方法還包括:
[0038]所述第一客戶端判斷訪問所述目標(biāo)目錄中的元數(shù)據(jù)所產(chǎn)生的負(fù)載是否滿足預(yù)設(shè)條件;
[0039]若滿足,則所述第一客戶端釋放所述目標(biāo)目錄中的所有元數(shù)據(jù)的排它訪問權(quán)限,以便所述目錄鎖服務(wù)器將所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限授予第四客戶端。
[0040]通過執(zhí)行上述步驟,第一客戶端上的負(fù)載過高時(shí),自動釋放目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,讓負(fù)載較低的第四客戶端來獲取該目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限以達(dá)到分擔(dān)負(fù)載的目的;或者在第一客戶端訪問目標(biāo)目錄中的元數(shù)據(jù)的頻率比其他客戶端訪問目標(biāo)目錄中的元數(shù)據(jù)的頻率低時(shí),自動釋放目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,讓訪問頻率較高的客戶端獲取目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,以減少轉(zhuǎn)發(fā)訪問所產(chǎn)生的負(fù)載,提高了訪問目標(biāo)目錄中元數(shù)據(jù)的效率。
[0041 ]第二方面,本發(fā)明實(shí)施例提供一種元數(shù)據(jù)訪問方法,該方法包括:
[0042]目錄鎖服務(wù)器在第一客戶端訪問目標(biāo)目錄中的目標(biāo)元數(shù)據(jù)時(shí),接收所述第一客戶端發(fā)送的第一申請消息,所述第一申請消息用于申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,所述目標(biāo)目錄為存儲有多個元數(shù)據(jù)的目錄,所述目標(biāo)元數(shù)據(jù)為所述第一客戶端當(dāng)前需要訪問的元數(shù)據(jù);
[0043]所述目錄鎖服務(wù)器根據(jù)所述第一申請消息判斷所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限是否已經(jīng)授予了第二客戶端,所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限用于供所述第一客戶端訪問所述目標(biāo)目錄中的目標(biāo)元數(shù)據(jù),以及訪問所述目標(biāo)目錄中除所述目標(biāo)元數(shù)據(jù)之外的元數(shù)據(jù);
[0044]若未授予所述第二客戶端,則所述目錄鎖服務(wù)器將所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限授予所述第一客戶端;若授予了所述第二客戶端,則所述目錄鎖服務(wù)器向所述第一客戶端發(fā)送所述第二客戶端所在的節(jié)點(diǎn)信息,以使所述第一客戶端基于所述第二客戶端所在的節(jié)點(diǎn)信息通過所述第二客戶端訪問所述目標(biāo)元數(shù)據(jù)。
[0045]通過執(zhí)行上述步驟,第一客戶端訪問目標(biāo)目錄中的目標(biāo)元數(shù)據(jù)時(shí),一次性向目錄鎖服務(wù)器申請目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,這樣一來,第一客戶端就可以順利訪問目標(biāo)元數(shù)據(jù),并且后續(xù)訪問目標(biāo)目錄中其他元數(shù)據(jù)時(shí)不需要再重新申請?jiān)L問權(quán)限,節(jié)省了維護(hù)緩存一致性的開銷。
[0046]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述若未授予所述第二客戶端,則所述目錄鎖服務(wù)器將所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限授予所述第一客戶端之后,所述方法還包括:
[0047]所述目錄鎖服務(wù)器在第三客戶端訪問所述目標(biāo)元數(shù)據(jù)時(shí),接收所述第三客戶端發(fā)送的所述第一申請消息;
[0048]所述目錄鎖服務(wù)器向所述第三客戶端發(fā)送所述第一客戶端所在的節(jié)點(diǎn)信息,以使所述第三客戶端基于所述第一客戶端所在的節(jié)點(diǎn)信息通過所述第一客戶端訪問所述目標(biāo)元數(shù)據(jù)。
[0049]通過執(zhí)行上述步驟,第一客戶端獲取到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限后,如果第三客戶端有訪問目標(biāo)目錄中目標(biāo)元數(shù)據(jù)的需求,則第三客戶端將訪問請求發(fā)送至第一客戶端,通過第一客戶端訪問該目標(biāo)元數(shù)據(jù),保證了申請不到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限的客戶端也都能正常地訪問目標(biāo)元數(shù)據(jù)。
[0050]結(jié)合第二方面,或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述若未授予所述第二客戶端,則所述目錄鎖服務(wù)器將所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限授予所述第一客戶端之后,所述方法還包括:
[0051 ]所述目錄鎖服務(wù)器接收目標(biāo)元數(shù)據(jù)服務(wù)器發(fā)送的第二申請消息,所述第二申請消息為所述目標(biāo)元數(shù)據(jù)服務(wù)器接收到所述第一客戶端訪問所述目標(biāo)元數(shù)據(jù)時(shí)發(fā)送的操作消息時(shí)發(fā)送的,用于申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限的消息;
[0052]所述目錄鎖服務(wù)器根據(jù)所述第二申請消息將所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限授予所述目標(biāo)元數(shù)據(jù)服務(wù)器,以使所述目標(biāo)元數(shù)據(jù)服務(wù)器對所述目標(biāo)元數(shù)據(jù)進(jìn)行操作并將操作結(jié)果反饋給所述第一客戶端,其中,所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限用于供所述目標(biāo)元數(shù)據(jù)服務(wù)器操作所述目標(biāo)目錄中的目標(biāo)元數(shù)據(jù),以及操作所述目標(biāo)目錄中除所述目標(biāo)元數(shù)據(jù)之外的元數(shù)據(jù)。
[0053]通過執(zhí)行上述步驟,目標(biāo)元數(shù)據(jù)服務(wù)器接收到第一客戶端發(fā)送的訪問目標(biāo)目錄下的目標(biāo)元數(shù)據(jù)的請求后,在對目標(biāo)目錄中的目標(biāo)元數(shù)據(jù)進(jìn)行操作之前,先向目錄鎖服務(wù)器申請目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限,使得所有的元數(shù)據(jù)服務(wù)器中始終只有一個元數(shù)據(jù)服務(wù)器具備對目標(biāo)目錄的操作權(quán)限,保證了目標(biāo)目錄下的元數(shù)據(jù)的持久化保存一致性。
[0054]結(jié)合第二方面,或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述若未授予所述第二客戶端,則所述目錄鎖服務(wù)器將所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限授予所述第一客戶端之后,所述方法還包括:
[0055]所述目錄鎖服務(wù)器接收所述第一客戶端發(fā)送的第二申請消息,所述第二申請消息用于申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限;
[0056]所述目錄鎖服務(wù)器根據(jù)所述第二申請消息將所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限授予所述第一客戶端,以使所述第一客戶端對所述目標(biāo)元數(shù)據(jù)進(jìn)行操作,其中,所述目標(biāo)目錄中所有元數(shù)據(jù)的排它操作權(quán)限用于供所述第一客戶端操作所述目標(biāo)目錄中的目標(biāo)元數(shù)據(jù),以及操作所述目標(biāo)目錄中除所述目標(biāo)元數(shù)據(jù)之外的元數(shù)據(jù)。
[0057]通過執(zhí)行上述步驟,第一客戶端同時(shí)充當(dāng)客戶端和元數(shù)據(jù)服務(wù)器的功能,第一客戶端獲取到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限后,不需要與遠(yuǎn)端的元數(shù)據(jù)服務(wù)器進(jìn)行交互來請求元數(shù)據(jù)服務(wù)器對目標(biāo)元數(shù)據(jù)進(jìn)行操作,減少了節(jié)點(diǎn)之間的開銷,提高了訪問目標(biāo)元數(shù)據(jù)的訪問效率。
[0058]第三方面,本發(fā)明實(shí)施例提供一種終端,其特征在于,所述終端為第一客戶端,所述第一客戶端包括發(fā)送裝置、接收裝置、存儲器和處理器,所述處理器調(diào)用所述存儲器中的訪問元數(shù)據(jù)的程序,用于執(zhí)行如下操作:
[0059]在請求訪問目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù)時(shí),通過所述發(fā)送裝置向目錄鎖服務(wù)器發(fā)送第一申請消息以申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,其中,所述目標(biāo)目錄為存儲有多個元數(shù)據(jù)的目錄,所述第一目標(biāo)元數(shù)據(jù)為所述處理器當(dāng)前需要訪問的元數(shù)據(jù);所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限用于供所述處理器訪問所述目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù),以及訪問所述目標(biāo)目錄中除所述第一目標(biāo)元數(shù)據(jù)之外的元數(shù)據(jù);
[0060]當(dāng)申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),訪問所述第一目標(biāo)元數(shù)據(jù)。
[0061 ]通過執(zhí)行上述操作,第一客戶端訪問目標(biāo)目錄中的第一目標(biāo)元數(shù)據(jù)時(shí),一次性向目錄鎖服務(wù)器申請目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限,這樣一來,第一客戶端就可以順利訪問第一目標(biāo)元數(shù)據(jù),并且后續(xù)訪問目標(biāo)目錄中其他元數(shù)據(jù)時(shí)不需要再重新申請?jiān)L問權(quán)限,節(jié)省了維護(hù)緩存一致性的開銷。
[0062]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,當(dāng)未申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),通過所述接收裝置接收所述目錄鎖服務(wù)器發(fā)送的第二客戶端所在的節(jié)點(diǎn)信息,并根據(jù)所述節(jié)點(diǎn)信息通過所述發(fā)送裝置向所述第二客戶端發(fā)送請求消息以通過所述第二客戶端訪問所述目標(biāo)目錄中的元數(shù)據(jù),所述第二客戶端為向所述目錄鎖服務(wù)器申請到了對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限的客戶端。
[0063]通過執(zhí)行上述操作,第一客戶端在申請不到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),通過已經(jīng)獲取了目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限的第二客戶端訪問第一目標(biāo)元數(shù)據(jù),使得第一客戶端在申請不到目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí)依然可以順利訪問到目標(biāo)元數(shù)據(jù)。
[0064]結(jié)合第三方面,或者第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述處理器向目錄鎖服務(wù)器發(fā)送第一申請消息以申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限的方式具體為:
[0065]獲取描述所述目標(biāo)目錄的元數(shù)據(jù),所述描述所述目標(biāo)目錄的元數(shù)據(jù)設(shè)有用于標(biāo)識所述目標(biāo)目錄是否為存儲有多個元數(shù)據(jù)的目錄的標(biāo)識信息;
[0066]根據(jù)所述描述所述目標(biāo)目錄的元數(shù)據(jù)來判斷所述目標(biāo)目錄是否為存儲有多個元數(shù)據(jù)的目錄;
[0067]若是,則通過發(fā)送裝置向目錄鎖服務(wù)器發(fā)送第一申請消息以申請對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限。
[0068]結(jié)合第三方面,或者第三方面的第一種可能的實(shí)現(xiàn)方式,或者第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式中,當(dāng)申請到對所述目標(biāo)目錄中所有元數(shù)據(jù)的排它訪問權(quán)限時(shí),所述處理訪問所述第一目標(biāo)元數(shù)據(jù)之后,所述處理器還用于:
[0069]通過所述接收裝置接收第三客戶端發(fā)送的請求消息,所述請求消息用于請求通過所述第一客戶端訪問所述第