欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法及其系統(tǒng)的制作方法

文檔序號(hào):7764639閱讀:274來(lái)源:國(guó)知局

專利名稱::一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及互聯(lián)網(wǎng)信息發(fā)布/訂閱系統(tǒng)中如何組織參與實(shí)體和維護(hù)拓?fù)涞募夹g(shù)以及訂閱和通知的路由技術(shù),尤其涉及一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法及其系統(tǒng),屬于事件驅(qū)動(dòng)系統(tǒng)
技術(shù)領(lǐng)域
。
背景技術(shù)
:網(wǎng)絡(luò)對(duì)現(xiàn)代計(jì)算機(jī)系統(tǒng)的發(fā)展的影響越來(lái)越大,但是網(wǎng)絡(luò)互連系統(tǒng)日漸增加的連通性和規(guī)模也帶來(lái)了一系列的問(wèn)題。就建立和維護(hù)這些系統(tǒng)而言,一個(gè)關(guān)鍵而又基本的要求是要有可擴(kuò)展的通信機(jī)制。這種機(jī)制不僅需要可以支持大量的組件,還要有能力面對(duì)動(dòng)態(tài)的且經(jīng)常發(fā)生變化的復(fù)雜的應(yīng)用環(huán)境。另外一個(gè)需要考慮的重要方面是數(shù)據(jù)處理的自動(dòng)化。傳統(tǒng)上的系統(tǒng)一般被設(shè)計(jì)成用來(lái)響應(yīng)用戶交互式的要求,而為了改善系統(tǒng)的功能性和實(shí)用性,就應(yīng)該提供更為自主的數(shù)據(jù)處理能力?!爸虚g件”的引入,方便了那些處在異構(gòu)網(wǎng)絡(luò)的分布計(jì)算環(huán)境中的實(shí)體之間的通信。中間件是額外添加的一個(gè)位于各個(gè)節(jié)點(diǎn)的操作系統(tǒng)和一個(gè)分布式應(yīng)用軟件之間的一層軟件。它的作用在于處理通信上的問(wèn)題和試圖給具體應(yīng)用展現(xiàn)一個(gè)統(tǒng)一的關(guān)于底層世界的視圖。因此,中間件技術(shù)被廣泛運(yùn)用,并且被證明為是對(duì)異構(gòu)環(huán)境的一種成功的抽象,這就方便了人們?cè)O(shè)計(jì)和實(shí)現(xiàn)復(fù)雜的分布式系統(tǒng)。在處理數(shù)據(jù)和服務(wù)的傳遞時(shí),那些動(dòng)態(tài)的聯(lián)網(wǎng)環(huán)境的變化性和數(shù)據(jù)交換的自動(dòng)化把人們的注意力從一個(gè)靜態(tài)的世界轉(zhuǎn)到一個(gè)處在多變狀態(tài)的世界中。習(xí)慣上,中間件把數(shù)據(jù)和服務(wù)看成是靜態(tài)地存在于一些對(duì)象或者數(shù)據(jù)庫(kù)中,并且使用直接針對(duì)它們的“請(qǐng)求/應(yīng)答”的交互模式來(lái)查詢。這個(gè)概念導(dǎo)致客戶機(jī)/服務(wù)器(C/S)中間件架構(gòu)的產(chǎn)生,這種架構(gòu)強(qiáng)調(diào)功能上的顯示授權(quán),系統(tǒng)的組件通過(guò)訪問(wèn)遠(yuǎn)程功能來(lái)滿足它們的需要,遠(yuǎn)程過(guò)程調(diào)用協(xié)議(RPC)和使用簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)發(fā)送請(qǐng)求的WebService即是其中的例子。然而,在動(dòng)態(tài)的聯(lián)網(wǎng)系統(tǒng)中,“請(qǐng)求/應(yīng)答”的通信模式存在嚴(yán)重的束縛??蛻舳撕头?wù)器端之間直接的并且經(jīng)常的同步通信給雙方造成了緊密的耦合度,并且削弱了伸縮性??蛻舳溯喸冞h(yuǎn)端的數(shù)據(jù)源,他們就得用資源的使用來(lái)交換數(shù)據(jù)的正確性。短的輪詢間隔帶來(lái)的不必要的請(qǐng)求會(huì)浪費(fèi)資源,而長(zhǎng)的間隔會(huì)增加更新的延遲。另外,“請(qǐng)求/應(yīng)答”約束了系統(tǒng)的發(fā)展。控制流被編碼在應(yīng)用組件當(dāng)中,這樣做雖然方便工程師使用,卻也把系統(tǒng)的實(shí)際配置和各個(gè)組件的應(yīng)用邏輯混雜在一起。因此,通過(guò)在運(yùn)行時(shí)調(diào)整應(yīng)用組件來(lái)協(xié)調(diào)整個(gè)系統(tǒng)的能力受到了限制,結(jié)果,授權(quán)方法不可避免地意味著是對(duì)所使用的服務(wù)及其存在的一種功能依賴。在基于事件的交互模式下,組件通過(guò)產(chǎn)生和接受事件通知來(lái)通信,其中事件是任意感興趣的發(fā)生的事,比如某個(gè)組件的狀態(tài)改變,被影響的組件發(fā)布通知描述事件。一個(gè)事件通知服務(wù)或者說(shuō)“發(fā)布/訂閱”中間件調(diào)解基于事件系統(tǒng)中的組件,并且把通知從生產(chǎn)者(發(fā)布者)傳遞到先前發(fā)布訂閱注冊(cè)他們興趣的消費(fèi)者(訂閱者)?;谑录捏w系結(jié)構(gòu)風(fēng)格的強(qiáng)大之處在于,發(fā)布出來(lái)的通知和訂閱都沒(méi)有直接針對(duì)特定的組件。這種通知服務(wù)對(duì)組件進(jìn)行了解耦,于是生產(chǎn)者無(wú)需知道任何消費(fèi)者,而消費(fèi)者只是依賴發(fā)布的信息,而不關(guān)心它是由誰(shuí)或者從哪里發(fā)布的?;谑录慕M件不是設(shè)計(jì)用來(lái)和別的某些組件一道工作,這樣就利于把通信從計(jì)算分離。基于事件的風(fēng)格具有整合自主異構(gòu)組件到復(fù)雜系統(tǒng)中的潛力,而這樣的系統(tǒng)易于進(jìn)化和擴(kuò)展。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法及其系統(tǒng),用于解決集群架構(gòu)的發(fā)布/訂閱系統(tǒng)中,當(dāng)節(jié)點(diǎn)失效時(shí)如何保證其他節(jié)點(diǎn)正常運(yùn)行,以及通過(guò)設(shè)計(jì)合適的路由算法減輕根節(jié)點(diǎn)負(fù)擔(dān)的問(wèn)題。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的系統(tǒng),該系統(tǒng)包括客戶端、發(fā)布/訂閱代理模塊、集群代表、管理者和樹(shù)狀拓?fù)?;其中客戶端,用于向發(fā)布/訂閱模塊發(fā)送訂閱消息和通知消息,即參與發(fā)布/訂閱的用戶;客戶端通過(guò)JMS和發(fā)布/訂閱模塊相連,發(fā)送基于主題的訂閱或者基于主題的通知,這些消息的格式必須符合WSN標(biāo)準(zhǔn),以便發(fā)布/訂閱模塊進(jìn)行處理;發(fā)布/訂閱代理模塊是該系統(tǒng)的核心部分,其進(jìn)一步分為兩個(gè)模塊,分別為數(shù)據(jù)模塊和路由模塊;所述數(shù)據(jù)模塊用于和客戶端交互,而路由模塊負(fù)責(zé)和其他代理交互;集群代表是對(duì)代理進(jìn)行組織的一種方法,它把位于同一個(gè)局域網(wǎng)內(nèi)的代理組成一個(gè)集群,集群內(nèi)部的代理通過(guò)組播的形式進(jìn)行通信;集群中有一個(gè)代理作為集群的代表和別的集群進(jìn)行通信;集群的代表是自動(dòng)選擇的,當(dāng)代表掉線之時(shí),代理之間可以通過(guò)“心跳”檢測(cè)發(fā)現(xiàn)代表丟失,并使用重選的機(jī)制保證集群內(nèi)產(chǎn)生一個(gè)新的代表;管理者負(fù)責(zé)記錄集群的信息;當(dāng)有集群產(chǎn)生時(shí),集群會(huì)向管理者發(fā)送注冊(cè)請(qǐng)求,管理者便在此時(shí)記錄下該集群的信息;同時(shí)當(dāng)集群變換代表時(shí),管理者也會(huì)收到相應(yīng)的更改消息,并做出相應(yīng)的修改;管理者的另外一個(gè)作用是標(biāo)志當(dāng)前的根節(jié)點(diǎn),以便新集群加入到拓?fù)渲?;?shù)狀拓?fù)涞?,用于維護(hù)集群的組織和訂閱的轉(zhuǎn)發(fā)功能;管理者將集群組織成樹(shù)的形式,每當(dāng)有集群產(chǎn)生時(shí),便返回根節(jié)點(diǎn)供其插入;當(dāng)有集群丟失時(shí),該節(jié)點(diǎn)的父節(jié)點(diǎn)和孩子節(jié)點(diǎn)會(huì)進(jìn)行相應(yīng)的處理,保證集群都處在同一課樹(shù)中;集群之間轉(zhuǎn)發(fā)訂閱消息,便通過(guò)將訂閱發(fā)送給自己的父節(jié)點(diǎn)和孩子節(jié)點(diǎn),并由他們繼續(xù)傳播,直到每個(gè)集群都收到。其中,所述數(shù)據(jù)模塊是基于krviceMix的WSN組件構(gòu)造的,它其負(fù)責(zé)接收處理來(lái)自客戶端的訂閱和通知消息,所述WSN組件用于處理本地的發(fā)布/訂閱請(qǐng)求,同時(shí)數(shù)據(jù)模塊將這些消息轉(zhuǎn)交給路由模塊,并接收由路由模塊發(fā)來(lái)的通知,將其轉(zhuǎn)發(fā)給相應(yīng)的客戶端;所述路由模塊負(fù)責(zé)把獲取的訂閱信息記錄到訂閱表,維護(hù)和本代理相連的代理的信息,并將訂閱和通知轉(zhuǎn)發(fā)給其他代理,當(dāng)有通知匹配本地的訂閱時(shí)轉(zhuǎn)交給數(shù)據(jù)模塊。其中,所述集群中的代理位于同一個(gè)局域網(wǎng)內(nèi),并由一個(gè)代理作為代表和別的集群通信;該集群中的代理通過(guò)“心跳”檢測(cè)來(lái)發(fā)現(xiàn)對(duì)方是否掉線,如果代表掉線,則啟動(dòng)一個(gè)重選代表的操作。所述管理者獨(dú)立于各個(gè)集群,負(fù)責(zé)接收集群的注冊(cè)消息并維護(hù)集群的基本信息以及標(biāo)識(shí)根節(jié)點(diǎn);同時(shí),在集群需要加入時(shí)返回根節(jié)點(diǎn)的地址;而當(dāng)集群代表改變時(shí),根據(jù)該5集群發(fā)送的消息更新本地的信息。所述樹(shù)狀拓?fù)?,它既是把多個(gè)集群聯(lián)系在一起的結(jié)構(gòu),也是訂閱信息轉(zhuǎn)發(fā)的路徑;該拓?fù)渚哂凶耘渲玫哪芰Γ从晒?jié)點(diǎn)丟失時(shí),能夠保證該節(jié)點(diǎn)的子節(jié)點(diǎn)重新加入到拓?fù)渲?。一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法,該方法包括A、對(duì)參與發(fā)布/訂閱的代理按所處的局域網(wǎng)進(jìn)行劃分,將處在同一網(wǎng)絡(luò)中的代理主機(jī)劃分成一個(gè)個(gè)集群,并為集群取名,集群內(nèi)的代理通過(guò)組播的方式進(jìn)行訂閱和通知的轉(zhuǎn)發(fā),集群之間通過(guò)集群代表進(jìn)行通信,并構(gòu)成一棵樹(shù)的拓?fù)湫问?,集群之間的轉(zhuǎn)發(fā)訂閱則通過(guò)這棵樹(shù)來(lái)進(jìn)行,而轉(zhuǎn)發(fā)通知?jiǎng)t根據(jù)通知的轉(zhuǎn)發(fā)樹(shù)進(jìn)行,并由一個(gè)獨(dú)立的管理者進(jìn)行集群信息的維護(hù);B、當(dāng)集群中的代表丟失,則啟動(dòng)重選的機(jī)制從剩下的代理中選一個(gè)新代表;如果新代表無(wú)法選出,則意味著該集群整體丟失,這會(huì)破壞樹(shù)的拓?fù)浣Y(jié)構(gòu),于是要對(duì)失效節(jié)點(diǎn)的孩子節(jié)點(diǎn)進(jìn)行處理,使其能夠重新加入到拓?fù)渲?;C、當(dāng)客戶端有訂閱產(chǎn)生時(shí),它把訂閱交給和自己相連的代理,代理收到訂閱后先保存在本地,再在集群中組播,其他代理收到后也保存起來(lái);當(dāng)代表收到訂閱消息后則通過(guò)當(dāng)前的樹(shù)狀拓?fù)鋵⒅D(zhuǎn)發(fā)給自己的鄰居集群,鄰居集群再轉(zhuǎn)發(fā)給它的鄰居集群直至所有集群都保存有別的集群的訂閱信息;集群代表收到來(lái)自別的集群的訂閱將之在集群中組播;D、當(dāng)客戶端有通知產(chǎn)生時(shí),它把通知交給和自己相連的代理,代理收到通知后檢查訂閱表看是否有該通知的訂閱,如有則在集群中組播;集群中其他代理收到通知后查看訂閱表,如有訂閱則轉(zhuǎn)發(fā)給相應(yīng)的客戶端,若是集群代表,則還要查看別的集群是否有此通知的訂閱,如有,則為該通知的訂閱者構(gòu)造一棵以自己為根的轉(zhuǎn)發(fā)樹(shù)并將通知轉(zhuǎn)發(fā)出去。其包含基于負(fù)載均衡的通知的路由算法,具體為通知不基于樹(shù)狀拓?fù)溥M(jìn)行轉(zhuǎn)發(fā),而是根據(jù)訂閱者的信息為每個(gè)主題的通知構(gòu)造一個(gè)轉(zhuǎn)發(fā)樹(shù),只把通知轉(zhuǎn)發(fā)給轉(zhuǎn)發(fā)樹(shù)中屬于自己的孩子節(jié)點(diǎn),再由孩子節(jié)點(diǎn)轉(zhuǎn)發(fā)給他們的孩子節(jié)點(diǎn),直至所有訂閱者都收到該通知。本發(fā)明所提供的大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法及其系統(tǒng),具有以下優(yōu)點(diǎn)利用本發(fā)明的系統(tǒng)結(jié)構(gòu),能夠解決當(dāng)當(dāng)節(jié)點(diǎn)失效時(shí)如何保證其他節(jié)點(diǎn)正常運(yùn)行的問(wèn)題的解決辦法,以及設(shè)計(jì)了合適的路由算法減輕根節(jié)點(diǎn)的負(fù)載問(wèn)題,能夠?qū)崿F(xiàn)訂閱和通知的高效的路由,具有配置簡(jiǎn)單、可擴(kuò)展性強(qiáng)以及負(fù)載均衡等優(yōu)點(diǎn)。圖1為本發(fā)明實(shí)時(shí)統(tǒng)一消息空間系統(tǒng)的集群架構(gòu)示意圖;圖2為本發(fā)明實(shí)時(shí)統(tǒng)一消息空間系統(tǒng)的模塊劃分示意圖3為所述集群內(nèi)部代理主機(jī)之間的拓?fù)浣Y(jié)構(gòu)圖;圖4為代理主機(jī)啟動(dòng)時(shí)的基本流程圖;圖5為“心跳”檢測(cè)模塊的結(jié)構(gòu)示意圖;圖6為集群內(nèi)部普通代理丟失時(shí)的處理流程圖;圖7為集群的代表主機(jī)丟失時(shí)的流程圖;圖8為一個(gè)新的集群加入到已有拓?fù)涞倪^(guò)程示意圖;圖9為鄰居集群心跳停止時(shí)的處理流程圖;圖10圖12為訂閱的路由示意圖;圖13圖14為通知的路由示意圖。具體實(shí)施例方式下面結(jié)合附圖及本發(fā)明的實(shí)施例對(duì)本發(fā)明的方法及系統(tǒng)作進(jìn)一步詳細(xì)的說(shuō)明。本發(fā)明的基本思想是將網(wǎng)絡(luò)中的代理主機(jī)劃分成一個(gè)個(gè)集群,集群內(nèi)的代理通過(guò)組播的方式進(jìn)行訂閱和通知的轉(zhuǎn)發(fā),集群之間通過(guò)集群代表進(jìn)行通信,并構(gòu)成一棵樹(shù)的拓?fù)湫问?,集群之間的轉(zhuǎn)發(fā)訂閱則通過(guò)這棵樹(shù)來(lái)進(jìn)行,而轉(zhuǎn)發(fā)通知?jiǎng)t根據(jù)通知的轉(zhuǎn)發(fā)樹(shù)進(jìn)行,并由一個(gè)獨(dú)立的管理者進(jìn)行集群信息的維護(hù)。圖1為本發(fā)明實(shí)時(shí)統(tǒng)一消息空間系統(tǒng)的集群架構(gòu)示意圖,如圖1所示的本發(fā)明的系統(tǒng)的總體結(jié)構(gòu)。這里,首先對(duì)本發(fā)明的原理做一概括闡述??蛻舳伺c代理通過(guò)JMSCJavaMessagingService)相連,通過(guò)代理進(jìn)行發(fā)布/訂閱的操作;而處在同一個(gè)局域網(wǎng)的代理組成一個(gè)集群,并選擇一個(gè)代理作為集群的代表,各個(gè)代理之間通過(guò)組播相互通信;集群之間通過(guò)代表用點(diǎn)對(duì)點(diǎn)的方式進(jìn)行通信;管理者維護(hù)集群的基本信息,并引導(dǎo)集群形成一棵樹(shù),即每當(dāng)有新的節(jié)點(diǎn)要求加入時(shí)返回根節(jié)點(diǎn)供其請(qǐng)求插入,管理者維護(hù)這棵樹(shù)的信息。圖2為本發(fā)明實(shí)時(shí)統(tǒng)一消息空間系統(tǒng)的模塊劃分示意圖,如圖2所示,代理的職責(zé)主要是處理來(lái)自客戶端的訂閱請(qǐng)求和發(fā)布請(qǐng)求,以及接收并處理由其他代理轉(zhuǎn)發(fā)過(guò)來(lái)的訂閱和通知消息;所述代理根據(jù)消息的類型進(jìn)行相關(guān)的操作,包括保存訂閱信息,轉(zhuǎn)發(fā)通知,通知客戶端等。于是,本發(fā)明的實(shí)時(shí)統(tǒng)一消息空間系統(tǒng)可分為兩個(gè)模塊數(shù)據(jù)模塊和路由模塊。其中所述數(shù)據(jù)模塊使用到了開(kāi)源項(xiàng)目krviceMix的WSN組件(WSN為基于主題的發(fā)布/訂閱的一個(gè)標(biāo)準(zhǔn),ServiceMix中的WSN組件實(shí)現(xiàn)了該標(biāo)準(zhǔn)的發(fā)布/訂閱功能);客戶端通過(guò)JMS和Web服務(wù)通知(WSN)建立連接,并通過(guò)JMS將訂閱請(qǐng)求和發(fā)布請(qǐng)求告訴系統(tǒng),當(dāng)系統(tǒng)收到與客戶端的訂閱匹配的通知時(shí),也是通過(guò)JMS將通知交給客戶端;數(shù)據(jù)模塊還負(fù)責(zé)訂閱消息和通知消息的發(fā)送與接收。所述路由模塊主要通過(guò)表的形式維護(hù)系統(tǒng)接收到的訂閱信息(無(wú)論是來(lái)自客戶端的還是來(lái)自別的代理的),并在系統(tǒng)收到通知時(shí)(無(wú)論是客戶端發(fā)布的還是來(lái)自別的代理的)根據(jù)訂閱表路由這些通知。該路由模塊還有一個(gè)“心跳檢測(cè)”子模塊,它的功能在于通過(guò)發(fā)送“心跳”消息來(lái)檢測(cè)和自己相連的代理是否還存在,并根據(jù)存在與否進(jìn)行相關(guān)的處理;訂閱表子模塊通過(guò)JDBC和數(shù)據(jù)庫(kù)相連,完成訂閱信息的持久化。圖3為所述集群內(nèi)部代理主機(jī)之間的拓?fù)浣Y(jié)構(gòu)圖,如圖3所示,處在同一個(gè)局域網(wǎng)的代理可以組成一個(gè)集群或多個(gè)集群,但某一時(shí)刻一個(gè)代理只能處在一個(gè)集群之中,集群應(yīng)有一個(gè)名字用以標(biāo)識(shí)自己。集群通過(guò)代理和別的集群進(jìn)行通信,即集群可以抽象為一個(gè)代理主機(jī),而這個(gè)主機(jī)就是集群的代表,于是代表必須維護(hù)當(dāng)前集群中其他代理的信息,這通過(guò)發(fā)送“心跳”消息來(lái)實(shí)現(xiàn),即普通代理向代表定時(shí)發(fā)送“心跳”消息以表明自己的存在,代表也向其他代理定時(shí)發(fā)送“心跳”消息以表明自己的存在。于是從代表管理集群內(nèi)部代理的角度看,這是一個(gè)星型的拓?fù)洹D4為代理主機(jī)啟動(dòng)時(shí)的基本流程圖,如圖4所示,當(dāng)代理啟動(dòng)時(shí),通過(guò)默認(rèn)的組播地址在局域網(wǎng)中組播加入請(qǐng)求,這個(gè)請(qǐng)求應(yīng)該包含它所要加入的集群的名字,然后等待響應(yīng)。當(dāng)有代表收到加入請(qǐng)求時(shí),它首先對(duì)請(qǐng)求中的名字和自己的名字進(jìn)行匹配,若兩者一致且允許加入(即當(dāng)前集群內(nèi)的代理數(shù)量尚未超過(guò)預(yù)設(shè)的值),則記錄該新代理的信息,再為其分配一個(gè)唯一的ID值,并返回加入成功的響應(yīng)消息,該消息應(yīng)包括新代理的ID和已存在的代理的ID,同時(shí)發(fā)送消息通知?jiǎng)e的代理記錄新代理的ID值。若新代理收到響應(yīng)消息,則解析該消息,若為加入成功,則記下ID值,完成加入的操作;若不成功,則應(yīng)該換一個(gè)集群然后執(zhí)行加入操作,或者等待一段時(shí)間后再加入。若新代理超時(shí)未收到響應(yīng)消息,則可認(rèn)為局域網(wǎng)內(nèi)沒(méi)有該名字的集群,于是它應(yīng)該向管理者發(fā)送創(chuàng)建集群的消息。管理者收到集群的創(chuàng)建消息時(shí),解析出新集群的名字,并根據(jù)已有的集群信息查詢是否已存在這樣的集群名,若無(wú),則記錄下該集群的信息并返回創(chuàng)建成功的響應(yīng)消息;若有,則返回集群名已存在的響應(yīng)消息。代理收到響應(yīng)消息時(shí),解析其內(nèi)容,如果加入成功,則加入完成,同時(shí)自己為新集群的代表;如果不成功,則更改名字再次發(fā)送加入請(qǐng)求。圖5為“心跳”檢測(cè)模塊的結(jié)構(gòu)示意圖,如圖5所示,“心跳”檢測(cè)模塊是本發(fā)明系統(tǒng)的重要組成部分,系統(tǒng)要求在邏輯上相鄰的代理之間通過(guò)發(fā)送“心跳”消息來(lái)告訴對(duì)方自己是否失效,當(dāng)失效時(shí)進(jìn)行相應(yīng)的處理,從而維護(hù)整個(gè)系統(tǒng)的結(jié)構(gòu)。其中,還包括一張“心跳”信息表,一個(gè)發(fā)送線程,一個(gè)接收線程,一個(gè)掃描線程和一個(gè)失效處理過(guò)程?!靶奶毙畔⒈碛脕?lái)保存系統(tǒng)接收到的“心跳”信息——每收到一條“心跳”消息即更新相應(yīng)的表項(xiàng);對(duì)于普通的代理,它的“心跳”信息表只需保存集群代表的“心跳”信息,而集群代表的“心跳”信息表則需要保存集群內(nèi)部其他代理的“心跳”信息和相鄰集群的代表的“心跳”信息。發(fā)送線程定時(shí)發(fā)送“心跳”消息,而掃描線程則定時(shí)掃描“心跳”信息表,當(dāng)發(fā)現(xiàn)某個(gè)“心跳”超時(shí)時(shí),則要對(duì)該代理進(jìn)行失效處理。圖6為集群內(nèi)部普通代理丟失時(shí)的處理流程圖,如圖6所示,當(dāng)集群內(nèi)的普通代理掉線時(shí),集群代表將其從“心跳”信息表中刪除,表明該代理已不存在,然后刪除之前記錄下的關(guān)于該主機(jī)的信息,如果該主機(jī)有訂閱也一并刪除,同時(shí)通知集群內(nèi)的別的代理刪除其訂閱,若刪除訂閱導(dǎo)致某個(gè)主題的訂閱者為空,代表則需要通知鄰居集群刪除本集群關(guān)于該主題的訂閱。圖7為集群的代表主機(jī)丟失時(shí)的流程圖,如圖7所示,本發(fā)明的系統(tǒng)配特點(diǎn)還體現(xiàn)在當(dāng)集群內(nèi)的代表掉線時(shí),其他代理可以啟動(dòng)一個(gè)重選的機(jī)制來(lái)保證集群之中總是擁有一個(gè)代表;并且,當(dāng)集群丟失時(shí),它的孩子集群可以通過(guò)加入的操作來(lái)重新加入到拓?fù)渲?,保證正常的運(yùn)行。當(dāng)集群內(nèi)的代表掉線時(shí),則需要為集群重選一個(gè)代表。首先,集群內(nèi)的其他代理刪除代表的訂閱信息,然后將本代理的ID和集群內(nèi)其他代理的ID進(jìn)行比較,如果本代理的ID值是最小的,則它將作為新的集群代表,新代表確認(rèn)后在集群中組播“心跳”消息,并恢復(fù)訂閱表,然后通知管理者和鄰居集群本集群的代表已變更,要求它們更新集群信息;如果本代理的ID值不是最小的,它應(yīng)該等待新代表的“心跳”消息,若超時(shí)未收到,則刪除當(dāng)前最小的ID值并重新進(jìn)行比較,若收到則意味著新代表已選出,完成重選。圖8為一個(gè)新的集群加入到已有拓?fù)涞倪^(guò)程示意圖,如圖8所示,新集群產(chǎn)生時(shí),它需要加入到已存在的拓?fù)渲?,即它?yīng)該在樹(shù)中找到一個(gè)節(jié)點(diǎn)并插入。如前所述,管理者會(huì)為新集群返回創(chuàng)建成功的消息,這條消息應(yīng)該包括當(dāng)前根節(jié)點(diǎn)的地址,若當(dāng)前沒(méi)有其他集群,根節(jié)點(diǎn)的地址設(shè)為空,并標(biāo)識(shí)該新集群為根節(jié)點(diǎn)。新集群收到該消息時(shí)解析出根節(jié)點(diǎn)的地址,若根節(jié)點(diǎn)地址為空,則說(shuō)明自己是當(dāng)前拓?fù)渲形ㄒ坏墓?jié)點(diǎn),于是無(wú)需做任何操作;若根節(jié)點(diǎn)不為空,則將它設(shè)為目標(biāo)節(jié)點(diǎn),并發(fā)送插入請(qǐng)求,然后等待響應(yīng)。目標(biāo)節(jié)點(diǎn)收到插入請(qǐng)求后檢查當(dāng)前的孩子數(shù)量是否超過(guò)預(yù)設(shè)值,若未超過(guò),則返回插入成功的響應(yīng);若已超過(guò),則返回其中一個(gè)孩子節(jié)點(diǎn)的地址供其繼續(xù)插入。新集群收到響應(yīng)時(shí)判斷是否插入成功,若成功則將該目標(biāo)節(jié)點(diǎn)設(shè)為自己的父節(jié)點(diǎn);若不成功,則將返回的孩子節(jié)點(diǎn)設(shè)為目標(biāo)節(jié)點(diǎn)再發(fā)送插入請(qǐng)求。圖9為鄰居集群心跳停止時(shí)的處理流程圖,如圖9所示,當(dāng)發(fā)現(xiàn)某個(gè)集群的“心跳”信息超時(shí)時(shí),應(yīng)該啟動(dòng)一個(gè)計(jì)時(shí)器等待對(duì)方重選代表。如果代表重選成功,本集群會(huì)再次收到它的“心跳”消息;如果計(jì)時(shí)器超時(shí)未收到“心跳”消息,則可認(rèn)為該集群丟失了。當(dāng)集群丟失時(shí),首先應(yīng)該取消該集群的訂閱,并在樹(shù)中轉(zhuǎn)發(fā)這個(gè)消息;然后判斷本集群丟失的集群是否為自己的孩子節(jié)點(diǎn),若是,則發(fā)送消息通知管理者該節(jié)點(diǎn)已丟失,管理者收到該消息則刪除相應(yīng)的集群信息;若不是自己的孩子節(jié)點(diǎn),則進(jìn)一步判斷該丟失集群是否為根節(jié)點(diǎn),若否,則使用圖8所示的加入方法重新加入拓?fù)?;若根?jié)點(diǎn),則要發(fā)送消息通知管理者根節(jié)點(diǎn)丟失了,管理者因此會(huì)收到根節(jié)點(diǎn)的孩子節(jié)點(diǎn)的消息,于是管理者把最先達(dá)到的該消息的發(fā)送者定為新的根節(jié)點(diǎn)并返回響應(yīng),而對(duì)后到的發(fā)送者則返回新的根節(jié)點(diǎn)的地址供其插入。圖10圖12為訂閱的路由示意圖。訂閱信息是以訂閱表的形式保存的,每個(gè)節(jié)點(diǎn)根據(jù)自己的角色維護(hù)不同的訂閱表,但總的來(lái)說(shuō)訂閱表有三種客戶端的訂閱表(clients_table)、代理的訂閱表(brokers_table)和集群的訂閱表(groups_table)。其中,普通的代理維護(hù)前兩種訂閱表,而集群代表則三種訂閱表都要維護(hù)。這三種訂閱表記錄的內(nèi)容顧名思義,下面舉例說(shuō)明當(dāng)客戶端有訂閱產(chǎn)生時(shí),訂閱的路由和各訂閱表的變化。假設(shè)當(dāng)前的拓?fù)渲杏?個(gè)集群,分別為“集群a”、“集群b”、“集群C”和“集群d”,如圖10所示,其中“集群C”為根節(jié)點(diǎn),“集群a”有3個(gè)代理,“集群b”有兩個(gè)代理,“集群C”和“集群d”都只有一個(gè)代理,每個(gè)代理都和一個(gè)客戶端相連(代表的客戶端未畫(huà)出)。開(kāi)始時(shí),所有訂閱表都為空,此時(shí),“集群a”的“客戶端1”向它的代理提交了主題為χ的訂閱,“集群a”的代理“代理1”收到該訂閱消息之后將它記錄到自己的clientsjable之中,并在集群內(nèi)組播這條訂閱消息;“集群a”的“代理2”和“代理3”收到該訂閱消息時(shí),將它記錄到各自的brokentable中;因?yàn)椤按?”是集群的代表,所以它還要把該訂閱轉(zhuǎn)發(fā)到鄰居集群中去;于是“集群c”的代表會(huì)收到該訂閱,它把該訂閱記錄到它的groupsjable中,再將之轉(zhuǎn)發(fā)到鄰居;同樣的,“集群b”和“集群d”都會(huì)收到并記錄;當(dāng)“集群b”的代表收到訂閱時(shí),將它在集群中組播,那么“集群b”的“代理1”會(huì)收到該訂閱并進(jìn)行記錄。一次訂閱傳播的過(guò)程完成,如圖11所示。同理,當(dāng)“集群b”的“客戶端1”向它的代理提交主題為y的訂閱時(shí),訂閱也如前述的路由方式進(jìn)行,各個(gè)表的變化和訂閱消息的路徑如圖12所示。事實(shí)上,代表在集群中組播的訂閱可能有兩種一為來(lái)自其客戶端的,一為來(lái)自其他集群的,為了能夠在代表丟失時(shí)恢復(fù)出其他集群的訂閱信息,應(yīng)該對(duì)這兩種訂閱進(jìn)行區(qū)分。圖13圖14為通知的路由示意圖。當(dāng)主機(jī)有通知產(chǎn)生時(shí),它先檢查自己的c1ients_tab1e,如有訂閱則轉(zhuǎn)發(fā)到相應(yīng)的客戶端上;再檢查brokers_tab1e,如有訂閱則在集群內(nèi)組播該通知。當(dāng)主機(jī)收到通知時(shí),它檢查自己的clientsjable,如有訂閱則轉(zhuǎn)發(fā)到相應(yīng)的客戶端上;若自己為集群代表,則還要檢查groupsjable,如有訂閱則需轉(zhuǎn)發(fā)給其他集群。通知轉(zhuǎn)發(fā)給其他集群主要通過(guò)為訂閱了該主題的訂閱者構(gòu)造一棵轉(zhuǎn)發(fā)樹(shù)來(lái)進(jìn)行,方法如下節(jié)點(diǎn)收到訂閱時(shí)應(yīng)該按照一個(gè)統(tǒng)一的標(biāo)準(zhǔn)對(duì)其進(jìn)行排序,比如按訂閱者名稱的字母序排序,即為每個(gè)訂閱者賦予一個(gè)下標(biāo),因?yàn)槊總€(gè)節(jié)點(diǎn)都保存其他節(jié)點(diǎn)的訂閱信息,所以這個(gè)排序結(jié)果是一致的;當(dāng)通知從某個(gè)節(jié)點(diǎn)轉(zhuǎn)發(fā)時(shí),它把通知傳給下標(biāo)靠前的X個(gè)訂閱者,并帶上X這個(gè)信息;當(dāng)訂閱者收到通知和X時(shí),再根據(jù)自己的下標(biāo)值計(jì)算出它應(yīng)該轉(zhuǎn)發(fā)的訂閱者的下標(biāo)值,并轉(zhuǎn)發(fā)出去。假設(shè)某個(gè)時(shí)刻,在如圖13所示的樹(shù)中,節(jié)點(diǎn)E產(chǎn)生了某個(gè)主題的通知,而此時(shí)有A、B、C、H和I五個(gè)節(jié)點(diǎn)訂閱了該主題,即通知需轉(zhuǎn)發(fā)到這五個(gè)節(jié)點(diǎn)上。如前所述,根據(jù)名稱先對(duì)訂閱者進(jìn)行排序,得如下的結(jié)果權(quán)利要求1.一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的系統(tǒng),其特征在于,該系統(tǒng)包括客戶端、發(fā)布/訂閱代理模塊、集群代表、管理者和樹(shù)狀拓?fù)洌黄渲锌蛻舳?,用于向發(fā)布/訂閱模塊發(fā)送訂閱消息和通知消息,即參與發(fā)布/訂閱的用戶;客戶端通過(guò)JMS和發(fā)布/訂閱模塊相連,發(fā)送基于主題的訂閱或者基于主題的通知,這些消息的格式必須符合WSN標(biāo)準(zhǔn),以便發(fā)布/訂閱模塊進(jìn)行處理;發(fā)布/訂閱代理模塊是該系統(tǒng)的核心部分,其進(jìn)一步分為兩個(gè)模塊,分別為數(shù)據(jù)模塊和路由模塊;所述數(shù)據(jù)模塊用于和客戶端交互,而路由模塊負(fù)責(zé)和其他代理交互;集群代表是對(duì)代理進(jìn)行組織的一種方法,它把位于同一個(gè)局域網(wǎng)內(nèi)的代理組成一個(gè)集群,集群內(nèi)部的代理通過(guò)組播的形式進(jìn)行通信;集群中有一個(gè)代理作為集群的代表和別的集群進(jìn)行通信;集群的代表是自動(dòng)選擇的,當(dāng)代表掉線之時(shí),代理之間可以通過(guò)“心跳”檢測(cè)發(fā)現(xiàn)代表丟失,并使用重選的機(jī)制保證集群內(nèi)產(chǎn)生一個(gè)新的代表;管理者負(fù)責(zé)記錄集群的信息;當(dāng)有集群產(chǎn)生時(shí),集群會(huì)向管理者發(fā)送注冊(cè)請(qǐng)求,管理者便在此時(shí)記錄下該集群的信息;同時(shí)當(dāng)集群變換代表時(shí),管理者也會(huì)收到相應(yīng)的更改消息,并做出相應(yīng)的修改;管理者的另外一個(gè)作用是標(biāo)志當(dāng)前的根節(jié)點(diǎn),以便新集群加入到拓?fù)渲?;?shù)狀拓?fù)涞?,用于維護(hù)集群的組織和訂閱的轉(zhuǎn)發(fā)功能;管理者將集群組織成樹(shù)的形式,每當(dāng)有集群產(chǎn)生時(shí),便返回根節(jié)點(diǎn)供其插入;當(dāng)有集群丟失時(shí),該節(jié)點(diǎn)的父節(jié)點(diǎn)和孩子節(jié)點(diǎn)會(huì)進(jìn)行相應(yīng)的處理,保證集群都處在同一課樹(shù)中;集群之間轉(zhuǎn)發(fā)訂閱消息,便通過(guò)將訂閱發(fā)送給自己的父節(jié)點(diǎn)和孩子節(jié)點(diǎn),并由他們繼續(xù)傳播,直到每個(gè)集群都收到。2.根據(jù)權(quán)利1所述的大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的系統(tǒng),其特征在于,所述數(shù)據(jù)模塊是基于krviceMix的WSN組件構(gòu)造的,它其負(fù)責(zé)接收處理來(lái)自客戶端的訂閱和通知消息,所述WSN組件用于處理本地的發(fā)布/訂閱請(qǐng)求,同時(shí)數(shù)據(jù)模塊將這些消息轉(zhuǎn)交給路由模塊,并接收由路由模塊發(fā)來(lái)的通知,將其轉(zhuǎn)發(fā)給相應(yīng)的客戶端;所述路由模塊負(fù)責(zé)把獲取的訂閱信息記錄到訂閱表,維護(hù)和本代理相連的代理的信息,并將訂閱和通知轉(zhuǎn)發(fā)給其他代理,當(dāng)有通知匹配本地的訂閱時(shí)轉(zhuǎn)交給數(shù)據(jù)模塊。3..根據(jù)權(quán)利1中所述的大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的系統(tǒng),其特征在于,所述集群中的代理位于同一個(gè)局域網(wǎng)內(nèi),并由一個(gè)代理作為代表和別的集群通信;該集群中的代理通過(guò)“心跳”檢測(cè)來(lái)發(fā)現(xiàn)對(duì)方是否掉線,如果代表掉線,則啟動(dòng)一個(gè)重選代表的操作。4.根據(jù)權(quán)利1中所述的大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的系統(tǒng),其特征在于,所述管理者獨(dú)立于各個(gè)集群,負(fù)責(zé)接收集群的注冊(cè)消息并維護(hù)集群的基本信息以及標(biāo)識(shí)根節(jié)點(diǎn);同時(shí),在集群需要加入時(shí)返回根節(jié)點(diǎn)的地址;而當(dāng)集群代表改變時(shí),根據(jù)該集群發(fā)送的消息更新本地的信息。5.根據(jù)權(quán)利1中所述的大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的系統(tǒng),其特征在于,所述樹(shù)狀拓?fù)?,它既是把多個(gè)集群聯(lián)系在一起的結(jié)構(gòu),也是訂閱信息轉(zhuǎn)發(fā)的路徑;該拓?fù)渚哂凶耘渲玫哪芰?,即由?jié)點(diǎn)丟失時(shí),能夠保證該節(jié)點(diǎn)的子節(jié)點(diǎn)重新加入到拓?fù)渲小?.一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法,其特征在于,該方法包括A、對(duì)參與發(fā)布/訂閱的代理按所處的局域網(wǎng)進(jìn)行劃分,將處在同一網(wǎng)絡(luò)中的代理主機(jī)劃分成一個(gè)個(gè)集群,并為集群取名,集群內(nèi)的代理通過(guò)組播的方式進(jìn)行訂閱和通知的轉(zhuǎn)發(fā),集群之間通過(guò)集群代表進(jìn)行通信,并構(gòu)成一棵樹(shù)的拓?fù)湫问?,集群之間的轉(zhuǎn)發(fā)訂閱則通過(guò)這棵樹(shù)來(lái)進(jìn)行,而轉(zhuǎn)發(fā)通知?jiǎng)t根據(jù)通知的轉(zhuǎn)發(fā)樹(shù)進(jìn)行,并由一個(gè)獨(dú)立的管理者進(jìn)行集群信息的維護(hù);B、當(dāng)集群中的代表丟失,則啟動(dòng)重選的機(jī)制從剩下的代理中選一個(gè)新代表;如果新代表無(wú)法選出,則意味著該集群整體丟失,這會(huì)破壞樹(shù)的拓?fù)浣Y(jié)構(gòu),于是要對(duì)失效節(jié)點(diǎn)的孩子節(jié)點(diǎn)進(jìn)行處理,使其能夠重新加入到拓?fù)渲?;C、當(dāng)客戶端有訂閱產(chǎn)生時(shí),它把訂閱交給和自己相連的代理,代理收到訂閱后先保存在本地,再在集群中組播,其他代理收到后也保存起來(lái);當(dāng)代表收到訂閱消息后則通過(guò)當(dāng)前的樹(shù)狀拓?fù)鋵⒅D(zhuǎn)發(fā)給自己的鄰居集群,鄰居集群再轉(zhuǎn)發(fā)給它的鄰居集群直至所有集群都保存有別的集群的訂閱信息;集群代表收到來(lái)自別的集群的訂閱將之在集群中組播;D、當(dāng)客戶端有通知產(chǎn)生時(shí),它把通知交給和自己相連的代理,代理收到通知后檢查訂閱表看是否有該通知的訂閱,如有則在集群中組播;集群中其他代理收到通知后查看訂閱表,如有訂閱則轉(zhuǎn)發(fā)給相應(yīng)的客戶端,若是集群代表,則還要查看別的集群是否有此通知的訂閱,如有,則為該通知的訂閱者構(gòu)造一棵以自己為根的轉(zhuǎn)發(fā)樹(shù)并將通知轉(zhuǎn)發(fā)出去。7.根據(jù)權(quán)利要求6所述的大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法,其特征在于,其包含基于負(fù)載均衡的通知的路由算法,具體為通知不基于樹(shù)狀拓?fù)溥M(jìn)行轉(zhuǎn)發(fā),而是根據(jù)訂閱者的信息為每個(gè)主題的通知構(gòu)造一個(gè)轉(zhuǎn)發(fā)樹(shù),只把通知轉(zhuǎn)發(fā)給轉(zhuǎn)發(fā)樹(shù)中屬于自己的孩子節(jié)點(diǎn),再由孩子節(jié)點(diǎn)轉(zhuǎn)發(fā)給他們的孩子節(jié)點(diǎn),直至所有訂閱者都收到該通知。全文摘要本發(fā)明公開(kāi)了一種大規(guī)模實(shí)時(shí)統(tǒng)一消息空間的方法及其系統(tǒng),該系統(tǒng)基于集群技術(shù),具有自配置能力和負(fù)載均衡的發(fā)布/訂閱功能,該系統(tǒng)建立在以集群為單位的系統(tǒng)架構(gòu)上,集群架構(gòu)將參與發(fā)布/訂閱的代理主機(jī)劃分在一個(gè)個(gè)集群之中,集群之間組織成樹(shù)的形式進(jìn)行管理,并通過(guò)集群的代表進(jìn)行交互。系統(tǒng)包括客戶端、路由模塊、數(shù)據(jù)模塊和管理者模塊。其中路由模塊負(fù)責(zé)管理路由信息,維護(hù)訂閱表;數(shù)據(jù)模塊負(fù)責(zé)接收來(lái)自客戶端的訂閱和通知,并進(jìn)行消息的發(fā)送和接收;管理者模塊負(fù)責(zé)維護(hù)由集群形成的樹(shù)狀拓?fù)?。利用本發(fā)明能夠?qū)崿F(xiàn)訂閱和通知的高效路由,具有配置簡(jiǎn)單、可擴(kuò)展性強(qiáng)以及負(fù)載均衡等優(yōu)點(diǎn)。文檔編號(hào)H04L29/06GK102355413SQ20111024865公開(kāi)日2012年2月15日申請(qǐng)日期2011年8月26日優(yōu)先權(quán)日2011年8月26日發(fā)明者吳步丹,柴兆航,石瑞生,程渤,章洋,謝輝,陳俊亮,顧平麗申請(qǐng)人:北京郵電大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
阳新县| 宜宾市| 深水埗区| 邢台县| 海丰县| 盐亭县| 舟曲县| 义马市| 浦北县| 精河县| 崇左市| 明水县| 龙里县| 桂东县| 教育| 鄄城县| 云南省| 渭源县| 布拖县| 宿迁市| 华池县| 锦州市| 蛟河市| 镇江市| 文山县| 乾安县| 颍上县| 永康市| 霸州市| 舞钢市| 喜德县| 宁陵县| 郯城县| 卢湾区| 新营市| 勐海县| 项城市| 尚志市| 绩溪县| 武邑县| 新闻|