分布式鎖服務(wù)的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及分布式系統(tǒng)領(lǐng)域,并且更具體地,涉及一種分布式鎖服務(wù)的方法和裝置。
【背景技術(shù)】
[0002]在分布式系統(tǒng)中,不同的主機(jī)可以共享一個(gè)或者一組資源,為了防止不同的主機(jī)同時(shí)訪問相同的共享資源時(shí)發(fā)生沖突或者干擾,分布式系統(tǒng)中常常采用分布式鎖來實(shí)現(xiàn)對(duì)不同的主機(jī)訪問共享資源的控制。具體來說,當(dāng)一個(gè)主機(jī)要訪問共享資源時(shí)需要先獲得與要訪問的資源對(duì)應(yīng)的分布式鎖,在獲取相應(yīng)的分布式鎖之后才能訪問相應(yīng)的資源。
[0003]分布式鎖服務(wù)主要是通過分布式鎖管理服務(wù)端(Di str ibute Lock ManageServer,DLMS)和分布式鎖管理客戶端(Distribute Lock Manage Client,DLMC)來實(shí)現(xiàn)分布式鎖服務(wù)的,DLMS擁有一定數(shù)量的分布式鎖,應(yīng)用可以通過DLMC向DLMS申請(qǐng)分布式鎖,一般來說DLMC可以與應(yīng)用分布在相同的分布式節(jié)點(diǎn)上,而DLMS—般分布在單獨(dú)的分布式節(jié)點(diǎn)上。
[0004]為了提供分布式鎖服務(wù),現(xiàn)有技術(shù)將DLMS設(shè)置在分布式系統(tǒng)中的不同分布式節(jié)點(diǎn)上,應(yīng)用在接收到數(shù)據(jù)操作請(qǐng)求之后通過所在節(jié)點(diǎn)的DLMC向DLMS申請(qǐng)相應(yīng)的分布式鎖,在獲取了分布式鎖之后,再從系統(tǒng)存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)獲取與數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的待處理的數(shù)據(jù),然后對(duì)待處理的數(shù)據(jù)進(jìn)行相應(yīng)的操作處理。
[0005]上述現(xiàn)有技術(shù)是在單獨(dú)的分布式節(jié)點(diǎn)上部署DLMS,物理部署較多。此外,應(yīng)用在對(duì)目標(biāo)數(shù)據(jù)進(jìn)行處理時(shí),需要先確定與目標(biāo)數(shù)據(jù)對(duì)應(yīng)的分布式鎖所在的節(jié)點(diǎn),并從該節(jié)點(diǎn)的DLMS獲取分布式鎖,接下來再確定目標(biāo)數(shù)據(jù)所在的節(jié)點(diǎn),并從中獲取目標(biāo)數(shù)據(jù),最后再對(duì)目標(biāo)數(shù)據(jù)進(jìn)行處理。也就是說,如果要完成對(duì)數(shù)據(jù)的處理,需要分別確定分布式鎖和目標(biāo)數(shù)據(jù)所在的節(jié)點(diǎn),然后再分別獲取分布式鎖和目標(biāo)數(shù)據(jù),過程比較繁瑣。
【發(fā)明內(nèi)容】
[0006]本申請(qǐng)?zhí)峁┝艘环N分布式鎖服務(wù)的方法和裝置,以減少物理部署。
[0007]第一方面,提供一種分布式鎖服務(wù)的方法,包括:接收數(shù)據(jù)操作請(qǐng)求;確定與所述數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的目標(biāo)互聯(lián)網(wǎng)協(xié)議IP盤;從所述目標(biāo)IP盤中的鎖管理服務(wù)端DLMS獲取與所述數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分布式鎖;從所述目標(biāo)IP盤中獲取目標(biāo)數(shù)據(jù),以便于在所述目標(biāo)分布式鎖的租約期限內(nèi)對(duì)所述目標(biāo)數(shù)據(jù)進(jìn)行處理。
[0008]現(xiàn)有技術(shù)是將DLMS在部署在分布式系統(tǒng)中的一些單獨(dú)的分布式節(jié)點(diǎn)上,如果要實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作處理必須要先確定與目標(biāo)數(shù)據(jù)對(duì)應(yīng)的分布式鎖所在的節(jié)點(diǎn),并從該節(jié)點(diǎn)的DLMS獲取分布式鎖,接下來再確定目標(biāo)數(shù)據(jù)所在的節(jié)點(diǎn),并從中獲取目標(biāo)數(shù)據(jù),最后再對(duì)目標(biāo)數(shù)據(jù)進(jìn)行處理。也就是說,如果要完成對(duì)數(shù)據(jù)的處理,需要分別確定分布式鎖和目標(biāo)數(shù)據(jù)所在的節(jié)點(diǎn),然后再分別獲取分布式鎖和目標(biāo)數(shù)據(jù),過程比較繁瑣。而在本申請(qǐng)的方案中,通過將DLMS直接部署在IP盤中,而不用再設(shè)置單獨(dú)的分布式節(jié)點(diǎn)來部署DLMS,減少了物理部署,降低了系統(tǒng)的復(fù)雜度,使得應(yīng)用可以從IP盤中既能獲取分布式鎖又能獲取要處理的數(shù)據(jù),而不用像現(xiàn)有技術(shù)那樣要分別從不同的分布式節(jié)點(diǎn)獲取分布式鎖和數(shù)據(jù),簡化了服務(wù)的流程。
[0009]結(jié)合第一方面,在第一方面的第一種實(shí)現(xiàn)方式中,所述數(shù)據(jù)操作請(qǐng)求攜帶所述目標(biāo)數(shù)據(jù)的目標(biāo)鍵值,所述確定與所述數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的目標(biāo)IP盤,包括:根據(jù)所述目標(biāo)鍵值查詢第一映射關(guān)系表,確定與所述目標(biāo)鍵值對(duì)應(yīng)的目標(biāo)IP盤,其中,所述第一映射關(guān)系表指示了 IP盤與鍵值的映射關(guān)系;所述從所述目標(biāo)IP盤中的鎖管理服務(wù)端DLMS獲取與所述數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的目標(biāo)分布式鎖,包括:根據(jù)所述目標(biāo)鍵值查詢所述DLMS中的第二映射關(guān)系表,確定與所述目標(biāo)鍵值對(duì)應(yīng)的目標(biāo)分布式鎖,其中,所述第二映射關(guān)系表指示了分布式鎖與鍵值的映射關(guān)系。
[0010]結(jié)合第一方面或者第一方面的第一種實(shí)現(xiàn)方式,在第一方面的第二種實(shí)現(xiàn)方式中,從所述DLMS獲取所述目標(biāo)分布式鎖之后,將所述目標(biāo)分布式鎖保存在本地緩存中。
[0011]結(jié)合第一方面以及第一方面的第一種至第二種實(shí)現(xiàn)方式中的任一種,在第一方面的第三種實(shí)現(xiàn)方式中,在確定與所述數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的目標(biāo)IP盤之前,所述方法還包括:從本地緩存中獲取所述目標(biāo)分布式鎖。
[0012]第二方面,提供一種分布式鎖服務(wù)的方法,包括:鎖管理服務(wù)端DLMS接收應(yīng)用APP的鎖服務(wù)請(qǐng)求,所述DLMS位于互聯(lián)網(wǎng)協(xié)議IP盤中;所述DLMS確定與所述鎖服務(wù)請(qǐng)求對(duì)應(yīng)的目標(biāo)分布式鎖;所述DLMS將所述目標(biāo)分布式鎖分配給所述APP,以便于所述APP從所述目標(biāo)IP盤獲取目標(biāo)數(shù)據(jù)后對(duì)所述目標(biāo)數(shù)據(jù)進(jìn)行處理。
[0013]現(xiàn)有技術(shù)是將DLMS在部署在分布式系統(tǒng)中的一些單獨(dú)的分布式節(jié)點(diǎn)上,如果要實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作處理必須要先確定與目標(biāo)數(shù)據(jù)對(duì)應(yīng)的分布式鎖所在的節(jié)點(diǎn),并從該節(jié)點(diǎn)的DLMS獲取分布式鎖,接下來再確定目標(biāo)數(shù)據(jù)所在的節(jié)點(diǎn),并從中獲取目標(biāo)數(shù)據(jù),最后再對(duì)目標(biāo)數(shù)據(jù)進(jìn)行處理。也就是說,如果要完成對(duì)數(shù)據(jù)的處理,需要分別確定分布式鎖和目標(biāo)數(shù)據(jù)所在的節(jié)點(diǎn),然后再分別獲取分布式鎖和目標(biāo)數(shù)據(jù),過程比較繁瑣。而在本申請(qǐng)的方案中,通過將DLMS直接部署在IP盤中,而不用再設(shè)置單獨(dú)的分布式節(jié)點(diǎn)來部署DLMS,減少了物理部署,降低了系統(tǒng)的復(fù)雜度,使得應(yīng)用可以從IP盤中既能獲取分布式鎖又能獲取要處理的數(shù)據(jù),而不用像現(xiàn)有技術(shù)那樣要分別從不同的分布式節(jié)點(diǎn)獲取分布式鎖和數(shù)據(jù),簡化了服務(wù)的流程。
[0014]結(jié)合第二方面,在第二方面的第一種實(shí)現(xiàn)方式中,所述鎖服務(wù)請(qǐng)求攜帶所述目標(biāo)數(shù)據(jù)的目標(biāo)鍵值,所述DLMS確定與所述鎖服務(wù)請(qǐng)求對(duì)應(yīng)的目標(biāo)分布式鎖,包括:所述DLMS根據(jù)所述目標(biāo)鍵值查詢第一映射關(guān)系表,確定與所述目標(biāo)鍵值對(duì)應(yīng)的目標(biāo)分布式鎖,其中,所述第一映射關(guān)系表指示了分布式鎖與鍵值的映射關(guān)系。
[0015]結(jié)合第二方面或者第二方面的第一種實(shí)現(xiàn)方式,在第二方面的第二種實(shí)現(xiàn)方式中,所述DLMS將所述目標(biāo)分布式鎖分配給所述APP之前,所述方法還包括:如果所述DLMS中的所述目標(biāo)分布式鎖被其它應(yīng)用獲取,所述DLMS向所述其它應(yīng)用召回所述目標(biāo)分布式鎖。
[0016]結(jié)合第二方面以及第二方面的第一種至第二種實(shí)現(xiàn)方式中的任一種,在第二方面的第三種實(shí)現(xiàn)方式中,所述DLMS向所述其它應(yīng)用召回所述目標(biāo)分布式鎖,包括:所述DLMS確定所述目標(biāo)分布式鎖在所述其它應(yīng)用中是否處于鎖定狀態(tài);如果所述DLMS確定所述目標(biāo)分布式鎖在所述其它應(yīng)用中處于鎖定狀態(tài),所述DLMS在所述目標(biāo)分布式鎖的租約期滿之后向所述其它應(yīng)用召回所述目標(biāo)分布式鎖;如果所述DLMS確定所述目標(biāo)分布式鎖在所述其它應(yīng)用中處于空閑狀態(tài),所述DLMS向所述其它應(yīng)用召回所述目標(biāo)分布式鎖,并向所述其它應(yīng)用發(fā)送指示信息,以便于所述其它應(yīng)用將保存的所述目標(biāo)分布式鎖的緩存信息刪除。
[0017]第三方面,提供一種應(yīng)用節(jié)點(diǎn),所述應(yīng)用節(jié)點(diǎn)包括用于執(zhí)行第一方面的方法的模塊。
[0018]第四方面,提供一種分布式鎖管理裝置,所述分布式鎖管理裝置包括用于執(zhí)行第二方面的方法的模塊。
[0019]在某些實(shí)現(xiàn)方式中,分布式節(jié)點(diǎn)中的應(yīng)用或者設(shè)備接收所述數(shù)據(jù)操作請(qǐng)求,該應(yīng)用或者設(shè)備所在的節(jié)點(diǎn)包含分布式鎖管理客戶端DLMC,所述DLMC用于保存所述目標(biāo)分布式鎖。
[0020]在某些實(shí)現(xiàn)方式中,應(yīng)用或者設(shè)備從所在節(jié)點(diǎn)的DLMC中獲取目標(biāo)分布式鎖。
[0021]本申請(qǐng)的方案中,通過將DLMS直接部署在IP盤中,而不用再設(shè)置單獨(dú)的分布式節(jié)點(diǎn)來部署DLMS,減少了物理部署,降低了系統(tǒng)的復(fù)雜度,使得應(yīng)用可以從IP盤中既能獲取分布式鎖又能獲取要處理的數(shù)據(jù),而不用像現(xiàn)有技術(shù)那樣要分別從不同的分布式節(jié)點(diǎn)獲取分布式鎖和數(shù)據(jù),簡化了服務(wù)的流程。
【附圖說明】
[0022]為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0023]圖1是本發(fā)明實(shí)施例