本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種業(yè)務(wù)請求的過濾方法、裝置及系統(tǒng)。
背景技術(shù):
在NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))內(nèi),節(jié)點之間可以共享文件資源,客戶端可以通過IP網(wǎng)絡(luò)在位于遠端的NFS節(jié)點上讀寫文件,就像訪問本地文件一樣。如圖1所示,任意一個客戶端,例如客戶端1,可以使用IP地址1向NFS內(nèi)相應(yīng)的節(jié)點,例如,節(jié)點A,發(fā)送業(yè)務(wù)請求,此時,節(jié)點A作為NFS的入口節(jié)點為客戶端1執(zhí)行該業(yè)務(wù)請求,例如,讀文件、寫文件或創(chuàng)建新文件等,最終節(jié)點A將執(zhí)行完成的業(yè)務(wù)響應(yīng)發(fā)送給客戶端1。
在實際操作中,可能因為網(wǎng)絡(luò)異常等原因?qū)е聵I(yè)務(wù)響應(yīng)發(fā)送失敗,此時,客戶端1可能會重復(fù)向節(jié)點A發(fā)送上述業(yè)務(wù)請求,為了避免節(jié)點A重復(fù)執(zhí)行相同的業(yè)務(wù)請求,可以在NFS內(nèi)的各節(jié)點中設(shè)置DRC(Duplicate Request Cache,重復(fù)請求緩存),在業(yè)務(wù)響應(yīng)成功發(fā)送給客戶端1之前,DRC內(nèi)緩存有該業(yè)務(wù)請求的標識,那么,當(dāng)節(jié)點A接收到標識相同的業(yè)務(wù)請求時,便可以直接將該業(yè)務(wù)請求丟棄。
然而,NFS內(nèi)的各節(jié)點可能會發(fā)生IP漂移現(xiàn)象,例如,當(dāng)節(jié)點A的負載過大時,可將原本歸屬于節(jié)點A的IP地址1漂移至節(jié)點B,此時,節(jié)點B同時具有IP地址1和IP地址2,當(dāng)客戶端1使用IP地址1發(fā)送業(yè)務(wù)請求時,可由節(jié)點B代理節(jié)點A執(zhí)行該業(yè)務(wù)請求。但是,由于節(jié)點B無法獲知節(jié)點A內(nèi)的DRC,因此,節(jié)點B不能確定客戶端1是否發(fā)送過相同的業(yè)務(wù)請求,只能將接收到的業(yè)務(wù)請求作為新的業(yè)務(wù)請求處理,導(dǎo)致重復(fù)執(zhí)行相同的業(yè)務(wù)請求。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例提供一種業(yè)務(wù)請求的過濾方法、裝置及系統(tǒng),可在發(fā)生IP漂移的場景下,為NFS內(nèi)的各節(jié)點過濾重復(fù)的業(yè)務(wù)請求。
為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
第一方面,本發(fā)明的實施例提供一種業(yè)務(wù)請求的過濾方法,包括:目標節(jié)點獲取客戶端發(fā)送的待執(zhí)行業(yè)務(wù)請求;進而,目標節(jié)點在分布式緩存中查找是否存在該待執(zhí)行業(yè)務(wù)請求的標識,該分布式緩存中記錄有N(N>1)個節(jié)點中每個節(jié)點已接收的業(yè)務(wù)請求的標識,而該目標節(jié)點為該N個節(jié)點中的任一個,這樣可以確定該待執(zhí)行業(yè)務(wù)請求是否被其他節(jié)點接收過;若存在該待執(zhí)行業(yè)務(wù)請求的標識,即說明N個節(jié)點中某個節(jié)點已接收到與該待執(zhí)行業(yè)務(wù)請求相同的業(yè)務(wù)請求,因此,為了避免重復(fù)執(zhí)行相同的業(yè)務(wù)請求,該目標節(jié)點可直接丟棄該待執(zhí)行業(yè)務(wù)請求。
在一種可能的實現(xiàn)方式中,由于任意節(jié)點在執(zhí)行一個業(yè)務(wù)請求時,可能包括正在執(zhí)行和執(zhí)行完成兩種執(zhí)行狀態(tài),那么,當(dāng)目標節(jié)點獲取到的待執(zhí)行業(yè)務(wù)請求為正在執(zhí)行的業(yè)務(wù)請求時,則無需重復(fù)執(zhí)行,因此,該分布式緩存中具體可記錄有:業(yè)務(wù)請求的標識與業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,該執(zhí)行狀態(tài)包括正在執(zhí)行和執(zhí)行完成;此時,上述若存在該待執(zhí)行業(yè)務(wù)請求的標識,則該目標節(jié)點丟棄該待執(zhí)行業(yè)務(wù)請求,包括:若存在該待執(zhí)行業(yè)務(wù)請求的標識,則該目標節(jié)點根據(jù)該待執(zhí)行業(yè)務(wù)請求的標識與待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,確定該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài);若該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行,則該目標節(jié)點丟棄該待執(zhí)行業(yè)務(wù)請求,以避免重復(fù)執(zhí)行相同的業(yè)務(wù)請求。
在一種可能的實現(xiàn)方式中,在該目標節(jié)點根據(jù)該待執(zhí)行業(yè)務(wù)請求的標識確定該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之后,還包括:若該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為執(zhí)行完成,則該目標節(jié)點丟棄該待執(zhí)行業(yè)務(wù)請求,并向該客戶端發(fā)送執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng);該目標節(jié)點在該分布式緩存中刪除該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,這樣,后續(xù)任意節(jié)點再次接收到該待執(zhí)行業(yè)務(wù)請求時,由于分布式緩存中已經(jīng)沒有該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,因此,節(jié)點可以繼續(xù)執(zhí)行該待執(zhí)行業(yè)務(wù)請求。
在一種可能的實現(xiàn)方式中,在該目標節(jié)點在分布式緩存中查找是否存在該待執(zhí)行業(yè)務(wù)請求的標識之后,還包括:若不存在該待執(zhí)行業(yè)務(wù)請求的標識,則該目標節(jié)點在該分布式緩存中建立該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行,這樣,后續(xù)任意節(jié)點接收到與該待執(zhí)行業(yè)務(wù)請求相同的業(yè)務(wù)請求時,可根據(jù)該業(yè)務(wù)請求的執(zhí)行狀態(tài)丟棄該業(yè)務(wù)請求。
由于任意節(jié)點在執(zhí)行一個業(yè)務(wù)請求時,可能包括正在執(zhí)行和執(zhí)行完成兩種執(zhí)行狀態(tài),那么,當(dāng)目標節(jié)點獲取到的待執(zhí)行業(yè)務(wù)請求為正在執(zhí)行的業(yè)務(wù)請求時,則無需重復(fù)執(zhí)行,因此,
在一種可能的實現(xiàn)方式中,在該目標節(jié)點在該分布式緩存中建立該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系之后,還包括:該目標節(jié)點執(zhí)行該待執(zhí)行業(yè)務(wù)請求;該目標節(jié)點向該客戶端發(fā)送執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng);該目標節(jié)點在該分布式緩存中刪除該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系。
在一種可能的實現(xiàn)方式中,在該目標節(jié)點向該客戶端發(fā)送執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)之后,還包括:若該業(yè)務(wù)響應(yīng)發(fā)送失敗,則該目標節(jié)點在該分布式緩存中將該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)修改為執(zhí)行完成,這樣,后續(xù)任意節(jié)點查詢到該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)修改為執(zhí)行完成時,便無需再次重復(fù)執(zhí)行該業(yè)務(wù)請求,并重新向客戶端發(fā)送執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)。
在一種可能的實現(xiàn)方式中,該目標節(jié)點在分布式緩存中查找是否存在該待執(zhí)行業(yè)務(wù)請求的標識,包括:該目標節(jié)點確定本地DRC中是否存在該待執(zhí)行業(yè)務(wù)請求的標識;該本地DRC內(nèi)僅緩存有目標節(jié)點已接收的業(yè)務(wù)請求的標識,若本地DRC中不存在該待執(zhí)行業(yè)務(wù)請求的標識,則該目標節(jié)點在該分布式緩存中查找是否存在該待執(zhí)行業(yè)務(wù)請求的標識。
在一種可能的實現(xiàn)方式中,在該目標節(jié)點確定本地重復(fù)請求緩存DRC中是否存在該待執(zhí)行業(yè)務(wù)請求的標識之后,還包括:若本地DRC中存在該待執(zhí)行業(yè)務(wù)請求的標識,則該目標節(jié)點丟棄該待執(zhí)行業(yè)務(wù)請求,由于本地DRC內(nèi)的數(shù)據(jù)量較小,因此,目標節(jié)點在本地DRC內(nèi)查找是否存在待執(zhí)行業(yè)務(wù)請求的標識的效率較高,當(dāng)本地DRC內(nèi)存在待執(zhí)行業(yè)務(wù)請求的標識時,目標節(jié)點可以直接丟棄該待執(zhí)行業(yè)務(wù)請求,從而提高丟棄重復(fù)業(yè)務(wù)請求的響應(yīng)速度。
第二方面,本發(fā)明的實施例提供一種節(jié)點,包括:獲取單元,用于獲取客戶端發(fā)送的待執(zhí)行業(yè)務(wù)請求;查找單元,用于在分布式緩存中查找是否存在該待執(zhí)行業(yè)務(wù)請求的標識,該分布式緩存中記錄有N個節(jié)點中每個節(jié)點已接收的業(yè)務(wù)請求的標識,N>1;過濾單元,用于若存在該待執(zhí)行業(yè)務(wù)請求的標識,則丟棄該待執(zhí)行業(yè)務(wù)請求。
在一種可能的實現(xiàn)方式中,該分布式緩存中包括業(yè)務(wù)請求的標識與業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,該執(zhí)行狀態(tài)包括正在執(zhí)行和執(zhí)行完成;該過濾單元,具體用于若存在該待執(zhí)行業(yè)務(wù)請求的標識,則根據(jù)該待執(zhí)行業(yè)務(wù)請求的標識確定該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài);若該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行,則丟棄該待執(zhí)行業(yè)務(wù)請求。
在一種可能的實現(xiàn)方式中,該節(jié)點還包括:發(fā)送單元,用于若該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為執(zhí)行完成,則向該客戶端發(fā)送執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng);刪除單元,用于在該分布式緩存中刪除該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系。
在一種可能的實現(xiàn)方式中,該節(jié)點還包括:建立單元,用于若不存在該待執(zhí)行業(yè)務(wù)請求的標識,則在該分布式緩存中建立該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行。
在一種可能的實現(xiàn)方式中,該節(jié)點還包括執(zhí)行單元,該執(zhí)行單元,用于執(zhí)行該待執(zhí)行業(yè)務(wù)請求;該發(fā)送單元,還用于向該客戶端發(fā)送執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng);該刪除單元,還用于在該分布式緩存中刪除該待執(zhí)行業(yè)務(wù)請求的標識與該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系。
在一種可能的實現(xiàn)方式中,該執(zhí)行單元,還用于若該業(yè)務(wù)響應(yīng)發(fā)送失敗,則在該分布式緩存中將該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)修改為執(zhí)行完成。
在一種可能的實現(xiàn)方式中,該查找單元,具體用于確定本地DRC中是否存在該待執(zhí)行業(yè)務(wù)請求的標識;若本地DRC中不存在該待執(zhí)行業(yè)務(wù)請求的標識,則在該分布式緩存中查找是否存在該待執(zhí)行業(yè)務(wù)請求的標識。
在一種可能的實現(xiàn)方式中,該過濾單元,還用于若本地DRC中存在該待執(zhí)行業(yè)務(wù)請求的標識,則丟棄該待執(zhí)行業(yè)務(wù)請求。
第三方面,本發(fā)明的實施例提供一種節(jié)點,包括:處理器、存儲器、總線和通信接口;該存儲器用于存儲計算機執(zhí)行指令,該處理器與該存儲器通過該總線連接,當(dāng)該節(jié)點運行時,該處理器執(zhí)行該存儲器存儲的該計算機執(zhí)行指令,以使該節(jié)點執(zhí)行上述任意一項業(yè)務(wù)請求的過濾方法。
第四方面,本發(fā)明的實施例提供一種業(yè)務(wù)請求的過濾系統(tǒng),包括N(N>1)個第二方面中任一項所述的節(jié)點,該N個節(jié)點內(nèi)建立有分布式緩存,該分布式緩存中記錄有N個節(jié)點中每個節(jié)點已接收的業(yè)務(wù)請求的標識。
第五方面,本發(fā)明實施例提供了一種計算機存儲介質(zhì),用于儲存為上述節(jié)點所用的計算機軟件指令,其包含用于執(zhí)行上述方面為該節(jié)點所設(shè)計的程序。
本發(fā)明中,上述節(jié)點以及過濾系統(tǒng)的名字對設(shè)備本身不構(gòu)成限定,在實際實現(xiàn)中,這些設(shè)備可以以其他名稱出現(xiàn)。只要各個設(shè)備的功能和本發(fā)明類似,即屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi)。
另外,第二方面至第五方面中任一種設(shè)計方式所帶來的技術(shù)效果可參見第一方面中不同設(shè)計方式所帶來的技術(shù)效果,此處不再贅述。
本發(fā)明的這些方面或其他方面在以下實施例的描述中會更加簡明易懂。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。
圖1為現(xiàn)有技術(shù)中NFS的應(yīng)用場景示意圖;
圖2為本發(fā)明實施例提供的一種業(yè)務(wù)請求的過濾系統(tǒng)的架構(gòu)示意圖一;
圖3為本發(fā)明實施例提供的一種業(yè)務(wù)請求的過濾系統(tǒng)的架構(gòu)示意圖二;
圖4為本發(fā)明實施例提供的一種業(yè)務(wù)請求的過濾方法的交互示意圖一;
圖5為本發(fā)明實施例提供的一種業(yè)務(wù)請求的過濾系統(tǒng)的架構(gòu)示意圖三;
圖6為本發(fā)明實施例提供的一種業(yè)務(wù)請求的過濾方法的交互示意圖二;
圖7為本發(fā)明實施例提供的一種節(jié)點的結(jié)構(gòu)示意圖一;
圖8為本發(fā)明實施例提供的一種節(jié)點的結(jié)構(gòu)示意圖二;
圖9為本發(fā)明實施例提供的一種節(jié)點的結(jié)構(gòu)示意圖三。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。
另外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括一個或者更多個該特征。在本發(fā)明的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。
本發(fā)明的實施例提供一種業(yè)務(wù)請求的過濾方法,可應(yīng)用在如圖2所示的業(yè)務(wù)請求的過濾系統(tǒng)(后續(xù)簡稱為過濾系統(tǒng))100中,其中,過濾系統(tǒng)100中包括N(N>1)個節(jié)點21,這N個節(jié)點21內(nèi)建立有分布式緩存22,該分布式緩存22中記錄有N個節(jié)點21中每個節(jié)點21已接收的業(yè)務(wù)請求的標識。
其中,分布式緩存22是指利用分布式存儲技術(shù),將緩存數(shù)據(jù)存儲在N個節(jié)點21內(nèi),使這些分散的存儲資源構(gòu)成一個虛擬的緩存存儲空間,各個節(jié)點21之間可以共享分布式緩存22內(nèi)的緩存數(shù)據(jù)。
在本發(fā)明實施例中,如圖3所示,當(dāng)任意節(jié)點21,例如,節(jié)點A,接收到客戶端1發(fā)送的一個新的業(yè)務(wù)請求時,可將該新的業(yè)務(wù)請求的標識存儲至分布式緩存22中,直至執(zhí)行完成該新的業(yè)務(wù)請求,并成功發(fā)送對該新的業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)至客戶端1之后,在分布式緩存22中刪除該新的業(yè)務(wù)請求的標識,也就是說,分布式緩存22中包含有每個節(jié)點21已接收的業(yè)務(wù)請求的標識,這些業(yè)務(wù)請求均為尚未成功向客戶端發(fā)送給業(yè)務(wù)響應(yīng)的業(yè)務(wù)請求,那么,當(dāng)節(jié)點A發(fā)生IP漂移現(xiàn)象,例如,節(jié)點A的IP地址1漂移到節(jié)點B時,客戶端1通過IP地址1可以向節(jié)點B發(fā)送業(yè)務(wù)請求,例如,待執(zhí)行業(yè)務(wù)請求,此時,節(jié)點B可以通過查詢分布式緩存22內(nèi)是否存有待執(zhí)行業(yè)務(wù)請求的標識,來確定該待執(zhí)行業(yè)務(wù)請求是否被其他節(jié)點接收過,當(dāng)分布式緩存22內(nèi)存有待執(zhí)行業(yè)務(wù)請求的標識時,即說明某個節(jié)點已接收到與待執(zhí)行業(yè)務(wù)請求相同的業(yè)務(wù)請求,如果節(jié)點B繼續(xù)執(zhí)行該待執(zhí)行業(yè)務(wù)請求,則會引起N個節(jié)點21內(nèi)的數(shù)據(jù)發(fā)生不一致的現(xiàn)象,甚至引起IO(Input/Output,輸入/輸出)操作失敗等錯誤,例如,節(jié)點A占用了相應(yīng)的IO資源刪除了一個文件,而節(jié)點B如果重復(fù)執(zhí)行該創(chuàng)建操作,即刪除一個節(jié)點A已經(jīng)刪除的不存在的文件,則會引起IO操作失敗,因此,為了避免重復(fù)執(zhí)行相同的業(yè)務(wù)請求,當(dāng)分布式緩存22內(nèi)存在待執(zhí)行業(yè)務(wù)請求的標識時,節(jié)點B可以直接丟棄該待執(zhí)行業(yè)務(wù)請求。
可以看出,本發(fā)明實施例中通過N個節(jié)點21內(nèi)的分布式緩存22來存儲每個節(jié)點21已接收的業(yè)務(wù)請求的標識,當(dāng)任意節(jié)點21發(fā)生IP漂移時,仍然能夠支持漂移后的節(jié)點21執(zhí)行類似于DRC機制的業(yè)務(wù)請求過濾過程,避免過濾系統(tǒng)100內(nèi)的各節(jié)點21由于重復(fù)執(zhí)行相同的業(yè)務(wù)請求,引起各節(jié)點21內(nèi)數(shù)據(jù)不一致甚至IO操作失敗等問題。
示例性的,上述過濾系統(tǒng)100具體可以為NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng)),過濾系統(tǒng)100內(nèi)的各節(jié)點21具體可以為NAS(Network Attached Storage,網(wǎng)絡(luò)附屬存儲)服務(wù)器等,本發(fā)明實施例對此不作任何限制。
以下,將以圖3中的節(jié)點B和節(jié)點A為例詳細闡述在IP漂移場景下,本發(fā)明的實施例提供的一種業(yè)務(wù)請求的過濾方法,如圖4所示,在發(fā)生IP漂移之前,該方法包括:
101、節(jié)點A獲取客戶端發(fā)送的待執(zhí)行業(yè)務(wù)請求。
102、節(jié)點A在分布式緩存中查找是否存在待執(zhí)行業(yè)務(wù)請求的標識,該分布式緩存中包括業(yè)務(wù)請求的標識與業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,該執(zhí)行狀態(tài)包括正在執(zhí)行和執(zhí)行完成。
103、若不存在待執(zhí)行業(yè)務(wù)請求的標識,則節(jié)點A在分布式緩存中建立待執(zhí)行業(yè)務(wù)請求的標識與待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,此時,待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行。
104、節(jié)點A執(zhí)行待執(zhí)行業(yè)務(wù)請求。
105、節(jié)點A向客戶端發(fā)送執(zhí)行完成待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)。
106、若業(yè)務(wù)響應(yīng)發(fā)送失敗,則節(jié)點A在分布式緩存中將待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)修改為執(zhí)行完成。
具體的,在發(fā)生IP漂移之前,客戶端向過濾系統(tǒng)100發(fā)送業(yè)務(wù)請求時,會默認與IP地址為IP地址1的節(jié)點A交互,因此,步驟101中,客戶端可以通過IP網(wǎng)絡(luò),發(fā)送待執(zhí)行業(yè)務(wù)請求至節(jié)點A,例如,該待執(zhí)行業(yè)務(wù)請求具體可以為寫數(shù)據(jù)、刪除一個文件,或創(chuàng)建一個新文件等。
那么,在步驟102中,節(jié)點A收到待執(zhí)行業(yè)務(wù)請求之后,可以在分布式緩存中查找是否存在待執(zhí)行業(yè)務(wù)請求的標識,從而確定該待執(zhí)行業(yè)務(wù)請求是否為重復(fù)的業(yè)務(wù)請求。
具體的,該分布式緩存中可以包括業(yè)務(wù)請求的標識與業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,其中,該執(zhí)行狀態(tài)包括正在執(zhí)行和執(zhí)行完成,例如,可以使用一個標志位來表示該執(zhí)行狀態(tài),當(dāng)標志位為1時,指示與該業(yè)務(wù)請求的標識對應(yīng)的業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行,當(dāng)標志位為0時,指示與該業(yè)務(wù)請求的標識對應(yīng)的業(yè)務(wù)請求的執(zhí)行狀態(tài)為執(zhí)行完成。
當(dāng)執(zhí)行狀態(tài)為正在執(zhí)行時,則說明過濾系統(tǒng)100中的某個節(jié)點已經(jīng)接收過相應(yīng)的業(yè)務(wù)請求,并且正在執(zhí)行該業(yè)務(wù)請求;當(dāng)執(zhí)行狀態(tài)為執(zhí)行完成時,則說明過濾系統(tǒng)100中的某個節(jié)點已經(jīng)接收過相應(yīng)的業(yè)務(wù)請求,并且已經(jīng)執(zhí)行完成該業(yè)務(wù)請求,例如,節(jié)點X已經(jīng)根據(jù)該業(yè)務(wù)請求創(chuàng)建了一個新文件,但是,執(zhí)行完成該業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)還沒有成功發(fā)送至客戶端,此時,可在分布式緩存中將該業(yè)務(wù)請求的執(zhí)行狀態(tài)修改為執(zhí)行完成。
進一步地,示例性的,如圖5所示,還可以在過濾系統(tǒng)100中的各個節(jié)點21內(nèi)保留原有的DRC,即本地DRC,以節(jié)點A為例,該本地DRC內(nèi)緩存有節(jié)點A已接收的業(yè)務(wù)請求的標識,那么,在步驟102中,節(jié)點A可以先在本地DRC內(nèi)查找是否存在待執(zhí)行業(yè)務(wù)請求的標識,如果本地DRC內(nèi)存在待執(zhí)行業(yè)務(wù)請求的標識,則說明節(jié)點A已經(jīng)接收過與待執(zhí)行業(yè)務(wù)請求相同的業(yè)務(wù)請求,此時,節(jié)點A可以直接丟棄該待執(zhí)行業(yè)務(wù)請求;如果本地DRC內(nèi)不存在待執(zhí)行業(yè)務(wù)請求的標識,則可繼續(xù)在分布式緩存22中查找是否存在待執(zhí)行業(yè)務(wù)請求的標識,從而確定是否有其他節(jié)點已接收過該待執(zhí)行業(yè)務(wù)請求。
其中,由于本地DRC內(nèi)的數(shù)據(jù)量較小,因此,節(jié)點A在本地DRC內(nèi)查找是否存在待執(zhí)行業(yè)務(wù)請求的標識的效率較高,當(dāng)本地DRC內(nèi)存在待執(zhí)行業(yè)務(wù)請求的標識時,節(jié)點A可以直接丟棄該待執(zhí)行業(yè)務(wù)請求,從而提高丟棄重復(fù)業(yè)務(wù)請求的響應(yīng)速度。
若分布式緩存中不存在待執(zhí)行業(yè)務(wù)請求的標識,則說明該待執(zhí)行業(yè)務(wù)請求為一個新的業(yè)務(wù)請求,那么,在步驟103中,節(jié)點A可以在分布式緩存中建立待執(zhí)行業(yè)務(wù)請求的標識與待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,此時,該待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行。
進而,在步驟104中,節(jié)點A可以執(zhí)行該待執(zhí)行業(yè)務(wù)請求。
需要說明的是,節(jié)點A可以同時執(zhí)行步驟103和104,也可以先執(zhí)行步驟103再執(zhí)行步驟104,或先執(zhí)行步驟104再執(zhí)行步驟103,本發(fā)明實施例對此不作任何限制。
執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求之后,節(jié)點A可以向客戶端發(fā)送執(zhí)行完成待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)。
此時,若該業(yè)務(wù)響應(yīng)成功發(fā)送至客戶端,則節(jié)點A可以在分布式緩存中刪除步驟103中建立的待執(zhí)行業(yè)務(wù)請求的標識與待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系。
若該業(yè)務(wù)響應(yīng)發(fā)送失敗,即客戶端沒有接收到該業(yè)務(wù)響應(yīng),那么客戶端可能會繼續(xù)發(fā)送相同的待執(zhí)行業(yè)務(wù)請求,此時,在步驟106中,節(jié)點A可以在分布式緩存中將待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)修改為執(zhí)行完成,這樣,一旦接收到相同的待執(zhí)行業(yè)務(wù)請求,節(jié)點A可以根據(jù)待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)確定待執(zhí)行業(yè)務(wù)請求已經(jīng)執(zhí)行完成,只需向客戶端再次發(fā)送該業(yè)務(wù)響應(yīng)即可。
進一步地,仍以圖3中的節(jié)點B和節(jié)點A為例,在上述步驟101-106的任意過程中,當(dāng)節(jié)點A的IP地址漂移到節(jié)點B之后,如圖6所示,該方法包括:
201、節(jié)點B獲取客戶端發(fā)送的待執(zhí)行業(yè)務(wù)請求。
202、節(jié)點B在分布式緩存中查找是否存在待執(zhí)行業(yè)務(wù)請求的標識,該分布式緩存中包括業(yè)務(wù)請求的標識與業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,該執(zhí)行狀態(tài)包括正在執(zhí)行和執(zhí)行完成。
203、若存在待執(zhí)行業(yè)務(wù)請求的標識,則節(jié)點B根據(jù)待執(zhí)行業(yè)務(wù)請求的標識確定待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)。
204a、若待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行,則節(jié)點B丟棄待執(zhí)行業(yè)務(wù)請求。
204b、若待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為執(zhí)行完成,則節(jié)點B向客戶端發(fā)送執(zhí)行完成待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)。
205b、節(jié)點B在分布式緩存中刪除待執(zhí)行業(yè)務(wù)請求的標識與待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系。
具體的,當(dāng)節(jié)點A的IP地址漂移到節(jié)點B之后,節(jié)點B同時具有原來節(jié)點A的IP地址1和自身原本的IP地址2,那么,原來與節(jié)點A交互的客戶端此時通過IP地址1與節(jié)點B交互,即步驟201,節(jié)點B獲取客戶端發(fā)送的待執(zhí)行業(yè)務(wù)請求。
由于節(jié)點B無法確定接收到的待執(zhí)行業(yè)務(wù)請求是否由節(jié)點A或自身接收過,因此,在步驟202中,節(jié)點B在分布式緩存中查找是否存在待執(zhí)行業(yè)務(wù)請求的標識,與步驟102中的分布式緩存類似的,該分布式緩存中包括業(yè)務(wù)請求的標識與業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,該執(zhí)行狀態(tài)包括正在執(zhí)行和執(zhí)行完成。
那么,在步驟203中,如果分布式緩存中存在待執(zhí)行業(yè)務(wù)請求的標識,則說明過濾系統(tǒng)100中已經(jīng)有節(jié)點接收過該待執(zhí)行業(yè)務(wù)請求,此時,節(jié)點B可以根據(jù)待執(zhí)行業(yè)務(wù)請求的標識與待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,確定待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)。
若待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行,則執(zhí)行上述步驟204a;若待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為執(zhí)行完成,則執(zhí)行上述步驟204b-205b。
具體的。在步驟204a中,如果待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行,則節(jié)點B可以直接丟棄該待執(zhí)行業(yè)務(wù)請求,從而避免重復(fù)執(zhí)行相同的業(yè)務(wù)請求。
例如,在節(jié)點A執(zhí)行上述步驟104時發(fā)生了IP漂移,那么,客戶端后續(xù)發(fā)送的待執(zhí)行業(yè)務(wù)請求由節(jié)點B接收,而此時,節(jié)點A仍然在執(zhí)行上述步驟104,即執(zhí)行該待執(zhí)行業(yè)務(wù)請求,那么,當(dāng)節(jié)點B在分布式緩存中確定待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為正在執(zhí)行時,可以直接丟棄該待執(zhí)行業(yè)務(wù)請求,而當(dāng)節(jié)點A執(zhí)行完成該待執(zhí)行業(yè)務(wù)請求后,會在分布式緩存中修改待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài),將待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)修改為執(zhí)行完成,此時,若節(jié)點B仍接收到客戶端發(fā)送的相同的業(yè)務(wù)請求(即待執(zhí)行業(yè)務(wù)請求),則節(jié)點B可以在分布式緩存中確定待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為執(zhí)行完成,進而執(zhí)行上述步驟204b。
具體的,在步驟204b中,如果待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)為執(zhí)行完成,那么,節(jié)點B也無需執(zhí)行該待執(zhí)行業(yè)務(wù)請求,而是可以直接丟棄該待執(zhí)行業(yè)務(wù)請求,并向客戶端發(fā)送執(zhí)行完成待執(zhí)行業(yè)務(wù)請求的業(yè)務(wù)響應(yīng)即可。
并且,當(dāng)上述業(yè)務(wù)響應(yīng)成功發(fā)送至客戶端后,在步驟205b中,節(jié)點B還需要在分布式緩存中刪除待執(zhí)行業(yè)務(wù)請求的標識與待執(zhí)行業(yè)務(wù)請求的執(zhí)行狀態(tài)之間的對應(yīng)關(guān)系,否則,當(dāng)過濾系統(tǒng)100中的任意節(jié)點再次接收到該待執(zhí)行業(yè)務(wù)請求時,會將該待執(zhí)行業(yè)務(wù)請求當(dāng)作重復(fù)的業(yè)務(wù)請求丟棄。
至此,本發(fā)明的實施例提供一種業(yè)務(wù)請求的過濾方法,其中,若目標節(jié)點(目標節(jié)點為過濾系統(tǒng)中N個節(jié)點中的任一個,N>1)獲取到客戶端發(fā)送的待執(zhí)行業(yè)務(wù)請求,則在分布式緩存中查找是否存在待執(zhí)行業(yè)務(wù)請求的標識,由于該分布式緩存中記錄有N個節(jié)點中每個節(jié)點已接收的業(yè)務(wù)請求的標識,因此,無論是否發(fā)生IP漂移,若存在待執(zhí)行業(yè)務(wù)請求的標識,則說明已經(jīng)有節(jié)點接收了該待執(zhí)行業(yè)務(wù)請求,因此,目標節(jié)點可直接丟棄待執(zhí)行業(yè)務(wù)請求,從而為過濾系統(tǒng)內(nèi)的各節(jié)點過濾重復(fù)的業(yè)務(wù)請求。
上述實施例主要從各個網(wǎng)元之間交互的角度對本發(fā)明實施例提供的方案進行了介紹??梢岳斫獾氖牵鱾€網(wǎng)元,例如節(jié)點21,為了實現(xiàn)上述功能,其包含了執(zhí)行各個功能相應(yīng)的硬件結(jié)構(gòu)和/或軟件模塊。本領(lǐng)域技術(shù)人員應(yīng)該很容易意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,本發(fā)明能夠以硬件或硬件和計算機軟件的結(jié)合形式來實現(xiàn)。某個功能究竟以硬件還是計算機軟件驅(qū)動硬件的方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
本發(fā)明實施例可以根據(jù)上述方法示例對節(jié)點21等進行功能模塊的劃分,例如,可以對應(yīng)各個功能劃分各個功能模塊,也可以將兩個或兩個以上的功能集成在一個處理模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。需要說明的是,本發(fā)明實施例中對模塊的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。
在采用對應(yīng)各個功能劃分各個功能模塊的情況下,圖7示出了上述實施例中所涉及的節(jié)點21的一種可能的結(jié)構(gòu)示意圖,節(jié)點21包括:獲取單元31、查找單元32、過濾單元33、發(fā)送單元34、刪除單元35、建立單元36、以及執(zhí)行單元37。獲取單元31用于支持節(jié)點21執(zhí)行圖4中的過程101和圖6中的過程201,查找單元32用于支持節(jié)點21執(zhí)行圖4中的過程102和圖6中的過程202;過濾單元33用于支持節(jié)點21執(zhí)行圖6中的過程203和204a;發(fā)送單元34用于支持節(jié)點21執(zhí)行圖4中的過程105;刪除單元35用于支持節(jié)點21執(zhí)行圖6中的過程205b;建立單元36用于支持節(jié)點21執(zhí)行圖4中的過程103;執(zhí)行單元37用于支持節(jié)點21執(zhí)行圖4中的過程104和106。其中,上述方法實施例涉及的各步驟的所有相關(guān)內(nèi)容均可以援引到對應(yīng)功能模塊的功能描述,在此不再贅述。
在采用集成的單元的情況下,圖8示出了上述實施例中所涉及的節(jié)點21的一種可能的結(jié)構(gòu)示意圖。節(jié)點21包括:處理模塊1302和通信模塊1303。處理模塊1302用于對節(jié)點21的動作進行控制管理,例如,處理模塊1302用于支持節(jié)點21執(zhí)行圖4中的過程101-106,圖6中的過程201-205b,和/或用于本文所描述的技術(shù)的其它過程。通信模塊1303用于支持節(jié)點21與其他網(wǎng)絡(luò)實體的通信,例如與圖1-圖3中示出的功能模塊或網(wǎng)絡(luò)實體之間的通信。節(jié)點21還可以包括存儲模塊1301,用于存儲節(jié)點21的程序代碼和數(shù)據(jù)。
其中,處理模塊1302可以是處理器或控制器,例如可以是中央處理器(Central Processing Unit,CPU),通用處理器,數(shù)字信號處理器(Digital Signal Processor,DSP),專用集成電路(Application-Specific Integrated Circuit,ASIC),現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)或者其他可編程邏輯器件、晶體管邏輯器件、硬件部件或者其任意組合。其可以實現(xiàn)或執(zhí)行結(jié)合本發(fā)明公開內(nèi)容所描述的各種示例性的邏輯方框,模塊和電路。所述處理器也可以是實現(xiàn)計算功能的組合,例如包含一個或多個微處理器組合,DSP和微處理器的組合等等。通信模塊1303可以是收發(fā)器、收發(fā)電路或通信接口等。存儲模塊1301可以是存儲器。
當(dāng)處理模塊1302為處理器,通信模塊1303為通信接口,存儲模塊1301為存儲器時,本發(fā)明實施例所涉及的節(jié)點可以為圖9所示的節(jié)點21。
參閱圖9所示,該節(jié)點21包括:處理器1312、通信接口1313、存儲器1311以及總線1314。其中,通信接口1313、處理器1312以及存儲器1311通過總線1314相互連接;總線1314可以是外設(shè)部件互連標準(Peripheral Component Interconnect,PCI)總線或擴展工業(yè)標準結(jié)構(gòu)(Extended Industry Standard Architecture,EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖9中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
結(jié)合本發(fā)明公開內(nèi)容所描述的方法或者算法的步驟可以硬件的方式來實現(xiàn),也可以是由處理器執(zhí)行軟件指令的方式來實現(xiàn)。軟件指令可以由相應(yīng)的軟件模塊組成,軟件模塊可以被存放于隨機存取存儲器(Random Access Memory,RAM)、閃存、只讀存儲器(Read Only Memory,ROM)、可擦除可編程只讀存儲器(Erasable Programmable ROM,EPROM)、電可擦可編程只讀存儲器(Electrically EPROM,EEPROM)、寄存器、硬盤、移動硬盤、只讀光盤(CD-ROM)或者本領(lǐng)域熟知的任何其它形式的存儲介質(zhì)中。一種示例性的存儲介質(zhì)耦合至處理器,從而使處理器能夠從該存儲介質(zhì)讀取信息,且可向該存儲介質(zhì)寫入信息。當(dāng)然,存儲介質(zhì)也可以是處理器的組成部分。處理器和存儲介質(zhì)可以位于ASIC中。另外,該ASIC可以位于核心網(wǎng)接口設(shè)備中。當(dāng)然,處理器和存儲介質(zhì)也可以作為分立組件存在于核心網(wǎng)接口設(shè)備中。
本領(lǐng)域技術(shù)人員應(yīng)該可以意識到,在上述一個或多個示例中,本發(fā)明所描述的功能可以用硬件、軟件、固件或它們的任意組合來實現(xiàn)。當(dāng)使用軟件實現(xiàn)時,可以將這些功能存儲在計算機可讀介質(zhì)中或者作為計算機可讀介質(zhì)上的一個或多個指令或代碼進行傳輸。計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì),其中通信介質(zhì)包括便于從一個地方向另一個地方傳送計算機程序的任何介質(zhì)。存儲介質(zhì)可以是通用或?qū)S糜嬎銠C能夠存取的任何可用介質(zhì)。
以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的技術(shù)方案的基礎(chǔ)之上,所做的任何修改、等同替換、改進等,均應(yīng)包括在本發(fā)明的保護范圍之內(nèi)。