標(biāo)識(shí);確定所述第一事件通知中的監(jiān)聽(tīng)掩碼和所述監(jiān)聽(tīng)器的屬性信息中的監(jiān)聽(tīng)掩碼匹配;
[0047]發(fā)送單元,用于向注冊(cè)所述監(jiān)聽(tīng)器的CA發(fā)送第二事件通知;所述第二事件通知包括所述第一目錄的標(biāo)識(shí)、所述監(jiān)聽(tīng)掩碼以及所述事件內(nèi)容。
[0048]本申請(qǐng)第六方面提供一種監(jiān)聽(tīng)器的處理裝置,包括:
[0049]接收單元,用于接收用于處理監(jiān)聽(tīng)器的第一消息,所述第一消息中攜帶監(jiān)聽(tīng)的目錄/文件以及監(jiān)聽(tīng)掩碼;其中,所述監(jiān)聽(tīng)掩碼用于表示監(jiān)聽(tīng)的事件類型;
[0050]處理單元,用于獲取所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí);根據(jù)所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí)在多個(gè)通知服務(wù)器NS中確定出本次處理的NS ;其中,所述多個(gè)NS的數(shù)量與所有裝置的數(shù)量相同;
[0051]發(fā)送單元,用于向確定出的所述本次處理的NS發(fā)送用于處理監(jiān)聽(tīng)器的第二消息,所述第二消息中攜帶所述裝置的標(biāo)識(shí)、所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí)以及所述監(jiān)聽(tīng)掩碼。
[0052]結(jié)合第六方面,在第六方面的第一種可能的實(shí)現(xiàn)方式中,所述發(fā)送單元還用于:向鎖服務(wù)器發(fā)送獲取所述監(jiān)聽(tīng)的目錄/文件的元數(shù)據(jù)的鎖的請(qǐng)求;以使所述鎖服務(wù)器根據(jù)所述請(qǐng)求通知其它CA所述元數(shù)據(jù)將要發(fā)生變化,所述其它CA中所述監(jiān)聽(tīng)的目錄/文件的節(jié)點(diǎn)信息vnode無(wú)效;
[0053]所述接收單元還用于:接收所述鎖服務(wù)器返回的拿鎖成功的消息。
[0054]結(jié)合第六方面或第六方面的第一種可能的實(shí)現(xiàn)方式,在第六方面的第二種可能的實(shí)現(xiàn)方式中,所述發(fā)送單元還用于:向元數(shù)據(jù)服務(wù)器MDS發(fā)送所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí)和所述監(jiān)聽(tīng)掩碼。
[0055]本申請(qǐng)第七方面提供一種客戶端,包括:
[0056]處理器,用于當(dāng)客戶端CA進(jìn)行使得目錄/文件發(fā)生變化的操作時(shí),確定所述目錄/文件的全路徑上的各級(jí)目錄的節(jié)點(diǎn)信息vnode是有效的;當(dāng)所述CA完成所述操作后,確定所述各級(jí)目錄的vnode中監(jiān)聽(tīng)器計(jì)數(shù)不為零的vnode所對(duì)應(yīng)的第一目錄;根據(jù)所述第一目錄的標(biāo)識(shí)在多個(gè)通知服務(wù)器NS中確定出所述第一目錄的監(jiān)聽(tīng)器所注冊(cè)的NS ;其中,所述多個(gè)NS的數(shù)量與所有CA的數(shù)量相同;所述所注冊(cè)的NS上保存有所述第一目錄的監(jiān)聽(tīng)器的屬性信息,所述屬性信息包括所述第一目錄的標(biāo)識(shí)、監(jiān)聽(tīng)掩碼與注冊(cè)所述監(jiān)聽(tīng)器的CA的標(biāo)識(shí);所述監(jiān)聽(tīng)掩碼用于表示監(jiān)聽(tīng)的事件類型;
[0057]發(fā)送器,用于向所述所注冊(cè)的NS發(fā)送事件通知,所述事件通知包括所述第一目錄的標(biāo)識(shí)、監(jiān)聽(tīng)掩碼以及與所述操作對(duì)應(yīng)的事件內(nèi)容;以使所述所注冊(cè)的NS能夠在所述事件通知中的監(jiān)聽(tīng)掩碼和所述屬性信息中的監(jiān)聽(tīng)掩碼匹配時(shí),向所述注冊(cè)所述監(jiān)聽(tīng)器的CA發(fā)送事件通知。
[0058]結(jié)合第七方面,在第七方面的第一種可能的實(shí)現(xiàn)方式中,所述處理器具體用于:當(dāng)所述各級(jí)目錄中的目錄存在vnode時(shí),查看所述vnode的標(biāo)記信息;
[0059]當(dāng)所述標(biāo)記信息表示所述vnode有效時(shí),確定所述vnode是有效的;
[0060]所述發(fā)送器還用于:當(dāng)所述標(biāo)記信息表示所述vnode無(wú)效時(shí),向元數(shù)據(jù)服務(wù)器MDS獲取所述無(wú)效的vnode所對(duì)應(yīng)的目錄的監(jiān)聽(tīng)器信息,所述處理器還用于根據(jù)所述監(jiān)聽(tīng)器信息更新所述無(wú)效的vnode信息為有效的vnode ;
[0061]所述發(fā)送器還用于當(dāng)所述各級(jí)目錄中的目錄不存在vnode時(shí),向元數(shù)據(jù)服務(wù)器MDS獲取所述不存在vnode的目錄的監(jiān)聽(tīng)器信息,所述處理器還用于根據(jù)所述監(jiān)聽(tīng)器信息創(chuàng)建所述目錄的vnode并設(shè)置為有效的vnode。
[0062]結(jié)合第七方面的第一種可能的實(shí)現(xiàn)方式中,在第七方面的第二種可能的實(shí)現(xiàn)方式中,所述客戶端還包括接收器,用于當(dāng)所述標(biāo)記信息表示所述vnode無(wú)效時(shí),在所述處理器查看所述vnode的標(biāo)記信息之前,接收鎖服務(wù)器發(fā)送的廣播消息,所述廣播消息用于通知所述CA所述無(wú)效的vnode所對(duì)應(yīng)的目錄的元數(shù)據(jù)將要發(fā)生變化;
[0063]所述處理器還用于:將所述目錄的vnode的標(biāo)記信息設(shè)置為表示所述目錄的vnode無(wú)效的信息。
[0064]本申請(qǐng)第八方面提供一種通知服務(wù)器,包括:
[0065]接收器,用于接收發(fā)送事件變化的CA發(fā)送的第一事件通知;所述第一事件通知包括第一目錄的標(biāo)識(shí)、監(jiān)聽(tīng)掩碼以及事件內(nèi)容;所述監(jiān)聽(tīng)掩碼用于表示監(jiān)聽(tīng)的事件類型;
[0066]處理器,用于根據(jù)所述第一目錄的標(biāo)識(shí)獲得注冊(cè)的用于監(jiān)聽(tīng)所述第一目錄的監(jiān)聽(tīng)器;所述監(jiān)聽(tīng)器的屬性信息包括所述第一目錄的標(biāo)識(shí)、監(jiān)聽(tīng)掩碼以及注冊(cè)所述監(jiān)聽(tīng)器的CA的標(biāo)識(shí);確定所述第一事件通知中的監(jiān)聽(tīng)掩碼和所述監(jiān)聽(tīng)器的屬性信息中的監(jiān)聽(tīng)掩碼匹配;
[0067]發(fā)送器,用于向注冊(cè)所述監(jiān)聽(tīng)器的CA發(fā)送第二事件通知;所述第二事件通知包括所述第一目錄的標(biāo)識(shí)、所述監(jiān)聽(tīng)掩碼以及所述事件內(nèi)容。
[0068]本申請(qǐng)第九方面提供一種客戶端CA,包括:
[0069]接收器,用于接收用于處理監(jiān)聽(tīng)器的第一消息,所述第一消息中攜帶監(jiān)聽(tīng)的目錄/文件以及監(jiān)聽(tīng)掩碼;其中,所述監(jiān)聽(tīng)掩碼用于表示監(jiān)聽(tīng)的事件類型;
[0070]處理器,用于獲取所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí);根據(jù)所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí)在多個(gè)通知服務(wù)器NS中確定出本次處理的NS ;其中,所述多個(gè)NS的數(shù)量與所有CA的數(shù)量相同;
[0071]發(fā)送器,用于向確定出的所述本次處理的NS發(fā)送用于處理監(jiān)聽(tīng)器的第二消息,所述第二消息中攜帶所述CA的標(biāo)識(shí)、所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí)以及所述監(jiān)聽(tīng)掩碼。
[0072]結(jié)合第九方面,在第九方面的第一種可能的實(shí)現(xiàn)方式中,所述發(fā)送器還用于:向鎖服務(wù)器發(fā)送獲取所述監(jiān)聽(tīng)的目錄/文件的元數(shù)據(jù)的鎖的請(qǐng)求;以使所述鎖服務(wù)器根據(jù)所述請(qǐng)求通知其它CA所述元數(shù)據(jù)將要發(fā)生變化,所述其它CA中所述監(jiān)聽(tīng)的目錄/文件的節(jié)點(diǎn)信息vnode無(wú)效;
[0073]所述接收器還用于:接收所述鎖服務(wù)器返回的拿鎖成功的消息。
[0074]結(jié)合第九方面或第九方面的第一種可能的實(shí)現(xiàn)方式,在第九方面的第二種可能的實(shí)現(xiàn)方式中,所述發(fā)送器還用于:向元數(shù)據(jù)服務(wù)器MDS發(fā)送所述監(jiān)聽(tīng)的目錄/文件的標(biāo)識(shí)和所述監(jiān)聽(tīng)掩碼。
[0075]本申請(qǐng)實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
[0076]在本申請(qǐng)實(shí)施例中,因?yàn)樵诎l(fā)生事件變化時(shí),CA可以根據(jù)發(fā)生事件變化的目錄/文件的全路徑上的各級(jí)目錄的vnode的監(jiān)聽(tīng)器計(jì)數(shù)快速得知各級(jí)目錄中哪個(gè)目錄注冊(cè)了監(jiān)聽(tīng)器,而無(wú)需像現(xiàn)有技術(shù)中那樣,由MDS逐級(jí)查詢各級(jí)目錄的Inode中是否注冊(cè)有監(jiān)聽(tīng)器,因?yàn)槊恳患?jí)目錄的Inode可能不在同一 MDS上,所以需要發(fā)送消息給其他MDS進(jìn)行查詢,因此,需要多次路由才能回溯到注冊(cè)了監(jiān)聽(tīng)器的父目錄。
【附圖說(shuō)明】
[0077]圖1a-圖1b為現(xiàn)有技術(shù)中監(jiān)聽(tīng)器的注冊(cè)方法和事件通知方法的流程圖;
[0078]圖2為現(xiàn)有技術(shù)中的目錄樹(shù)的示意圖;
[0079]圖3為本申請(qǐng)實(shí)施例提供的一種分布式文件系統(tǒng)的結(jié)構(gòu)圖;
[0080]圖4為本申請(qǐng)實(shí)施例提供的一種監(jiān)聽(tīng)器的處理方法的流程圖;
[0081]圖5為本申請(qǐng)實(shí)施例提供的一種監(jiān)聽(tīng)器的處理方法的進(jìn)一步流程圖;
[0082]圖6為本申請(qǐng)實(shí)施例提供的一種事件通知方法的流程圖;
[0083]圖7為本申請(qǐng)實(shí)施例提供的另一種事件通知方法的流程圖;
[0084]圖8為本申請(qǐng)實(shí)施例提供的一種目錄樹(shù)的示意圖;
[0085]圖9為本申請(qǐng)實(shí)施例提供的事件通知方法的實(shí)例示意圖;
[0086]圖10為本申請(qǐng)實(shí)施例提供的第一例的事件通知裝置的功能框圖;
[0087]圖11為本申請(qǐng)實(shí)施例提供的第一例的客戶端的系統(tǒng)框圖;
[0088]圖12為本申請(qǐng)實(shí)施例提供的第二例的事件通知裝置的功能框圖;
[0089]圖13為本申請(qǐng)實(shí)施例提供的NS的系統(tǒng)框圖;
[0090]圖14為本申請(qǐng)實(shí)施例提供的監(jiān)聽(tīng)器的處理裝置的功能框圖;
[0091]圖15為本申請(qǐng)實(shí)施例提供的第二例的客戶端的系統(tǒng)框圖。
【具體實(shí)施方式】
[0092]本申請(qǐng)實(shí)施例提供一種事件通知方法、監(jiān)聽(tīng)器的處理方法及裝置,用以解決現(xiàn)有技術(shù)中在事件通知時(shí)需要多次路由才能回溯到注冊(cè)了監(jiān)聽(tīng)器的父目錄的技術(shù)問(wèn)題。
[0093]本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。
[0094]為使本申請(qǐng)實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚地描述,顯然,所描述的實(shí)施例是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0095]首先請(qǐng)參考圖3所示,為本申請(qǐng)實(shí)施例提供的一種分布式文件系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖。如圖3所示,該系統(tǒng)包括多個(gè)客戶端(英文:Client Agent,簡(jiǎn)稱:CA),如圖3中的CA1、CA2和CA3。本實(shí)施例中的客戶端可以對(duì)外提供可移植操作系統(tǒng)接口(英文!PortableOperating System Interface,簡(jiǎn)稱:POSIX),上層可以對(duì)接連接式網(wǎng)絡(luò)存儲(chǔ)(英文:Network-Attached Storage,簡(jiǎn)稱:NAS)服務(wù)或者對(duì)接瘦客戶端。NAS擁有自己的文件系統(tǒng),可以通過(guò)網(wǎng)絡(luò)文件系統(tǒng)(英文:Network File System,簡(jiǎn)稱:NFS)或者公共互聯(lián)網(wǎng)文件系統(tǒng)(英文:Common Internet File System,簡(jiǎn)稱:CIFS)對(duì)外提供文件訪問(wèn)服務(wù)。圖3中的協(xié)議表示CIFS協(xié)議或者SMB協(xié)議。CA可以通過(guò)SMB協(xié)議或CIFS協(xié)議與其他網(wǎng)元進(jìn)行消息交互。
[0096]該系統(tǒng)還包括與多個(gè)客戶端數(shù)量相同的通知服務(wù)器(英文:Notify Server,簡(jiǎn)稱NS)jDNSl、NS2、NS3。NS是邏輯處理模塊,在物理上可以是與客戶端相互獨(dú)立的設(shè)備,也可以是每個(gè)CA的一部分,即NS集成在CA上。
[0097]進(jìn)一步,注冊(cè)的監(jiān)聽(tīng)器信息也可以保存在元數(shù)據(jù)服務(wù)器(英文:MetadataService,簡(jiǎn)稱:MDS)上,通常是由CA將監(jiān)聽(tīng)的目錄/文件對(duì)應(yīng)的監(jiān)聽(tīng)器信息發(fā)送給監(jiān)聽(tīng)的目錄/文件所在的主MDS。在監(jiān)聽(tīng)器存續(xù)期間,MDS將永久保存監(jiān)聽(tīng)器信息。這部分將在下文進(jìn)行詳細(xì)描述。
[0098]在如圖3所示的分布式文件系統(tǒng)中,CA會(huì)根據(jù)需要監(jiān)聽(tīng)的目錄/事件的標(biāo)識(shí)來(lái)確定本次處理的NS,然后向確定的本次處理的NS發(fā)送處理消息。而NS則保存哪些CA處理了監(jiān)聽(tīng)器。以下將詳細(xì)描述監(jiān)聽(tīng)器的處理過(guò)程。其中,處理包括注冊(cè)監(jiān)聽(tīng)器、修改監(jiān)聽(tīng)器、注銷監(jiān)聽(tīng)器等。
[0099]請(qǐng)一并參考圖4所示,為本申請(qǐng)實(shí)施例提供的一種監(jiān)聽(tīng)器的處理方法的流程圖,該方法包括以下內(nèi)容:
[0100