專利名稱:一種同步接口上數(shù)據(jù)的處理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種同步接口上數(shù)據(jù)的處理方法和系統(tǒng)。
背景技術(shù):
為了提高存儲網(wǎng)絡(luò)的可靠性,發(fā)展出了多個層次的高可用,其中集群高可用是為了解決節(jié)點的單點故障而發(fā)展起來的,但多個節(jié)點可能會同時訪問一個存儲設(shè)備。需要解決多個節(jié)點對單一存儲的一致訪問為題。在節(jié)點上配置緩存模塊就是為了解決數(shù)據(jù)訪問的
一致性。對一個存儲或存儲單元(如存儲池)同一時刻只有一個主節(jié)點可以訪問,其它節(jié)點對該存儲的訪問要轉(zhuǎn)發(fā)到存儲的主節(jié)點,由主節(jié)點發(fā)起I/o請求,然后將數(shù)據(jù)發(fā)送回給發(fā)起請求的節(jié)點。各節(jié)點的之間相互備份讀寫數(shù)據(jù)。緩存模塊需要包含存儲池用于緩存數(shù)據(jù),存儲池以頁為緩存單元,組織在哈希表中。對節(jié)點發(fā)送讀請求后,節(jié)點首先將數(shù)據(jù)從存儲讀到緩存的頁中,然后將頁中數(shù)據(jù)拷貝的用戶緩沖區(qū)。對節(jié)點的寫請求,節(jié)點將數(shù)據(jù)寫入緩存頁中,并返回。緩存模塊會有單獨(dú)的刷寫模塊將數(shù)據(jù)從緩存頁刷寫到存儲。在有些系統(tǒng)中對存儲的請求提供了異步讀接口,對存儲的讀寫請求完成后會調(diào)用之前注冊的回調(diào)函數(shù)。但有些系統(tǒng)并沒有提供合適的異步讀寫接口。
發(fā)明內(nèi)容
本發(fā)明提供一種同步接口上數(shù)據(jù)的處理方法,要解決的技術(shù)問題是如何實現(xiàn)在同步接口上實現(xiàn)異步工作。為解決上述技術(shù)問題,本發(fā)明提供了如下技術(shù)方案一種同步接口上數(shù)據(jù)的處理方法,包括在同步接口接收到數(shù)據(jù)處理的請求時,確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元;當(dāng)所述目標(biāo)緩存單元處于未被其他請求使用的狀態(tài)時,采用所述目標(biāo)緩存單元響應(yīng)所述請求。優(yōu)選的,所述方法還具有如下特點所述確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元是在檢測到所述請求所需使用的第一個緩存單元未被其他請求使用的狀態(tài)時進(jìn)行的。優(yōu)選的,所述方法還具有如下特點所述目標(biāo)緩存單元是否處于未被其他請求使用的狀態(tài)是根據(jù)所述目標(biāo)緩存單元上是否有鎖定標(biāo)記來確定的。優(yōu)選的,所述方法還具有如下特點所述方法還包括如果N個未處理的請求所要使用的目標(biāo)緩存單元能夠組連續(xù)的緩存空間,則將所述N個未處理的請求作為一個請求來處理,其中N為大于等于2的整數(shù)。一種同步接口上數(shù)據(jù)的處理系統(tǒng),包括
3
確定裝置,用于在接收到數(shù)據(jù)處理的請求時,確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元;響應(yīng)裝置,用于當(dāng)所述目標(biāo)緩存單元處于未被其他請求使用的狀態(tài)時,采用所述目標(biāo)緩存單元響應(yīng)所述請求。 優(yōu)選的,所述系統(tǒng)還具有如下特點所述確定裝置確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元是在檢測到所述請求所需使用的第一個緩存單元未被其他請求使用的狀態(tài)時進(jìn)行的。優(yōu)選的,所述系統(tǒng)還具有如下特點所述目標(biāo)緩存單元是否處于未被其他請求使用的狀態(tài)是根據(jù)所述目標(biāo)緩存單元上是否有鎖定標(biāo)記來確定的。優(yōu)選的,所述系統(tǒng)還具有如下特點所述響應(yīng)裝置,用于如果N個未處理的請求所要使用的目標(biāo)緩存單元能夠組連續(xù)的緩存空間,則將所述N個未處理的請求作為一個請求來處理,其中N為大于等于2的整數(shù)。與同步接口實現(xiàn)同步操作不同,在實現(xiàn)異步操作時,當(dāng)同步接口接收到請求后,確定所要使用的目標(biāo)緩存單元,在目標(biāo)緩存單元處于未被其他請求使用時再響應(yīng)該請求,實現(xiàn)了異步通信。
圖I為本發(fā)明提供的同步接口上數(shù)據(jù)的處理方法實施例的流程示意圖;圖2為本發(fā)明提供的同步接口上數(shù)據(jù)的處理方法應(yīng)用實例的流程示意圖;圖3為本發(fā)明提供的同步接口上數(shù)據(jù)的處理系統(tǒng)實施例的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。圖I為本發(fā)明提供的同步接口上數(shù)據(jù)的處理方法實施例的流程示意圖。圖I所示方法實施例包括步驟101和102,其中步驟101、在同步接口接收到數(shù)據(jù)處理的請求時,確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元;步驟102、當(dāng)所述目標(biāo)緩存單元處于未被其他請求使用的狀態(tài)時,采用所述目標(biāo)緩存單元響應(yīng)所述請求。與同步接口實現(xiàn)同步操作不同,在實現(xiàn)異步操作時,當(dāng)同步接口接收到請求后,確定所要使用的目標(biāo)緩存單元,在目標(biāo)緩存單元處于未被其他請求使用時再響應(yīng)該請求,實現(xiàn)了異步通信。優(yōu)選的,所述確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元是在檢測到所述請求所需使用的第一個緩存單元未被其他請求使用的狀態(tài)時進(jìn)行的。即使計算出該請求所對應(yīng)的目標(biāo)緩存單元,但是只要該請求所要使用的第一緩存單元不能調(diào)用,就不能進(jìn)行執(zhí)行后續(xù)流程。因此,為了將資源利用到快速處理能夠響應(yīng)的請求上,僅在第一緩存單元處于可用狀態(tài)時,才進(jìn)行后續(xù)處理。
其中,所述目標(biāo)緩存單元是否處于未被其他請求使用的狀態(tài)是根據(jù)所述目標(biāo)緩存單元上是否有鎖定標(biāo)記來確定的。具體來說,一個緩存單元如果被使用,該請求的線程會在緩存單元上增加一個鎖定標(biāo)記,當(dāng)該線程對該緩存單元的使用結(jié)束后,會解除對該緩存單元的鎖定,并喚醒其他要使用該緩存單元的其他線程。進(jìn)一步的,當(dāng)待處理的請求有多個時,如果多個請求所要使用的緩存單元是相鄰的,將相鄰請求的緩存單元合并為一個請求來處理。具體來說,如果第一請求所要使用的目標(biāo)緩存單元和第二請求所要使用的目標(biāo)緩存單元均處于未被其他請求使用的狀態(tài),且所述第一請求和第二請求所要使用的目標(biāo)緩存單元能組成一段連續(xù)的緩存空間,則將所述第一請求和第二請求作為一個請求來處理。舉例來說,一個存儲池中緩存單元按照從小到大的順序依次編號,一個請求所要使用的目標(biāo)緩存單元為編號I 3,另一個請求所要使用的目標(biāo)緩存單元為編號4和5,兩個請求所要使用的目標(biāo)緩存單元構(gòu)成一段連續(xù)的緩存空間,當(dāng)所述兩個請求所要使用的目標(biāo)緩存單元均處于能夠使用的狀態(tài)時,則將所述兩個請求作為一個請求處理,一次性進(jìn)行編號I 5的緩存單元的數(shù)據(jù)處理,將原本需要對兩個請求進(jìn)行讀操作,變成了僅需對一個請求進(jìn)行讀操作。當(dāng)然,同理,如果N個未處理的請求所要使用的目標(biāo)緩存單元能夠組連續(xù)的緩存空間,則將所述N個未處理的請求作為一個請求來處理,其中N為大于等于2的整數(shù),從而達(dá)到減少讀操作次數(shù)的效果。下面對本發(fā)明方法實施例作進(jìn)一步說明圖2為本發(fā)明提供的同步接口上數(shù)據(jù)的處理方法應(yīng)用實例的流程示意圖。圖2所示應(yīng)用實例包括步驟I 7,其中步驟I、根據(jù)接收的請求中數(shù)據(jù)的起始位置計算第一個緩存單元;例如,一個存儲池有編號I 10個緩存單元,其中每個緩存單元的容量相同,根據(jù)請求中數(shù)據(jù)的起始位置,確定從存儲池中編號為3的緩存單元開始讀取。步驟2、查找所述第一緩存單元是否能夠響應(yīng)該請求;具體來說,如果該第一緩存單元正在被響應(yīng)其他請求的數(shù)據(jù)讀/寫請求,則該第一緩存就不能響應(yīng)該請求,因此,只能等待正在使用該第一緩存單元的線程結(jié)束對該緩存單元的鎖定后,才可以使用。其中,如果該第一緩存單元上有鎖定標(biāo)記,則表示該緩存單元處于不可用狀態(tài),即無法響應(yīng)該請求,反之,如果該第一緩存單元沒有鎖定標(biāo)記,則表示處于能夠被調(diào)用的狀態(tài),能夠響應(yīng)該請求。如果能響應(yīng)該請求,則執(zhí)行步驟3 6 ;否則,執(zhí)行步驟2。步驟3、根據(jù)請求的數(shù)據(jù)的長度以及緩存單元的容量,計算所需使用的緩存單元的個數(shù)。仍以上文所舉例子進(jìn)行說明,根據(jù)所請求的數(shù)據(jù)量,可以確定要使用的緩存單元的個數(shù),如使用3個緩存單元。步驟4、根據(jù)第一緩存單元的位置以及所需使用的緩存單元的個數(shù),確定本次請求所使用的目標(biāo)緩存單元;
仍以上文所舉例子進(jìn)行說明,第一個緩存單元為編號為3的緩存單元,共需使用3個緩存單元,則響應(yīng)該請求所要使用的緩存單元為編號3 5的緩存單元,即目標(biāo)緩存單
J Li ο步驟5、判斷所述目標(biāo)緩存單元是否能夠響應(yīng)本次請求;舉例來說,如果目標(biāo)緩存單元(編號為3 5的緩存單元)都沒有鎖定標(biāo)記,則表示能夠響應(yīng)本次請求,否則,表示不能響應(yīng)本次請求。如果能夠響應(yīng)本次請求,則執(zhí)行步驟6 ;否則,執(zhí)行步驟5。步驟6、采用所述目標(biāo)緩存單元進(jìn)行數(shù)據(jù)處理。需要說明的是,當(dāng)有多個請求線程并發(fā)進(jìn)行時,也只有一個線程來進(jìn)行管理,多個請求將各自需要預(yù)處理的緩存單元放到同一個鏈表中,該線程讀需要處理所有請求中所請求的緩存單元。當(dāng)請求線程處理完第一個緩存單元后,將下一個要要處理的緩存單元作為第一個緩存單元進(jìn)行以上操作,直處理完所有請求。圖3為本發(fā)明提供的同步接口上數(shù)據(jù)的處理系統(tǒng)實施例的結(jié)構(gòu)示意圖。結(jié)合圖I和2所示的方法,圖3所示系統(tǒng)實施例包括確定裝置301,用于在接收到數(shù)據(jù)處理的請求時,確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元;響應(yīng)裝置302,用于當(dāng)所述目標(biāo)緩存單元處于未被其他請求使用的狀態(tài)時,采用所述目標(biāo)緩存單元響應(yīng)所述請求。其中,所述確定裝置301確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元是在檢測到所述請求所需使用的第一個緩存單元未被其他請求使用的狀態(tài)時進(jìn)行的。其中,所述目標(biāo)緩存單元是否處于未被其他請求使用的狀態(tài)是根據(jù)所述目標(biāo)緩存單元上是否有鎖定標(biāo)記來確定的。其中,所述響應(yīng)裝置,用于如果N個未處理的請求所要使用的目標(biāo)緩存單元能夠組連續(xù)的緩存空間,則將所述N個未處理的請求作為一個請求來處理,其中N為大于等于2的整數(shù)。與同步接口實現(xiàn)同步操作不同,在實現(xiàn)異步操作時,當(dāng)同步接口接收到請求后,確定所要使用的目標(biāo)緩存單元,在目標(biāo)緩存單元處于未被其他請求使用時再響應(yīng)該請求,實現(xiàn)了異步通信。以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求所述的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種同步接口上數(shù)據(jù)的處理方法,其特征在于,包括 在同步接口接收到數(shù)據(jù)處理的請求時,確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元; 當(dāng)所述目標(biāo)緩存單元處于未被其他請求使用的狀態(tài)時,采用所述目標(biāo)緩存單元響應(yīng)所述請求。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元是在檢測到所述請求所需使用的第一個緩存單元未被其他請求使用的狀態(tài)時進(jìn)行的。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述目標(biāo)緩存單元是否處于未被其他請求使用的狀態(tài)是根據(jù)所述目標(biāo)緩存單元上是否有鎖定標(biāo)記來確定的。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述方法還包括 如果N個未處理的請求所要使用的目標(biāo)緩存單元能夠組連續(xù)的緩存空間,則將所述N個未處理的請求作為一個請求來處理,其中N為大于等于2的整數(shù)。
5.一種同步接口上數(shù)據(jù)的處理系統(tǒng),其特征在于,包括 確定裝置,用于在接收到數(shù)據(jù)處理的請求時,確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元; 響應(yīng)裝置,用于當(dāng)所述目標(biāo)緩存單元處于未被其他請求使用的狀態(tài)時,采用所述目標(biāo)緩存單元響應(yīng)所述請求。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述確定裝置確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元是在檢測到所述請求所需使用的第一個緩存單元未被其他請求使用的狀態(tài)時進(jìn)行的。
7.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述目標(biāo)緩存單元是否處于未被其他請求使用的狀態(tài)是根據(jù)所述目標(biāo)緩存單元上是否有鎖定標(biāo)記來確定的。
8.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于 所述響應(yīng)裝置,用于如果N個未處理的請求所要使用的目標(biāo)緩存單元能夠組連續(xù)的緩存空間,則將所述N個未處理的請求作為一個請求來處理,其中N為大于等于2的整數(shù)。
全文摘要
本發(fā)明提供一種同步接口上數(shù)據(jù)的處理方法和系統(tǒng)。所述方法,包括在同步接口接收到數(shù)據(jù)處理的請求時,確定存儲池的緩存單元中該請求所要使用的目標(biāo)緩存單元;當(dāng)所述目標(biāo)緩存單元處于未被其他請求使用的狀態(tài)時,采用所述目標(biāo)緩存單元響應(yīng)所述請求。
文檔編號G06F9/54GK102929727SQ201210396198
公開日2013年2月13日 申請日期2012年10月18日 優(yōu)先權(quán)日2012年10月18日
發(fā)明者張在理, 王倩 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司