對分布式存儲系統(tǒng)的鎖管理的方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及信息技術領域,并且具體地,涉及對分布式存儲系統(tǒng)的鎖管理的方法和裝置。
【背景技術】
[0002]分布式存儲系統(tǒng)采用分布式緩存(Cache)技術實現(xiàn)提高系統(tǒng)性能,尤其是降低系統(tǒng)的時延。分布式緩存系統(tǒng)采用保電內存做為存儲介質提供掉電保護能力,同時采用鏡像Mirror機制實現(xiàn)緩存節(jié)點冗余備份,在緩存主節(jié)點處于故障的情況下,備份節(jié)點將會升為主節(jié)點,并且,備份節(jié)點上的備份臟數據可以被訪問,臟數據即保存于本地緩存中但并未寫入磁盤的數據。另外,緩存節(jié)點在讀寫數據時,必須要先獲得分布式鎖,才能進行后續(xù)操作。
[0003]在現(xiàn)有技術中,如果主節(jié)點故障并且分布式存儲系統(tǒng)存在并發(fā)業(yè)務時,分布式存儲系統(tǒng)的鎖服務器采用先到先得的原則,給其他節(jié)點分配鎖資源。這樣存在的問題是,在后申請鎖的備份節(jié)點不能獲取到鎖資源,其擁有的備份臟數據無法寫入磁盤,也就不能被先獲得鎖的其他節(jié)點所訪問,即數據一致性無法保證。
【發(fā)明內容】
[0004]本發(fā)明提供了一種對分布式存儲系統(tǒng)的鎖管理的方法和裝置,能夠在主節(jié)點故障時保證數據的一致性。
[0005]第一方面,提供了一種對分布式存儲系統(tǒng)的鎖管理的方法,該分布式存儲系統(tǒng)包括鎖服務器和至少兩個緩存節(jié)點,該方法由該鎖服務器執(zhí)行,該方法包括:
[0006]確定該至少兩個緩存節(jié)點中的第一緩存節(jié)點故障;
[0007]接收該至少兩個緩存節(jié)點中的第二緩存節(jié)點發(fā)送的第一鎖請求消息,該第二緩存節(jié)點上緩存有該第一緩存節(jié)點備份的未寫入存儲器的臟數據,該第一鎖請求消息攜帶第一指示信息,該第一指示信息用于指示該第二緩存節(jié)點為該第一緩存節(jié)點的備節(jié)點;
[0008]根據該第一指示信息向該第二緩存節(jié)點發(fā)送第一鎖響應消息,該第一鎖響應消息用于指示該第二緩存節(jié)點占有鎖,以便于該第二緩存節(jié)點根據該鎖發(fā)送該臟數據給存儲器。
[0009]本發(fā)明實施例的對分布式存儲系統(tǒng)的鎖管理的方法,通過增加第一指示信息,使得第二緩存節(jié)點能夠優(yōu)先占有鎖資源,從而保證了數據的一致性,提高可靠性。
[0010]結合第一方面,在第一種可能的實現(xiàn)方式中,該方法還包括:
[0011]在確定該第一緩存節(jié)點故障時,啟動鎖恢復期;
[0012]在該鎖恢復期內,接收該至少兩個緩存節(jié)點中的第三緩存節(jié)點發(fā)送的第二鎖請求消息,該第二鎖請求消息攜帶第二指示信息,該第二指示信息用于指示該第三緩存節(jié)點不是該第一緩存節(jié)點的備節(jié)點;
[0013]將該第二鎖請求消息放入鎖請求隊列。
[0014]這里,鎖服務器會接收到其他緩存節(jié)點發(fā)送的申請鎖請求消息,鎖服務器依次將其他緩存節(jié)點申請鎖請求消息的加入隊列,等待恢復期結束后才作處理。
[0015]結合第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,在該鎖恢復期結束后,處理第三鎖請求消息,該第三鎖請求消息位于該鎖請求隊列的隊首。
[0016]這里,鎖服務器處理位于該鎖請求隊列的隊首的該第三鎖請求消息時會先判斷鎖是否空閑,然后基于鎖空閑或非空閑這兩種情況作進一步的操作。
[0017]結合第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,該處理該第三鎖請求消息包括:
[0018]在該第二緩存節(jié)點占有該鎖時,向該第二緩存節(jié)點發(fā)送第一鎖召回消息,該第一鎖召回消息用于指示該第二緩存節(jié)點釋放該鎖;
[0019]接收該第二緩存節(jié)點發(fā)送的第一鎖釋放消息,該第一鎖釋放消息用于指示該第二緩存節(jié)點已釋放該鎖;
[0020]根據該第一鎖釋放消息向第四緩存節(jié)點發(fā)送第二鎖響應消息,該第四緩存節(jié)點為發(fā)送該第三鎖請求消息的緩存節(jié)點,該第二鎖響應消息用于指示該第四緩存節(jié)點占有該鎖。
[0021]在鎖被占有時,鎖服務器觸發(fā)鎖召回機制,召回鎖后將鎖分配給處于隊首鎖請求消息對應的緩存節(jié)點。
[0022]結合第一方面的第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,在該鎖空閑時,向第四緩存節(jié)點發(fā)送第三鎖響應消息,該第四緩存節(jié)點為發(fā)送該第三鎖請求消息的緩存節(jié)點,該第三鎖響應消息用于指示該第四緩存節(jié)點占有該鎖。
[0023]在上述任一種實現(xiàn)方式中,該第一指示信息為第一操作字,該第二指示信息為第二操作字。這樣,鎖服務器根據不同的操作字區(qū)分出備節(jié)點和其他節(jié)點的鎖請求消息,使得備節(jié)點能夠優(yōu)先占有鎖。
[0024]第二方面,提供了一種對分布式存儲系統(tǒng)的鎖管理的方法,該分布式存儲系統(tǒng)包括鎖服務器和至少兩個緩存節(jié)點,該方法由該至少兩個緩存節(jié)點中的第二緩存節(jié)點執(zhí)行,該第二緩存節(jié)點上緩存有該至少兩個緩存節(jié)點中的第一緩存節(jié)點備份的未寫入存儲器的臟數據,該方法包括:
[0025]確定該第一緩存節(jié)點故障;
[0026]向該鎖服務器發(fā)送第一鎖請求消息,該第一鎖請求消息攜帶第一指示信息,該第一指示信息用于指示該第二緩存節(jié)點為該第一緩存節(jié)點的備節(jié)點;
[0027]接收該鎖服務器發(fā)送的第一鎖響應消息,該第一鎖響應消息用于指示該第二緩存節(jié)點占有鎖。
[0028]根據該鎖發(fā)送該臟數據給存儲器。
[0029]本發(fā)明實施例的對分布式存儲系統(tǒng)的鎖管理的方法,通過增加第一指示信息,使得第二緩存節(jié)點能夠優(yōu)先占有鎖資源,從而保證了數據的一致性,提高可靠性。
[0030]這里的臟數據即第一緩存節(jié)點在第二緩存節(jié)點備份的未寫入存儲器的臟數據,第二緩存節(jié)點占有鎖后即可將主節(jié)點在備節(jié)點上備份的臟數據寫入存儲器。
[0031]結合第二方面,在第一種可能的實現(xiàn)方式中,該方法還包括:
[0032]接收該鎖服務器發(fā)送的第一鎖召回消息,該第一鎖召回消息用于該鎖服務器指示該第二緩存節(jié)點釋放該鎖;
[0033]根據該第一鎖召回消息釋放該鎖;
[0034]根據該第一鎖召回消息發(fā)送第一鎖釋放消息。
[0035]第三方面,提供了一種對分布式存儲系統(tǒng)的鎖管理的鎖服務器,用于執(zhí)行上述第一方面或第一方面的任意可能的實現(xiàn)方式中的方法。具體地,該裝置包括用于執(zhí)行上述第一方面或第一方面的任意可能的實現(xiàn)方式中的方法的單元。
[0036]第四方面,提供了一種對分布式存儲系統(tǒng)的鎖管理的第二緩存節(jié)點,用于執(zhí)行上述第二方面或第二方面的任意可能的實現(xiàn)方式中的方法。具體地,該裝置包括用于執(zhí)行上述第二方面或第二方面的任意可能的實現(xiàn)方式中的方法的單元。
[0037]第五方面,提供了一種對分布式存儲系統(tǒng)的鎖管理的裝置,該裝置包括:接收器、發(fā)送器、存儲器、處理器和總線系統(tǒng)。其中,該接收器、該發(fā)送器、該存儲器和該處理器通過該總線系統(tǒng)相連,該存儲器用于存儲指令,該處理器用于執(zhí)行該存儲器存儲的指令,以控制接收器接收信號,并控制發(fā)送器發(fā)送信號,并且當該處理器執(zhí)行該存儲器存儲的指令時,該執(zhí)行使得該處理器執(zhí)行第一方面或第一方面的任意可能的實現(xiàn)方式中的方法。
[0038]第六方面,提供了一種對分布式存儲系統(tǒng)的鎖管理的裝置,該裝置包括:接收器、發(fā)送器、存儲器、處理器和總線系統(tǒng)。其中,該接收器、該發(fā)送器、該存儲器和該處理器通過該總線系統(tǒng)相連,該存儲器用于存儲指令,該處理器用于執(zhí)行該存儲器存儲的指令,以控制接收器接收信號,并控制發(fā)送器發(fā)送信號,并且當該處理器執(zhí)行該存儲器存儲的指令時,該執(zhí)行使得該處理器執(zhí)行第二方面或第二方面的任意可能的實現(xiàn)方式中的方法。
[0039]第七方面,提供了一種分布式存儲系統(tǒng),包括第三方面的鎖服務器、第四方面的第二緩存節(jié)點,以及第一緩存節(jié)點。
[0040]第八方面,提供了一種計算機可讀介質,用于存儲計算機程序,該計算機程序包括用于執(zhí)行第一方面或第一方面的任意可能的實現(xiàn)方式中的方法的指令。
[0041]第九方面,提供了一種計算機可讀介質,用于存儲計算機程序,該計算機程序包括用于執(zhí)行第二方面或第二方面的任意可能的實現(xiàn)方式中的方法的指令。
【附圖說明】
[0042]為了更清楚地說明本發(fā)明實施例的技術方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0043]圖1是分布式存儲系統(tǒng)的基本架構示意圖。
[0044]圖2是本發(fā)明實施例的分布式存儲系統(tǒng)數據一致性原理的示意性流程圖。
[0045]圖3是本發(fā)明實施例的對分布式存儲系統(tǒng)的鎖管理的方法的交互流程示意圖。
[0046]圖4是本發(fā)明實施例的對分布式存儲系統(tǒng)的鎖管理的方法的一個具體例子的交互流程示意圖。
[0047]圖5是本發(fā)明實施例的鎖服務器的示意性框圖。
[0048]圖6是本發(fā)明實施例的第二緩存節(jié)點的示意性框圖。
[0049]圖7是本發(fā)明實施例的鎖服務器的結構示意圖。
[0050]圖8是本發(fā)明實施例的第二緩存節(jié)點的結構示意圖。
【具體實施方式】
[0051]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0052]圖1示出了分布式存儲系統(tǒng)的基本架構示意圖。分布式存儲系統(tǒng)可以包括多個主機、存儲子系統(tǒng)(即存儲器)和分布式鎖服務器(Distributed Loc