管理鎖的方法及裝置、確定鎖管理服務(wù)器的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種管理鎖的方法及裝置、確定鎖管理服務(wù)器的方法及裝置、鎖管理服務(wù)器及客戶(hù)端。
【背景技術(shù)】
[0002]分布式系統(tǒng)是一組主機(jī)通過(guò)網(wǎng)絡(luò)相互連接與通信后形成的系統(tǒng)。在分布式系統(tǒng)中,各個(gè)主機(jī)之間共享分布式系統(tǒng)的資源,為了防止兩個(gè)或多個(gè)主機(jī)同時(shí)訪(fǎng)問(wèn)一個(gè)資源造成沖突的情況發(fā)生,每個(gè)資源需要對(duì)應(yīng)一個(gè)鎖,主機(jī)訪(fǎng)問(wèn)一個(gè)資源,需要首先申請(qǐng)?jiān)撡Y源對(duì)應(yīng)的鎖,申請(qǐng)成功后,再訪(fǎng)問(wèn)該資源,訪(fǎng)問(wèn)完畢后,釋放該資源對(duì)應(yīng)的鎖,以便其他主機(jī)能夠申請(qǐng)?jiān)撡Y源對(duì)應(yīng)的鎖。
[0003]目前管理分布式系統(tǒng)的資源對(duì)應(yīng)的鎖的實(shí)現(xiàn)方式:
[0004]分布式系統(tǒng)中的所有主機(jī)均存儲(chǔ)有每個(gè)資源對(duì)應(yīng)的鎖,所有主機(jī)中有一個(gè)主機(jī)為主節(jié)點(diǎn),對(duì)外提供服務(wù),其他主機(jī)作為備節(jié)點(diǎn),備節(jié)點(diǎn)接收到的請(qǐng)求均轉(zhuǎn)發(fā)到主節(jié)點(diǎn)上。在主節(jié)點(diǎn)上執(zhí)行的所有操作必須同步到備節(jié)點(diǎn)上。由于僅有主節(jié)點(diǎn)對(duì)外提供服務(wù),所以主節(jié)點(diǎn)能夠支持的鎖數(shù)量就是整個(gè)分布式系統(tǒng)能夠支持的鎖數(shù)量,鎖容量有限,并且由于在主節(jié)點(diǎn)上執(zhí)行的每次操作都需要同步到整個(gè)分布式系統(tǒng)中的各個(gè)備節(jié)點(diǎn)上,涉及到多次通信以及協(xié)商,所以性能較低,同時(shí)可靠性難以得到保障。
[0005]綜上,目前管理系統(tǒng)資源對(duì)應(yīng)的鎖的方式無(wú)法滿(mǎn)足高并發(fā)、低時(shí)延和可靠性需求。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種管理鎖的方法及裝置、確定鎖管理服務(wù)器的方法及裝置、鎖管理服務(wù)器及客戶(hù)端,鎖無(wú)需持久化,同時(shí)滿(mǎn)足處理低時(shí)延,和服務(wù)高并發(fā),鎖的高可靠性,無(wú)需保存鎖多個(gè)副本從而避免鎖迀移帶來(lái)的額外開(kāi)銷(xiāo)。
[0007]本發(fā)明實(shí)施例第一方面提供了一種管理鎖的方法,所述方法應(yīng)用于鎖管理服務(wù)器集群,所述鎖管理服務(wù)器集群包含多個(gè)鎖管理服務(wù)器,所述方法包括:
[0008]第一鎖管理服務(wù)器接收第一客戶(hù)端發(fā)送的鎖申請(qǐng)請(qǐng)求,所述鎖申請(qǐng)請(qǐng)求包含資源標(biāo)識(shí),所述第一鎖管理服務(wù)器是所述第一客戶(hù)端根據(jù)所述資源標(biāo)識(shí)按照預(yù)定函數(shù)關(guān)系,從所述多個(gè)鎖管理服務(wù)器中確定出的;
[0009]若所述第一鎖管理服務(wù)器中所述資源標(biāo)識(shí)對(duì)應(yīng)的鎖的狀態(tài)為空閑,則所述第一鎖管理服務(wù)器將所述鎖分配給所述第一客戶(hù)端;
[0010]若所述第一鎖管理服務(wù)器沒(méi)有所述資源標(biāo)識(shí)對(duì)應(yīng)的鎖,則所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并分配給所述第一客戶(hù)端。
[0011]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述第一鎖管理服務(wù)器沒(méi)有所述鎖,則所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并分配給所述第一客戶(hù)端,包括:
[0012]所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)確定由所述第一鎖管理服務(wù)器生成所述鎖,則所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并分配給所述第一客戶(hù)端。
[0013]結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,還包括:
[0014]若所述第一鎖管理服務(wù)器中所述鎖的狀態(tài)為占用、且占用所述鎖的第二客戶(hù)端故障,則所述第一鎖管理服務(wù)器將所述鎖分配給所述第一客戶(hù)端。
[0015]結(jié)合第一方面至第一方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述預(yù)定函數(shù)關(guān)系用于將所述資源標(biāo)識(shí)映射為所述多個(gè)鎖管理服務(wù)器中一個(gè)鎖管理服務(wù)器的標(biāo)識(shí)。
[0016]本發(fā)明實(shí)施例第二方面提供了一種管理鎖的方法,所述方法應(yīng)用于鎖管理服務(wù)器集群,所述鎖管理服務(wù)器集群包含多個(gè)鎖管理服務(wù)器,所述方法包括:
[0017]第一鎖管理服務(wù)器接收第一客戶(hù)端發(fā)送的鎖釋放請(qǐng)求,所述鎖釋放請(qǐng)求包含資源標(biāo)識(shí),所述第一鎖管理服務(wù)器是所述第一客戶(hù)端根據(jù)所述資源標(biāo)識(shí)按照預(yù)定函數(shù)關(guān)系,從所述多個(gè)鎖管理服務(wù)器中確定出的;
[0018]若所述第一鎖管理服務(wù)器中所述鎖被所述第一客戶(hù)端占用,則所述第一鎖管理服務(wù)器將所述鎖的狀態(tài)設(shè)置為空閑。
[0019]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,還包括:
[0020]若所述第一鎖管理服務(wù)器沒(méi)有所述鎖,則所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并設(shè)置生成的鎖的狀態(tài)為占用。
[0021]結(jié)合第二方面或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,還包括:
[0022]若所述第一鎖管理服務(wù)器中所述鎖的狀態(tài)為占用,且占用所述鎖的第二客戶(hù)端發(fā)生故障,則所述第一鎖管理服務(wù)器將所述鎖的狀態(tài)設(shè)置為空閑。
[0023]結(jié)合第二方面至第二方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述預(yù)定函數(shù)關(guān)系用于將所述資源標(biāo)識(shí)映射為所述多個(gè)鎖管理服務(wù)器中一個(gè)鎖管理服務(wù)器的標(biāo)識(shí)。
[0024]本發(fā)明實(shí)施例第三方面提供了一種確定鎖管理服務(wù)器的方法,所述方法包括:
[0025]客戶(hù)端根據(jù)第一資源標(biāo)識(shí),按照預(yù)定函數(shù)關(guān)系從鎖管理服務(wù)器集群包含的多個(gè)鎖管理服務(wù)器中確定出第一鎖管理服務(wù)器;
[0026]若所述第一鎖管理服務(wù)器工作正常,則所述客戶(hù)端向所述第一鎖管理服務(wù)器發(fā)送第一鎖操作請(qǐng)求;所述第一鎖操作請(qǐng)求為第一鎖申請(qǐng)請(qǐng)求或第一鎖釋放請(qǐng)求;所述第一鎖操作請(qǐng)求攜帶所述第一資源標(biāo)識(shí)。
[0027]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,還包括:
[0028]所述客戶(hù)端根據(jù)第二資源標(biāo)識(shí),按照所述預(yù)定函數(shù)關(guān)系從所述多個(gè)鎖管理服務(wù)器中確定出第二鎖管理服務(wù)器;
[0029]若所述第二鎖管理服務(wù)器發(fā)生故障,則所述客戶(hù)端按照所述預(yù)定函數(shù)關(guān)系從剩余鎖管理服務(wù)器中確定出第三鎖管理服務(wù)器,所述剩余鎖管理服務(wù)器為所述多個(gè)服務(wù)器中除所述第二鎖管理服務(wù)器外的鎖管理服務(wù)器;
[0030]若所述第三鎖管理服務(wù)器工作正常,則所述客戶(hù)端向所述第三鎖管理服務(wù)器發(fā)送第二鎖操作請(qǐng)求,所述第二鎖操作請(qǐng)求為第二鎖申請(qǐng)請(qǐng)求或第二鎖釋放請(qǐng)求,所述第二鎖操作請(qǐng)求中攜帶所述第二資源標(biāo)識(shí)。
[0031]本發(fā)明實(shí)施例第四方面提供了一種管理鎖的裝置,包括:
[0032]接收單元,用于接收第一客戶(hù)端發(fā)送的鎖申請(qǐng)請(qǐng)求,所述鎖申請(qǐng)請(qǐng)求包含資源標(biāo)識(shí),所述第一鎖管理服務(wù)器是所述第一客戶(hù)端根據(jù)所述資源標(biāo)識(shí)按照預(yù)定函數(shù)關(guān)系,從鎖管理服務(wù)器集群包含的多個(gè)鎖管理服務(wù)器中確定出的;
[0033]分配單元,用于若所述第一鎖管理服務(wù)器中所述資源標(biāo)識(shí)對(duì)應(yīng)的鎖的狀態(tài)為空閑,則所述第一鎖管理服務(wù)器將所述鎖分配給所述第一客戶(hù)端;
[0034]生成單元,用于若所述第一鎖管理服務(wù)器沒(méi)有所述資源標(biāo)識(shí)對(duì)應(yīng)的鎖,則所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并分配給所述第一客戶(hù)端。
[0035]結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述生成單元用于:
[0036]根據(jù)所述資源標(biāo)識(shí)確定由所述第一鎖管理服務(wù)器生成所述鎖,則所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并分配給所述第一客戶(hù)端。
[0037]結(jié)合第四方面或者第四方面的第一種可能的實(shí)現(xiàn)方式,在第四方面的第二種可能的實(shí)現(xiàn)方式中,所述分配單元還用于:
[0038]若所述第一鎖管理服務(wù)器中所述鎖的狀態(tài)為占用、且占用所述鎖的第二客戶(hù)端故障,則所述第一鎖管理服務(wù)器將所述鎖分配給所述第一客戶(hù)端。
[0039]結(jié)合第四方面至第四方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第四方面的第三種可能的實(shí)現(xiàn)方式中,所述預(yù)定函數(shù)關(guān)系用于將所述資源標(biāo)識(shí)映射為所述多個(gè)鎖管理服務(wù)器中一個(gè)鎖管理服務(wù)器的標(biāo)識(shí)。
[0040]本發(fā)明實(shí)施例第五方面提供了一種管理鎖的裝置,包括:
[0041]接收單元,用于接收第一客戶(hù)端發(fā)送的鎖釋放請(qǐng)求,所述鎖釋放請(qǐng)求包含資源標(biāo)識(shí),所述第一鎖管理服務(wù)器是所述第一客戶(hù)端根據(jù)所述資源標(biāo)識(shí)按照預(yù)定函數(shù)關(guān)系,從所述多個(gè)鎖管理服務(wù)器中確定出的;
[0042]釋放單元,用于若所述第一鎖管理服務(wù)器中所述鎖被所述第一客戶(hù)端占用,則所述第一鎖管理服務(wù)器將所述鎖的狀態(tài)設(shè)置為空閑。
[0043]結(jié)合第五方面,在第五方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0044]生成單元,用于若所述第一鎖管理服務(wù)器沒(méi)有所述鎖,則所述第一鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并設(shè)置生成的鎖的狀態(tài)為占用。
[0045]結(jié)合第五方面或者第五方面的第一種可能的實(shí)現(xiàn)方式,在第五方面的第二種可能的實(shí)現(xiàn)方式中,所述釋放單元還用于:
[0046]若所述第一鎖管理服務(wù)器中所述鎖的狀態(tài)為占用,且占用所述鎖的第二客戶(hù)端發(fā)生故障,則所述第一鎖管理服務(wù)器將所述鎖的狀態(tài)設(shè)置為空閑。
[0047]結(jié)合第五方面至第五方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第五方面的第三種可能的實(shí)現(xiàn)方式中,所述預(yù)定函數(shù)關(guān)系用于將所述資源標(biāo)識(shí)映射為所述多個(gè)鎖管理服務(wù)器中一個(gè)鎖管理服務(wù)器的標(biāo)識(shí)。
[0048]本發(fā)明實(shí)施例第六方面提供了一種確定鎖管理服務(wù)器的裝置,包括:
[0049]確定單元,用于根據(jù)第一資源標(biāo)識(shí),按照第一函數(shù)關(guān)系從鎖管理服務(wù)器集群包含的多個(gè)鎖管理服務(wù)器中確定出第一鎖管理服務(wù)器;
[0050]發(fā)送單元,用于若所述第一鎖管理服務(wù)器工作正常,則所述客戶(hù)端向所述第一鎖管理服務(wù)器發(fā)送第一鎖操作請(qǐng)求;所述第一鎖操作請(qǐng)求為第一鎖申請(qǐng)請(qǐng)求或第一鎖釋放請(qǐng)求;所述第一鎖操作請(qǐng)求攜帶所述第一資源標(biāo)識(shí)。
[0051]結(jié)合第六方面,在第六方面的第一種可能的實(shí)現(xiàn)方式中,所述確定單元還用于:
[0052]根據(jù)第二資源標(biāo)識(shí),按照所述第一函數(shù)關(guān)系從所述多個(gè)鎖管理服務(wù)器中確定出第二鎖管理服務(wù)器;若所述第二鎖管理服務(wù)器發(fā)生故障,則按照所述第一函數(shù)關(guān)系從剩余鎖管理服務(wù)器中確定出第三鎖管理服務(wù)器,所述剩余鎖管理服務(wù)器為所述多個(gè)服務(wù)器中除所述第二鎖管理服務(wù)器外的鎖管理服務(wù)器;
[0053]所述發(fā)送單元還用于:若所述第三鎖管理服務(wù)器工作正常,則所述客戶(hù)端向所述第三鎖管理服務(wù)器發(fā)送第二鎖操作請(qǐng)求,所述第二鎖操作請(qǐng)求為第二鎖申請(qǐng)請(qǐng)求或第二鎖釋放請(qǐng)求,所述第二鎖操作請(qǐng)求中攜帶所述第二資源標(biāo)識(shí)。
[0054]本發(fā)明實(shí)施例第七方面提供了一種鎖管理服務(wù)器,所述鎖管理服務(wù)器為鎖管理服務(wù)器集群包含的多個(gè)鎖管理服務(wù)器中的一個(gè),所述鎖管理服務(wù)器包括:處理器,接收器和通信總線(xiàn);其中,所述處理器和所述接收器通過(guò)所述通信總線(xiàn)完成相互間的通信;
[0055]所述接收器用于:
[0056]接收第一客戶(hù)端發(fā)送的鎖申請(qǐng)請(qǐng)求,所述鎖申請(qǐng)請(qǐng)求包含資源標(biāo)識(shí),所述鎖管理服務(wù)器是所述第一客戶(hù)端根據(jù)所述資源標(biāo)識(shí)按照預(yù)定函數(shù)關(guān)系,從所述多個(gè)鎖管理服務(wù)器中確定出的;
[0057]所述處理器用于:
[0058]若所述鎖管理服務(wù)器中所述資源標(biāo)識(shí)對(duì)應(yīng)的鎖的狀態(tài)為空閑,則將所述鎖分配給所述第一客戶(hù)端;若所述鎖管理服務(wù)器沒(méi)有所述資源標(biāo)識(shí)對(duì)應(yīng)的鎖,則所述鎖管理服務(wù)器根據(jù)所述資源標(biāo)識(shí)生成鎖,并分配給所述第一客戶(hù)端。
[0059]結(jié)合第七方面,在第七方面的第一種可能的實(shí)現(xiàn)方式中,所述處理器用于:
[0060]根據(jù)所述資源標(biāo)識(shí)確定由所述鎖管理服務(wù)器生成所述鎖,則根據(jù)所述資源標(biāo)識(shí)生成鎖,并分配給所述第一客戶(hù)端。
[0061]結(jié)合第七方面或者第七方面的第一種可能的實(shí)現(xiàn)方式,在第七方面的第二種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0062]若所述鎖管理服務(wù)器中所述鎖的狀態(tài)為占用、且占用所述鎖的第二客戶(hù)端故障,則將所述鎖分配給所述第一客戶(hù)端。
[0063]結(jié)合第七方面至第七方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第七方面的第三種可能的實(shí)現(xiàn)方式中,所述預(yù)定函數(shù)關(guān)系用于將所述資源標(biāo)識(shí)映射為所述多個(gè)鎖管理服務(wù)器中一個(gè)鎖管理服務(wù)器的標(biāo)識(shí)。
[0064]本發(fā)明實(shí)施例第八方面提供了一種鎖管理服務(wù)器,所述鎖管理服務(wù)器為鎖管理服務(wù)器集群包含的多個(gè)鎖管理服務(wù)器中的一個(gè),所述鎖管理服務(wù)器包括:處理器,接收器和通信總線(xiàn);其中,所述處理器和所述接收器通過(guò)所述通信總線(xiàn)完成相互間的通信;
[0065]所述接收器用于:
[0066]接收第一客戶(hù)端發(fā)送的鎖釋放請(qǐng)求,所述鎖釋放請(qǐng)求包含資源標(biāo)識(shí),所述鎖管理服務(wù)器是所述第一客戶(hù)端根據(jù)所述資源標(biāo)識(shí)按照預(yù)定函數(shù)關(guān)系,從所述多個(gè)鎖管理服務(wù)器中確定出的;
[0067]所述處理器用于:
[0068]若所述鎖管理服務(wù)器中所述鎖被所述第一客戶(hù)端占用,則將所述鎖的狀態(tài)設(shè)置為空閑。
[0069]結(jié)合第八方面,在第八方面的第一種可