專利名稱::一種基于互聯(lián)網(wǎng)事件驅(qū)動機制編程模型的建立方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種基于互聯(lián)網(wǎng)事件驅(qū)動機制編程模型的建立方法,屬于互聯(lián)網(wǎng)應用開發(fā)領(lǐng)域。其中包含的主要技術(shù)有分布式計算、互聯(lián)網(wǎng)通信、遠程事件驅(qū)動模型、多播技術(shù)以及遠程消息機制等。
背景技術(shù):
:事件驅(qū)動機制已被廣泛應用于普通程序和分布式程序設計當中。作為一種編程模型,事件驅(qū)動提供了一個注冊方式用以輔助系統(tǒng)監(jiān)聽潛在可能發(fā)生的事件;并在事件發(fā)生后,立即利用通知機制使得關(guān)心事件發(fā)生的系統(tǒng)對事件作出及時響應。如果沒有這個機制的支持,開發(fā)人員的編程工作量會大大增加,同時系統(tǒng)效率也會下降。然而,在當前互聯(lián)網(wǎng)開發(fā)環(huán)境當中并不存在這樣的事件驅(qū)動機制。這致使互聯(lián)網(wǎng)開發(fā)變得復雜而且效率低下。在一些普通分布式系統(tǒng)當中,事件驅(qū)動機制是存在的,即遠程事件驅(qū)動機制。這個機制通常基于遠程過程調(diào)用(RPC)1或者遠程方法調(diào)用(RMI)2。在實現(xiàn)遠程事件驅(qū)動機制時,潛在的遠程事件會被記錄在注冊服務器上并與監(jiān)聽系統(tǒng)相關(guān)聯(lián)。當一個遠程節(jié)點上發(fā)生了注冊事件時,這個遠程節(jié)點會主動調(diào)用與該事件相關(guān)聯(lián)的監(jiān)聽系統(tǒng)。監(jiān)聽系統(tǒng)則激發(fā)所處節(jié)點相關(guān)程序來完成對事件的響應。但這個機制在互聯(lián)網(wǎng)應用中卻不存在。開發(fā)人員在需要響應潛在互聯(lián)網(wǎng)事件時,不得不采取投票方法3來監(jiān)測事件的發(fā)生。投票方法本身是一個低效方式,系統(tǒng)不得不為此付出過多額外代價;開發(fā)人員編程工作也會增加;還必須為投票方法設計恰當訪問周期,而這個周期必須和具體應用相結(jié)合才能獲到符合要求的結(jié)果。當系統(tǒng)處于波動狀態(tài)時,這個周期不是固定的,這也為探測訪問周期增加額外負擔。即使模擬訪問周期能夠相對準確獲得,但由于事件本身的不確定性,仍然需要消耗資源從而達到跟蹤潛在事件并在發(fā)生后能夠及時響應。除此之外,開發(fā)人員編程工作量也會增大,程序本身也不夠簡潔。當前互聯(lián)網(wǎng)系統(tǒng)沒有采用事件驅(qū)動機制是符合互聯(lián)網(wǎng)發(fā)展初期應用環(huán)境的特征,是對當時計算環(huán)境的適應。而這種對當時環(huán)境的適應,也造成了在當前互聯(lián)網(wǎng)中采用事件驅(qū)動機制的障礙?,F(xiàn)對此進行簡要解釋。第一,早期和當前互聯(lián)網(wǎng)以互聯(lián)網(wǎng)服務器為絕對中心。無論是早期互聯(lián)網(wǎng)還是當前互聯(lián)網(wǎng)都是以互聯(lián)網(wǎng)服務器為絕對中心。所有計算資源均來自于互聯(lián)網(wǎng)服務器;互聯(lián)網(wǎng)計算的全部特征都被服務器資源所左右。這種對服務器絕對依賴的方式在早期互聯(lián)網(wǎng)應用環(huán)境中是合理的。當時,訪問互聯(lián)網(wǎng)的客戶端計算能力有限;即使計算能力強,由于網(wǎng)絡瓶頸以及安全問題也造成互聯(lián)網(wǎng)計算難以利用除了服務器以外的其他計算資源。事件驅(qū)動機制本質(zhì)上是建立在多個相對獨立計算模塊或者節(jié)點均可以主動方式進行交互的條件上?;ヂ?lián)網(wǎng)服務器絕對中心的計算模型本身與遠程事件驅(qū)動機制需要的計算環(huán)境是不一致的。第二,早期互聯(lián)網(wǎng)服務器發(fā)布資源主要以更新緩慢的靜態(tài)資源為主。在早期互聯(lián)網(wǎng)服務器待發(fā)布資源有限,其更新也不頻繁,遠低于客戶端訪問的頻率。在這種情況下,新數(shù)據(jù)發(fā)布或者更新事件無需產(chǎn)生并通知客戶端。另外,早期互聯(lián)網(wǎng)應用是以靜態(tài)資源為主?;陟o態(tài)資源的互聯(lián)網(wǎng)應用當中,除了數(shù)據(jù)發(fā)布、更新和刪除等有限事件外,沒有更多的事件需要跟蹤。第三,早期和當前互聯(lián)網(wǎng)服務器計算資源有限。無論是早期還是當前互聯(lián)網(wǎng)系統(tǒng),以服務器為中心的模式導致互聯(lián)網(wǎng)計算資源在客戶端規(guī)模龐大時會變得有限。為了以有限的資源應付潛在的大量用戶訪問,不得不減少非主要計算的資源消耗。遠程事件驅(qū)動機制不但對服務器本身資源消耗具有壓力,同時要求客戶端的計算模型隨之進行改變。在客戶端沒有改變的情況下,服務器設計時也把事件驅(qū)動機制省去也是可以理解的。這實際上形成了一個兩難局面。省去了事件驅(qū)動機制,投票機制對服務器的壓力就會增加;而使用事件驅(qū)動機制,服務器同樣必須付出額外計算壓力。早期互聯(lián)網(wǎng)設計者在衡量了兩種情況下服務器可能付出的壓力后,選擇了不實現(xiàn)事件驅(qū)動機制。這和當時服務器上事件種類少,發(fā)生不頻繁也有關(guān)。第四,早期和當前互聯(lián)網(wǎng)不存在持續(xù)保持的網(wǎng)絡連接。由于潛在事件發(fā)生時機事先無法估計,這就要求在分布式環(huán)境中不同節(jié)點之間保持持續(xù)的網(wǎng)絡連接。一旦被跟蹤事件發(fā)生,節(jié)點之間可以及時溝通以響應事件。然而,互聯(lián)網(wǎng)通行的通信協(xié)議HTTP要求每個連接的生命周期有限,從而保證服務器有限連接資源能夠用來應付潛在客戶端的訪問請求。在沒有持續(xù)網(wǎng)絡連接情況下,使得遠程事件機制的實現(xiàn)在網(wǎng)絡資源上受到了限制。即使?jié)撛谑录l(fā)生,有限的網(wǎng)絡資源造成事件通知機制無法及時運行。第五,早期和當前互聯(lián)網(wǎng)不存在適當?shù)亩嗖C制。作為互聯(lián)網(wǎng)計算的中心,通?;ヂ?lián)網(wǎng)服務器事件的發(fā)生會有眾多個客戶端關(guān)注。在這樣的前提下,要求互聯(lián)網(wǎng)服務器具有一個高效的多播機制以減輕互聯(lián)網(wǎng)服務器因通知客戶端帶來的壓力。然而,在當前互聯(lián)網(wǎng)系統(tǒng)中,這個多播機制是不存在的;一旦存在一個事件驅(qū)動機制,服務器不得不付出計算資源通知所有對事件關(guān)注的客戶端,從而導致計算壓力過大。這也是當前互聯(lián)網(wǎng)沒有事件驅(qū)動機制的原因之一。第六,純粹瘦客戶端模式造成客戶端無法參與互聯(lián)網(wǎng)計算。造成當前互聯(lián)網(wǎng)系統(tǒng)無事件驅(qū)動機制存在的另一個主要原因是純粹瘦客戶端模式。所謂純粹瘦客戶端模式指的是客戶端在任何情況下只以發(fā)送請求和接受回應的形式訪問服務器。而這種形式本質(zhì)上不是對互聯(lián)網(wǎng)計算的參與,只是對互聯(lián)網(wǎng)計算的引發(fā)。所有計算完全是有客戶端請求下在互聯(lián)網(wǎng)服務器上進行的。事件驅(qū)動機制是建立在對不同計算節(jié)點共同參與計算的基礎之上。但是由于客戶端不能參與互聯(lián)網(wǎng)計算,在客戶端與服務器之間以及客戶端之間都不能產(chǎn)生基于協(xié)作計算,因此事件驅(qū)動機制在早期和當前互聯(lián)網(wǎng)中都是無法建立的。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種基于互聯(lián)網(wǎng)事件驅(qū)動機制編程模型的建立方法,其在互聯(lián)網(wǎng)應用中為開發(fā)人員建立基于遠程事件驅(qū)動機制和編程模型,簡化互聯(lián)網(wǎng)應用開發(fā)代價,并為建立更高效互聯(lián)網(wǎng)應用作出貢獻。本發(fā)明的技術(shù)方案為一種基于互聯(lián)網(wǎng)事件驅(qū)動機制編程模型的建立方法,其步驟為1)采用TCP/IP對等協(xié)議模式使計算節(jié)點具有接收請求和發(fā)送請求的能力;2)在計算節(jié)點之間建立直接對等的交互協(xié)議;3)在計算節(jié)點上建立基于消息的事件監(jiān)聽機制,用于接收數(shù)據(jù);4)建立動態(tài)集群,并在動態(tài)集群內(nèi)采用數(shù)據(jù)多播機制進行數(shù)據(jù)傳輸;所述動態(tài)集群為基于共同需求的計算節(jié)點在某一個時刻形成的計算資源協(xié)作共享模型;5)監(jiān)測所述動態(tài)集群內(nèi)的節(jié)點,將事件發(fā)生節(jié)點的數(shù)據(jù)通過所述數(shù)據(jù)多播機制傳輸給其它節(jié)點;6)結(jié)合軟件工程技術(shù),根據(jù)傳輸?shù)臄?shù)據(jù)類型建立事件驅(qū)動編程模型。所述計算節(jié)點包括客戶端和服務器端。所述計算節(jié)點之間直接對等的交互協(xié)議的建立方法為-1)建立網(wǎng)絡連接監(jiān)聽機制;2)通過IPv6或NAT穿越技術(shù)實現(xiàn)互聯(lián)網(wǎng)上任意節(jié)點的直接連接;3)根據(jù)具體互聯(lián)網(wǎng)應用特征,建立不同的客戶端和服務器端對等交互的協(xié)議。所述方法中利用異步編程模型結(jié)合TCP/IP協(xié)議完成所述建立基于消息的事件監(jiān)聽機制。所述基于消息的事件監(jiān)聽機制的工作方法為在獲得相關(guān)遠程事件消息后,啟動本地事件驅(qū)動機制把遠程事件轉(zhuǎn)換成本地事件,來驅(qū)動本地相關(guān)系統(tǒng)對遠程事件予以響應。所述相關(guān)遠程事件包括消息遠程事件、文件遠程事件、字節(jié)遠程事件和對象遠程事件。所述數(shù)據(jù)多播機制為利用BT協(xié)議形成的拓撲結(jié)構(gòu)進行輕量級數(shù)據(jù)多播,其方法為1)采用BT協(xié)議的跟蹤器監(jiān)測動態(tài)集群中計算節(jié)點的狀態(tài),所述節(jié)點狀態(tài)包括節(jié)點是否處于集群中、節(jié)點是否對某個事件關(guān)注、節(jié)點是否為超級節(jié)點、節(jié)點是否已獲得某個事件;2)對于處于集群中節(jié)點,所述跟蹤器均衡分配多播任務,其方法為首先為傳輸數(shù)據(jù)設置唯一標識;然后所述跟蹤器將確定出的超級節(jié)點作為種子節(jié)點,通過并發(fā)連接向其它節(jié)點傳輸數(shù)據(jù);節(jié)點檢查接收到的數(shù)據(jù)的標識,如果出現(xiàn)重復,則停止傳輸給該節(jié)點的并發(fā)連接節(jié)點;否則傳輸給該節(jié)點的并發(fā)連接節(jié)點繼續(xù)多播。所述傳輸數(shù)據(jù)上標識有曾經(jīng)經(jīng)過的節(jié)點,當出現(xiàn)當前到達節(jié)點與輕量級數(shù)據(jù)經(jīng)過的節(jié)點重復時,則停止傳輸;否則,繼續(xù)多播過程。所述數(shù)據(jù)類型包括消息、文件、字節(jié)和對象。所述事件驅(qū)動編程模型包括消息發(fā)送及相關(guān)事件、文件發(fā)送及相關(guān)事件、字節(jié)發(fā)送及相關(guān)事件和對象發(fā)送及相關(guān)事件。本發(fā)明的方法流程如圖2所示,其主要內(nèi)容為第一步,為彌補計算資源不足,建立所有節(jié)點皆可參與計算的互聯(lián)網(wǎng)環(huán)境。建立遠程事件驅(qū)動機制的前提是解決當前互聯(lián)網(wǎng)對服務器絕對依賴的問題。這種運行方式使得計算資源嚴重受限于互聯(lián)網(wǎng)服務器。為彌補不足,單獨增加服務器計算資源的方式是需要的,但并不是有效的做法。當面對潛在大量客戶端并發(fā)請求以及重量級數(shù)據(jù)傳輸?shù)膲毫r,上述方式提供的計算資源仍然是不足的。完全解決互聯(lián)網(wǎng)計算資源不足的問題,只有采取把所有處于互聯(lián)網(wǎng)環(huán)境中的節(jié)點都加入互聯(lián)網(wǎng)計算,并利用它們自身的計算資源。為完成上述工作,需要以下幾個步驟的工作。(1)改變純粹瘦客戶端服務器模式。當前互聯(lián)網(wǎng)純粹痩客戶端模式是造成互聯(lián)網(wǎng)計算資源不足的主要原因。這個問題的解決是增加互聯(lián)網(wǎng)計算資源的關(guān)鍵。在早期互聯(lián)網(wǎng)發(fā)展階段,服務器資源是互聯(lián)網(wǎng)計算資源的唯一來源。但是隨著計算設備和通信技術(shù)的發(fā)展,處于互聯(lián)網(wǎng)上的計算節(jié)點在計算能力以及帶寬上都具備了可利用的能力。這些計算節(jié)點如果仍然以純粹瘦客戶端模式在互聯(lián)網(wǎng)應用中出現(xiàn),只會對互聯(lián)網(wǎng)資源產(chǎn)生消耗。隨著互聯(lián)網(wǎng)應用的普及,這種純粹瘦客戶端會越來越多,對互聯(lián)網(wǎng)資源的爭奪也會越來越激烈。如果不能改變這種模式,互聯(lián)網(wǎng)的發(fā)展只能依靠服務器端出現(xiàn)強大的計算能力。這對大多數(shù)互聯(lián)網(wǎng)應用來說意味過高成本投入,是不現(xiàn)實的解決方案。(2)改變客戶端和服務器端交互協(xié)議。當前客戶端和服務器端的交互協(xié)議是以客戶端發(fā)出請求并等待回應,而服務器端接收請求并產(chǎn)生回應為基本工作模式的。這種模式將所有計算代價由服務器來承擔;客戶端不參與計算。本發(fā)明改變了這種協(xié)議,盡量把計算由服務器端轉(zhuǎn)移到客戶端,以減輕服務器計算負擔。這個改變的主要原則是將請求回應的形式轉(zhuǎn)變?yōu)閷Φ饶J健R獙崿F(xiàn)這個模式,需要賦予客戶端以接收請求的能力而賦予服務器端以發(fā)出請求的能力。作為TCP/IP協(xié)議來說,它本身就是一個對等協(xié)議。但是由于基于TCP/IP的互聯(lián)網(wǎng)應用協(xié)議HTTP為了適應早期互聯(lián)網(wǎng)的具體環(huán)境,把TCP/IP協(xié)議改成了客戶端對服務器端的單純請求回應模式。本發(fā)明借助于當前計算設備和通信技術(shù)的發(fā)展,將這個模式變成了對等模式。然而在互聯(lián)網(wǎng)上達到這樣的目的要解決三個重要問題,才能得到適合互聯(lián)網(wǎng)應用的對等協(xié)議。第一,建立網(wǎng)絡連接監(jiān)聽機制。HTTP協(xié)議只在服務器端具備網(wǎng)絡監(jiān)聽機制,而在客戶端沒有。這是只有服務器端才能被訪問而客戶端主動訪問的原因。本發(fā)明中,必須賦予二者具備網(wǎng)絡監(jiān)聽的能力。第二,實現(xiàn)互聯(lián)網(wǎng)上任意節(jié)點的連接。互聯(lián)網(wǎng)由于地址空間和安全因素,并不是所有節(jié)點都能夠建立直接的網(wǎng)絡連接。這個障礙可以通過IPv11或者NAT穿越技術(shù)12來解決。第三,根據(jù)具體互聯(lián)網(wǎng)應用特征,建立不同的客戶端和服務器端對等交互的協(xié)議。由于互聯(lián)網(wǎng)計算的復雜性,不同性質(zhì)的應用客戶端和服務器端交互方式千差萬別。為了應付不同場景,本發(fā)明在建立了客戶端和服務器端的連接之后,還提供了二者之間對等的消息、文件、字節(jié)和對象基本傳輸方式,開發(fā)人員基于此,定制成適合具體應用的的交互協(xié)議。(3)建立客戶端之間交互協(xié)議。除了在客戶端和服務器端建立新型交互協(xié)議以外,客戶端之間也可以產(chǎn)生協(xié)作。在當前互聯(lián)網(wǎng)環(huán)境中,客戶端之間不存在任何交互。其交互完全是通過服務器輔助來間接完成的。這也增加了服務器的計算壓力。本發(fā)明通過在客戶端之間建立直接交互機制,從而為客戶端之間形成動態(tài)集群計算提供基本條件。這對于減輕服務器端計算壓力以及增加整個互聯(lián)網(wǎng)計算資源是至關(guān)重要的。要實現(xiàn)這個目標,同樣需要解決監(jiān)聽機制、連接以及結(jié)合具體應用三個問題。這三個問題當中,在客戶端之間建立交互機制相比于客戶端和服務器端來說會更困難。其主要原因是客戶端會更多地受制于互聯(lián)網(wǎng)有限地址空間和安全因素的影響。如果使用NAT穿越技術(shù),其復雜程度會高于在客戶端和服務器端建立連接。這是由于每個服務器通常具備可訪問互聯(lián)網(wǎng)地址,而以客戶端不具備互聯(lián)網(wǎng)訪問地址或者處于NAT保護中的可能性要高。(4)建立服務器端之間交互協(xié)議。與當前客戶端交互模式類似,服務器端之間的交互是通過客戶端輔助來完成的。需要指出的是,當前無論是客戶端之間的交互還是服務器端之間的交互都是在人工參與下間接完成的,并非通過本發(fā)明提及的動態(tài)集群在上述節(jié)點之間自動完成。這種基于人工參與的計算只能形成輕量級低效率的交互,對于重量級高效率復雜計算是無法應付的。為了解決服務器之間低效交互問題,同樣需要在這些服務器之間建立直接交互。為此,監(jiān)聽機制、連接以及具體應用特征也需要考慮。相對來說,上述問題的解決在服務器之間就容易得多。這主要是互聯(lián)網(wǎng)服務器通常都具備獨立的互聯(lián)網(wǎng)地址供其他計算節(jié)點訪問,同時服務器性能一般要大大強于眾多客戶端。實際上,在建立連接后,針對不同應用采取具體協(xié)議是最為困難的。本發(fā)明為這個工作更有效完成建立了基礎。(5)針對具體應用,建立相應交互協(xié)議。真正實際的交互協(xié)議必須和具體應用緊密結(jié)合,根據(jù)具體應用的特征釆取相關(guān)算法或者解決方案?;ヂ?lián)網(wǎng)應用按照傳輸數(shù)據(jù)的特征大致可以分為三類,即輕量級應用4、與時序無關(guān)重量級應用5以及與時序相關(guān)重量級應用6。輕量級應用適合于一般的即時通信和商業(yè)系統(tǒng);與時序無關(guān)重量級應用適合于文件共享、電子郵件、BBS和普通Web應用等;與時序相關(guān)重量級應用適合于音頻視頻流媒體數(shù)據(jù)為主的應用系統(tǒng)。不同應用的性質(zhì),對計算資源的要求以及工作模式都是有差別的。但由于本發(fā)明所依賴的分布式基本結(jié)構(gòu)發(fā)生了本質(zhì)變化,從而導致上述不同應用能夠在更豐富的計算資源支持下工作。詳細算法可參考相關(guān)文獻以及本人其他發(fā)明。第二步,建立基于消息的事件監(jiān)聽機制。計算資源的緊缺以及計算節(jié)點之間交互的限制造成了遠程事件驅(qū)動機制無法在當前互聯(lián)網(wǎng)系統(tǒng)中得以實現(xiàn)。通過對互聯(lián)網(wǎng)應用層基本結(jié)構(gòu)的改變,上述兩個主要問題得到了解決,即互聯(lián)網(wǎng)事件驅(qū)動機制是建立在計算資源豐富以及計算節(jié)點之間自由交互的基礎上。在這個前提下,就可以在每個計算節(jié)點上建立事件監(jiān)聽機制。這個機制本質(zhì)上是一個輕量級數(shù)據(jù)(消息)等待接口。這個接口可以通過利用異步編程模型7結(jié)合TCP/IP協(xié)議來完成。需要注意的是,在獲得相關(guān)遠程事件消息9后,需要啟動本地事件驅(qū)動機制把遠程事件轉(zhuǎn)換成本地事件,來驅(qū)動本地相關(guān)系統(tǒng)對遠程事件予以響應。當前主要操作系統(tǒng)以及開發(fā)工具都支持本地事件驅(qū)動機制,可參考有關(guān)材料完成這個工作。第三步,建立基于輕量級數(shù)據(jù)的高效可靠多播機制。在本發(fā)明所依賴的計算環(huán)境中,應用都是動態(tài)集群來完成的(本發(fā)明采用了在復雜網(wǎng)絡系統(tǒng)8中數(shù)據(jù)復制、網(wǎng)狀多播機制5,6、動態(tài)篩選節(jié)點5以及基于復雜網(wǎng)絡理論的路由算法9等手段來建立動態(tài)集群)。所謂動態(tài)集群是基于共同需求的計算節(jié)點在某一個時刻形成的計算資源協(xié)作共享模型。這個模型內(nèi)部通過計算資源的共享來達到提高系統(tǒng)計算性能的目的。建立動態(tài)集群的方法和在穩(wěn)定環(huán)境下的集群完全不同。流網(wǎng)協(xié)議是其中重要解決方案,將其簡單地歸納如下建立基于社會網(wǎng)絡13的路由算法。這個路由方案是建立在社會網(wǎng)絡或者復雜網(wǎng)絡13基礎上的資源尋找算法。由于社會網(wǎng)絡本質(zhì)上是計算節(jié)點通過互聯(lián)網(wǎng)上用戶社會屬性而建立起來的符合互聯(lián)網(wǎng)資源分配規(guī)律的拓撲結(jié)構(gòu),恰當?shù)乩眠@個網(wǎng)絡就能夠完成對計算資源的有效尋找。在利用社會網(wǎng)絡進行路由搜索時,主要涉及結(jié)構(gòu)化和非結(jié)構(gòu)化路由技術(shù)的結(jié)合問題。結(jié)構(gòu)化路由技術(shù)的突出特點是能夠?qū)θ魏钨Y源(稀缺或者流行)在確定有限時間內(nèi)獲得路由結(jié)果,但是這樣的結(jié)果是建立在嚴格約束條件下。而這個條件當前互聯(lián)網(wǎng)環(huán)境難以得到保證。非結(jié)構(gòu)化路由技術(shù)建立在互聯(lián)網(wǎng)自然形成的拓撲結(jié)構(gòu)(即社會網(wǎng)絡)之上,并沒有對存在的互聯(lián)網(wǎng)環(huán)境有任何強制要求。在這樣的基礎上要保證快速獲得搜索結(jié)果,必須要求對具體的應用以及相應的拓撲結(jié)構(gòu)有深入認識才可達到。但即使如此,非結(jié)構(gòu)化搜索在路由公平性的保證仍然不足,同時對路由壓力的分擔也困難。鑒于上述原因,可以把上述二者恰當結(jié)合。由于社會網(wǎng)絡中存在群落,群落代表著相對穩(wěn)定的計算環(huán)境,接近于結(jié)構(gòu)化路由所要求的條件。這樣,可以采取在整個互聯(lián)網(wǎng)中進行非結(jié)構(gòu)化路由,而在群落中進行結(jié)構(gòu)化路由。通過上述方法,路由算法就做到了有效尋找流行資源以及保證對稀缺資源的路由公平。建立動態(tài)集群中的事件驅(qū)動機制。動態(tài)集群形成的基礎之一就是相互之間交互是以事件驅(qū)動為前提的。無論是一個節(jié)點請求建立連接、發(fā)起數(shù)據(jù)傳輸以及關(guān)閉連接等等基本行為都是通過事件驅(qū)動機制來完成的。這與傳統(tǒng)互聯(lián)網(wǎng)以投票為主的方式截然不同。而當建立起動態(tài)集群的基礎之后,這個事件驅(qū)動機制就形成了基本框架。再結(jié)合高效的輕量級多播機制,就可以形成一個基于消息的事件驅(qū)動機制。這個機制能夠適應互聯(lián)網(wǎng)動態(tài)變化的特征,保證事件驅(qū)動機制在高效穩(wěn)定可靠大規(guī)模環(huán)境下工作。這個機制的實現(xiàn)提高了互聯(lián)網(wǎng)計算節(jié)點之間的交互效率,避免了投票機制給系統(tǒng)增加的壓力以及對系統(tǒng)變化遲鈍反應。事件驅(qū)動保證了關(guān)注者能夠在事件發(fā)生前不用付出額外代價進行投票;同時,在事件發(fā)生后,能夠即刻作出反應。由于這個集群并不是穩(wěn)定的,而是處于不斷變化當中。這種變化包括計算節(jié)點的加入和離開,也包括計算節(jié)點本身狀態(tài)和行為的改變,還包括計算環(huán)境的改變以及計算節(jié)點性質(zhì)的變化。對于動態(tài)集群這樣一個特殊分布式計算環(huán)境來說,這些變化都是在某一個局部首先發(fā)生;這些局部狀態(tài)的變化可能影響整體計算的性能。為此,多個節(jié)點都會對某個動態(tài)變化予以關(guān)注,并在變化發(fā)生的情況下進行及時反應。這樣就形成了對事件驅(qū)動機制的需求。而局部狀態(tài)變化要反映到全局,需要一個可靠的多播機制來完成。這也是互聯(lián)網(wǎng)遠程事件驅(qū)動機制的必要需求。這個多播機制需要完成下述工作。(1)使用輕量級數(shù)據(jù)表示事件以及相關(guān)狀態(tài)。遠程事件驅(qū)動機制的關(guān)鍵在于事件在某個局部發(fā)生后,能夠及時使局部狀態(tài)轉(zhuǎn)化為更大范圍甚至是全局狀態(tài)。通常表示這個狀態(tài)的數(shù)據(jù)是小的。即使一個系統(tǒng)中狀態(tài)過多,其對應的表示在一個真實系統(tǒng)中也可以用輕量級數(shù)據(jù)描述。所以在考慮為事件驅(qū)動服務的多播系統(tǒng)中,只需考慮輕量級數(shù)據(jù)即可。這減輕了多播系統(tǒng)的設計難度。(2)輕量級多播系統(tǒng)要考慮的問題。首先是分散多播壓力。當互聯(lián)網(wǎng)多播系統(tǒng)面臨的節(jié)點規(guī)模大,即使是輕量級數(shù)據(jù)多播,采取簡單一對多的通知策略也會對事件通知節(jié)點造成計算壓力,所以必須考慮適當手段以減輕這個壓力。其次,要考慮對動態(tài)環(huán)境的適應。互聯(lián)網(wǎng)應用的另一個特征就是計算節(jié)點的動態(tài)特征明顯。除了為系統(tǒng)無償貢獻資源的服務器(對等服務器)以外,其余節(jié)點都是在用戶控制下參與互聯(lián)網(wǎng)計算的。當用戶認為一個互聯(lián)網(wǎng)計算已經(jīng)滿足其要求或者對其沒有意義時,就可以隨時退出該計算。另一方面,一個計算節(jié)點也可以在互聯(lián)網(wǎng)計算過程中隨時加入。這兩個因素都會造成互聯(lián)網(wǎng)計算的動態(tài)性。對于多播系統(tǒng)同樣如此。在多播進行的過程中,處于多播系統(tǒng)中的節(jié)點并不處于穩(wěn)定狀態(tài)。這些動態(tài)特征會嚴重影響多播的可靠性。再次,要考慮對即時性的控制。事件驅(qū)動系統(tǒng)一個重要特征就是要求事件通知的即時性。當多播系統(tǒng)規(guī)模大時,即時性的保證就會出現(xiàn)問題。保證大規(guī)模多播系統(tǒng)的即時性是保證遠程事件驅(qū)動機制建立的重要需求。最后,對可靠性的保證??煽啃栽谳p量級多播系統(tǒng)中主要指的是數(shù)據(jù)在動態(tài)環(huán)境傳輸過程中的順序一致性以及容錯性。當多個事件接近并發(fā)地發(fā)生時,多播系統(tǒng)必須保證事件在傳輸?shù)礁鱾€節(jié)點時符合事件發(fā)生的原始時間順序。對于大規(guī)模分布式系統(tǒng),事件的順序容易在多播過程中發(fā)生混亂。容錯性在一個動態(tài)變化頻繁的分布式系統(tǒng)中是必須做到的,以防止事件多播不能保證覆蓋所有相關(guān)節(jié)點。(3)利用BT協(xié)議實現(xiàn)輕量級數(shù)據(jù)多播系統(tǒng)。針對上述問題,本發(fā)明采用了基于改進BT協(xié)議的多播系統(tǒng)。BT協(xié)議本質(zhì)上是一個重量級數(shù)據(jù)多播協(xié)議。之所以考慮利用BT協(xié)議,主要是其運行環(huán)境與本發(fā)明環(huán)境是一致的;BT協(xié)議對于動態(tài)環(huán)境的適應方式值得借鑒。針對事件驅(qū)動系統(tǒng)只關(guān)注輕量級數(shù)據(jù)的特征,本發(fā)明必須對其進行改進,使其更適合輕量級數(shù)據(jù)的多播。圖1說明了利用BT實現(xiàn)輕量級數(shù)據(jù)多播基本方式。A.使用跟蹤器監(jiān)測動態(tài)集群節(jié)點狀態(tài)。BT協(xié)議中的跟蹤器是專門用來收集一個潛在動態(tài)集群中所有節(jié)點狀態(tài)的服務器。在本發(fā)明中,這個服務器可以通過布置中心服務器來實現(xiàn);在本發(fā)明中,這個中心服務器的最大特點是能夠主動與系統(tǒng)中計算節(jié)點聯(lián)系,而不是總是處于被動等待計算節(jié)點匯報自身狀態(tài)的地位。這個特點導致跟蹤器可以成為基于BT的一個事件觸發(fā)節(jié)點。當需要和一些計算節(jié)點聯(lián)系時,能夠主動發(fā)送數(shù)據(jù)或相關(guān)狀態(tài),而無需被動等待。比如,跟蹤器在本發(fā)明中被用來評定超級節(jié)點,并據(jù)此將這些節(jié)點作為輕量級數(shù)據(jù)多播的起始;這個工作需要有跟蹤器以主動的方式聯(lián)系超級節(jié)點。對于用來進行事件驅(qū)動的輕量級多播系統(tǒng)來說,需要監(jiān)測的狀態(tài)包括節(jié)點是否處于集群中、節(jié)點是否對某個事件關(guān)注、節(jié)點是否為超級節(jié)點10、節(jié)點是否已獲得該事件等。這些狀態(tài)都會為事件多播系統(tǒng)的質(zhì)量起到關(guān)鍵作用。在對系統(tǒng)中節(jié)點狀態(tài)把握之后,才能對輕量級多播任務壓力進行合理分擔,提高多播效率和可靠性。B.利用BT協(xié)議形成的拓撲結(jié)構(gòu)進行輕量級多播。BT協(xié)議是用來進行重量級數(shù)據(jù)傳輸或者多播的。為了在高動態(tài)環(huán)境在保證重量級數(shù)據(jù)高效多播,BT協(xié)議采取了一系列方案,如節(jié)點選擇和數(shù)據(jù)片段選擇等。BT協(xié)議的本質(zhì)正如前面所述,是基于互惠策略計算資源共享來達到重量級多播的目的。無論是進行節(jié)點選擇還是數(shù)據(jù)片段選擇、或者互惠原則,其重要目的是實現(xiàn)應用層拓撲結(jié)構(gòu)和網(wǎng)絡層拓撲結(jié)構(gòu)的匹配。所謂應用層指的是根據(jù)具體應用的需要建立起來的數(shù)據(jù)交互層;網(wǎng)絡層指的是獨立于任何具體應用基于網(wǎng)絡的數(shù)據(jù)交互層。應用層建立在網(wǎng)絡層之上;任何應用層的數(shù)據(jù)交互最終都必須在網(wǎng)絡層上傳輸。但是,應用層計算節(jié)點之間交互形成的拓撲結(jié)構(gòu)與具體應用場合直接相關(guān),與支持網(wǎng)絡傳輸?shù)穆酚芍g拓撲結(jié)構(gòu)沒有任何直接聯(lián)系。當應用層拓撲結(jié)構(gòu)與網(wǎng)絡層拓撲結(jié)構(gòu)嚴重不匹配時,會使應用層上的數(shù)據(jù)交互效率低下。應用層交互性能的高低嚴重依賴于它本身的拓撲結(jié)構(gòu)與網(wǎng)絡層拓撲結(jié)構(gòu)的匹配程度。BT協(xié)議的主要作用就在于通過一系列手段實現(xiàn)了它們之間的近似匹配。通過BT協(xié)議從交互開始后一段時間的作用,所有參與重量級數(shù)據(jù)傳輸?shù)墓?jié)點之間會形成一個與網(wǎng)絡層拓撲結(jié)構(gòu)近似匹配的應用層。正是這個匹配保證了重量級數(shù)據(jù)多播的效率。本發(fā)明的運行環(huán)境也是基于大規(guī)?;ヂ?lián)網(wǎng),節(jié)點之間形成了基于具體應用場合的交互,即應用層。但是這個應用層拓撲結(jié)構(gòu)只有通過BT協(xié)議的輔助才能與網(wǎng)絡層拓撲結(jié)構(gòu)形成近似匹配。與此對應,本發(fā)明所建立的互聯(lián)網(wǎng)系統(tǒng)以重量級數(shù)據(jù)多播為主,并以BT協(xié)議為多播解決方案,這為形成與網(wǎng)絡層拓撲結(jié)構(gòu)的匹配提供了條件。對于輕量級數(shù)據(jù)多播來說,完全可以利用在重量級數(shù)據(jù)多播過程中形成的應用層拓撲結(jié)構(gòu)。由于這個拓撲結(jié)構(gòu)的形成經(jīng)過了BT協(xié)議的有效調(diào)整,在進行輕量級多播時也會保持高效率。C.不對基于BT協(xié)議的并發(fā)配合節(jié)點數(shù)量作任何限制。傳統(tǒng)的BT協(xié)議對節(jié)點之間的交互時并發(fā)數(shù)量有一個限制,通常為四個。這個限制對于大多數(shù)互聯(lián)網(wǎng)上的普通節(jié)點來說是正確的。但是,對于本發(fā)明的互聯(lián)網(wǎng)系統(tǒng),卻不是合適的選擇。正如前面所說,本發(fā)明所建立的互聯(lián)網(wǎng)系統(tǒng)不僅僅包括普通計算節(jié)點,更包括傳統(tǒng)的服務器;這些節(jié)點是形成超級節(jié)點的主要候選者。這些服務器通常擁有豐富的計算資源,可以并發(fā)建立遠超過四個的多播連接。因此,打破這個限制會使得BT協(xié)議運行的節(jié)點資源被盡量充分利用,提高了重量級數(shù)據(jù)多播效率。D.跟蹤器根據(jù)監(jiān)測確定超級節(jié)點。在BT協(xié)議中,跟蹤器的職責是向新加入系統(tǒng)的節(jié)點返回正在動態(tài)集群中活動的部分節(jié)點,使新節(jié)點能夠和這些節(jié)點進行交互并加入集群,從而完成重量級數(shù)據(jù)的多播。在本發(fā)明中,跟蹤器主要職責由為新節(jié)點提供潛在合作節(jié)點轉(zhuǎn)變成為集群現(xiàn)存節(jié)點均衡分配多播任務。在普通BT協(xié)議中,跟蹤器會隨機返回適量(一般為80)5節(jié)點給正在參與重量級數(shù)據(jù)多播的節(jié)點。在本發(fā)明中,釆用在整個節(jié)點中根據(jù)監(jiān)測確定超級節(jié)點,讓這些節(jié)點首先獲得需要多播的輕量級數(shù)據(jù)。一般情況下,這些超級節(jié)點具備更多的并發(fā)連接,通過這些并發(fā)連接能夠使輕量級數(shù)據(jù)以盡可能高的效率傳輸給其他相關(guān)節(jié)點。由此看出確定超級節(jié)點的重要性。超級節(jié)點的確定可以通過一個簡單的方法實現(xiàn),即在跟蹤器上記錄的節(jié)點活躍時間來衡量活躍時間長,則成為超級節(jié)點的可能性大;否則,就是普通節(jié)點。通常超級節(jié)點在動態(tài)集群中的活躍時間大大超過普通節(jié)點,因此容易根據(jù)這個數(shù)值識別超級節(jié)點。另外,即使超級節(jié)點識別有誤差,也可以根據(jù)活躍時間找到一些相對可靠的節(jié)點;它們可以被稱作次超級節(jié)點。之所以可以利用一些次超級節(jié)點,也是由于輕量級數(shù)據(jù)多播持續(xù)時間短、對該節(jié)點造成的負擔小。根據(jù)上述原則選擇的超級節(jié)點和次級超級節(jié)點會快速成為種子節(jié)點。之后,這些節(jié)點會通過當前并發(fā)連接傳輸輕量級數(shù)據(jù)。E.改變節(jié)點自私性為貢獻性。在BT協(xié)議中,每個節(jié)點都被假設為以自私的方式工作,即在獲得所需重量級數(shù)據(jù)后就會離開系統(tǒng);同時在和其他節(jié)點交互過程中也只是在滿足自身要求前提下才會和對方交互;否則,合作會中斷導致退出系統(tǒng)或者尋找其他節(jié)點進行交互。這樣的設計對于重量級數(shù)據(jù)多播是正確的。但是對于給系統(tǒng)壓力小的輕量級數(shù)據(jù)來說就沒有必要了。在輕量級多播系統(tǒng)中,為盡快完成多播任務,每個獲得多播數(shù)據(jù)的節(jié)點應該主動通過自身具有的并發(fā)連接傳輸輕量級數(shù)據(jù)。無論是超級節(jié)點還是普通節(jié)點在輕量級數(shù)據(jù)多播時都以貢獻性方式工作。通常普通節(jié)點擁有的并發(fā)連接個數(shù)要遠遠小于超級節(jié)點,這是與其帶寬資源是匹配的,能夠達到其所能承受最高壓力。這樣多播壓力就均衡地分布在每個節(jié)點上,同時保證了多播的即時性。由于多播是在非穩(wěn)定非規(guī)則拓撲結(jié)構(gòu)中進行的,系統(tǒng)無需為維護拓撲結(jié)構(gòu)付出代價,節(jié)點的動態(tài)特征對于多播質(zhì)量的影響被降到最低。F.通過賦予輕量級數(shù)據(jù)以唯一標識避免輕量級數(shù)據(jù)冗余傳輸。由于本發(fā)明中的輕量級數(shù)據(jù)多播沒有規(guī)則的拓撲結(jié)構(gòu),這容易造成數(shù)據(jù)的冗余傳輸,即一個節(jié)點收到多次重復數(shù)據(jù)。賦予輕量級數(shù)據(jù)以唯一標識,當一個節(jié)點收到數(shù)據(jù)時,會檢査這個標識。如果出現(xiàn)重復,則停止傳輸給它的并發(fā)連接節(jié)點;否則,則傳輸給它的并發(fā)連接節(jié)點繼續(xù)多播。G.通過輕量級數(shù)據(jù)經(jīng)過的路徑進行標識避免出現(xiàn)環(huán)路。同樣由于本發(fā)明中的輕量級多播沒有規(guī)則的拓撲結(jié)構(gòu),在數(shù)據(jù)傳輸過程中有可能形成環(huán)路,造成沒有意義的數(shù)據(jù)傳輸。為此,可以在輕量級數(shù)據(jù)上標識出曾經(jīng)經(jīng)過的節(jié)點。當出現(xiàn)當前到達節(jié)點與輕量級數(shù)據(jù)經(jīng)過的節(jié)點重復時,則停止傳輸;否則,繼續(xù)多播過程。H.通過動態(tài)集群克服互聯(lián)網(wǎng)的動態(tài)性?;ヂ?lián)網(wǎng)環(huán)境由于人對計算節(jié)點的直接控制,導致系統(tǒng)動態(tài)特征明顯。極端的動態(tài)特征會阻止任何計算的進行。實際上,在互聯(lián)網(wǎng)環(huán)境中,用戶導致的動態(tài)特征并不是沒有規(guī)律的,而是由具體應用本身質(zhì)量和性質(zhì)所決定的。對于整個互聯(lián)網(wǎng)環(huán)境來說,動態(tài)特征是絕對的;但對于一個具體應用或者具體應用的某一個時段,動態(tài)特征是相對的,甚至會表現(xiàn)出穩(wěn)定特征。動態(tài)集群的建立為一個具體應用提供了動態(tài)互聯(lián)網(wǎng)中相對穩(wěn)定的計算環(huán)境。如果在這個環(huán)境中進行輕量級數(shù)據(jù)多播,通常來說會受動態(tài)的影響會減小到最低。I.保證輕量級數(shù)據(jù)在多播過程中的順序。在有些應用中,輕量級數(shù)據(jù)的順序是有意義的。任何一個節(jié)點必須按照此順序進行響應才有正確的結(jié)果。至少對于事件驅(qū)動機制就是如此。對于輕量級多播來說,保證數(shù)據(jù)在傳輸過程中的順序是事件驅(qū)動機制正確運行的基礎。在高動態(tài)的互聯(lián)網(wǎng)上,如需要對數(shù)據(jù)之間的順序進行維護,跟蹤器起到了協(xié)調(diào)作用。當一個節(jié)點上發(fā)送輕量級數(shù)據(jù)并進行多播時,首先要向跟蹤器發(fā)出請求;跟蹤器對集群內(nèi)所有需要發(fā)送數(shù)據(jù)的節(jié)點按照跟蹤器本地時間先后順序進行排序;多播按照此先后順序依14次進行,即當確認排在前面的節(jié)點數(shù)據(jù)在整個集群中發(fā)送成功后,排在其后的節(jié)點數(shù)據(jù)再進行發(fā)送。但這樣的做法會導致整個系統(tǒng)由于過度同步而性能下降。也可以采取對被排序數(shù)據(jù)進行順序編號,然后進行異步發(fā)送。每個節(jié)點對獲得的數(shù)據(jù)進行處理時,如果發(fā)現(xiàn)編號不連續(xù),則可以判斷有數(shù)據(jù)沒有收到,可以和數(shù)據(jù)源聯(lián)系來獲得相關(guān)數(shù)據(jù)。這個方法可以使得輕量級多播在高效率的前提下保證可靠性。第四步,建立互聯(lián)網(wǎng)環(huán)境下的遠程事件驅(qū)動機制。在上述工作的基礎上,本發(fā)明提出了一個基于互聯(lián)網(wǎng)環(huán)境的遠程事件驅(qū)動機制。這個機制能夠適應互聯(lián)網(wǎng)動態(tài)變化的特征,保證事件驅(qū)動機制在高效穩(wěn)定可靠大規(guī)模環(huán)境下工作。這個機制的實現(xiàn)提高了互聯(lián)網(wǎng)計算節(jié)點之間的交互效率,避免了投票機制給系統(tǒng)增加的壓力以及對系統(tǒng)變化遲鈍反應。在投票機制中,一個重要參數(shù)就是投票周期。一般這個周期可以根據(jù)具體應用中事件性質(zhì)以及事件關(guān)注者的需求來制定。當用戶需要關(guān)注所有可能發(fā)生事件時,由于事件的發(fā)生決定于引發(fā)事件的源頭,難以事先估計,所以投票周期的制定很難達到準確,從而造成投票周期與事件發(fā)生規(guī)律不一致。當投票周期大于事件發(fā)生頻率時,關(guān)注者就會對事件的發(fā)生反應遲緩;當投票周期小于事件發(fā)生頻率時,遠程事件發(fā)生節(jié)點以及關(guān)注者節(jié)點就需要投入更多的資源進行投票,額外增加了系統(tǒng)的壓力。事件驅(qū)動保證了關(guān)注者能夠在事件發(fā)生前不用付出額外代價進行投票;同時,在事件發(fā)生后,能夠即刻作出反應。由此可見,互聯(lián)網(wǎng)環(huán)境下遠程事件驅(qū)動機制成為了反映互聯(lián)網(wǎng)變化的基礎。互聯(lián)網(wǎng)本質(zhì)上是一個不斷變化的系統(tǒng),但這種變化在沒有遠程事件驅(qū)動機制的支持下,是無法即時反映到相關(guān)計算節(jié)點的。為了降低計算負擔,當前互聯(lián)網(wǎng)主要應用中甚至拒絕對這些變化予以跟蹤。本發(fā)明有效地解決了這個問題。第五步,建立互聯(lián)網(wǎng)環(huán)境下的遠程事件驅(qū)動編程模型。在實現(xiàn)了互聯(lián)網(wǎng)上遠程事件驅(qū)動機制后,本發(fā)明結(jié)合軟件工程技術(shù),提出了基于互聯(lián)網(wǎng)環(huán)境的遠程事件驅(qū)動編程模型。這個模型對開發(fā)人員來說,表現(xiàn)為一套應用程序接口(API)。通過使用這些接口,用戶可以在互聯(lián)網(wǎng)上完成對各種可能事件的監(jiān)控和響應。這套接口包括消息發(fā)送及相關(guān)事件、文件發(fā)送及相關(guān)事件、字節(jié)發(fā)送及相關(guān)事件和對象發(fā)送及相關(guān)事件。同時,也實現(xiàn)了這些接口對應異步接口7。這套應用程序接口包含了互聯(lián)網(wǎng)計算中基本事件編程模型。在互聯(lián)網(wǎng)應用中,與互聯(lián)網(wǎng)計算相關(guān)的所有遠程事件都以數(shù)據(jù)傳輸形式表現(xiàn)出來。因此,本發(fā)明中涉及的事件都與數(shù)據(jù)發(fā)送接口緊密關(guān)聯(lián)?;ヂ?lián)網(wǎng)計算對于數(shù)據(jù)的發(fā)送可以按照數(shù)據(jù)的性質(zhì)分為四種類型,即消息、文件、字節(jié)和對象。這些類型都是獨立于具體應用的基本事件。使用本模型時,開發(fā)人員需要根據(jù)本發(fā)明提供的應用程序接口發(fā)送數(shù)據(jù),并利用提供的事件類型定義或者派生出與具體應用相關(guān)的事件。這其中對象發(fā)送及其相關(guān)事件提供了靈活的遠程事件定義模式;開發(fā)人員可以根據(jù)自身需求定義各種基于對象傳輸?shù)氖录?。實際開發(fā)中,只要繼承這個抽象的對象,就可以派生出任意遠程事件。表l列出了互聯(lián)網(wǎng)遠程事件驅(qū)動主要編程接口。表l.互聯(lián)網(wǎng)遠程事件驅(qū)動主要編程接口<table>tableseeoriginaldocumentpage16</column></row><table>本發(fā)明的積極效果為本發(fā)明在不增加網(wǎng)絡成本的前提下,提高了網(wǎng)絡計算資源,同時本發(fā)明編程模型內(nèi)部的事件驅(qū)動機制,可以使網(wǎng)絡用戶能夠及時自動的獲取所關(guān)心的事件信息,使網(wǎng)絡服務更加高效、便捷、人性化。圖l.基于BT拓撲結(jié)構(gòu)的輕量級數(shù)據(jù)多播;圖2.本發(fā)明的方法流程圖。具體實施例方式本發(fā)明的應用幾乎可以覆蓋所有互聯(lián)網(wǎng)領(lǐng)域。在此,對一些主要應用中實施本發(fā)明的情況予以說明。利用本發(fā)明可以在下面多個應用中實施。第一,豐富互聯(lián)網(wǎng)應用。所謂豐富互聯(lián)網(wǎng)應用是為了解決傳統(tǒng)互聯(lián)網(wǎng)應用展示過于簡單、與桌面應用差距明顯的問題。互聯(lián)網(wǎng)應用與桌面應用區(qū)別之一就是沒有事件驅(qū)動機制。用戶不得不通過不斷刷新(向服務器請求)的辦法從網(wǎng)站上獲得更新的互聯(lián)網(wǎng)數(shù)據(jù)?;谧烂娴膽脛t不是這樣。由于當前桌面操作系統(tǒng)都具備事件驅(qū)動機制,當用戶關(guān)心的任何事件發(fā)生時,用戶都可以在不進行任何操作的情況下獲得事件通知,并進行相關(guān)反應。當前豐富互聯(lián)網(wǎng)技術(shù)試圖通過底層投票機制代替用戶手動向服務器請求,給用戶以事件機制的感覺。但由前面的討論可以得到結(jié)論,與真正的事件驅(qū)動機制相比,投票機制并不是一個有效的解決方案。利用本發(fā)明的技術(shù),可以妥善解決在互聯(lián)網(wǎng)上實現(xiàn)事件驅(qū)動的問題。開發(fā)人員可以把任何遠程事件通過本發(fā)明提供的編程模型描述出來,并把這個模型與具體互聯(lián)網(wǎng)應用結(jié)合,形成針對具體應用的事件驅(qū)動機制。第二,電子郵件系統(tǒng)。電子郵件系統(tǒng)也是當前互聯(lián)網(wǎng)主要應用之一。電子郵件的發(fā)送和收取本身就代表不同的事件。這些事件的發(fā)生是用戶所關(guān)心的。一個基于遠程事件驅(qū)動機制的電子郵件系統(tǒng)可以及時提示用戶收到電子郵件或者發(fā)送電子郵件成功。當前互聯(lián)網(wǎng)電子郵件系統(tǒng)沒有遠程事件驅(qū)動機制的支持,當用戶收到電子郵件時,并不能得到及時通知。只有當用戶主動訪問郵件服務器時,才能得知當前郵件狀態(tài)。一些電子郵件系統(tǒng)只能使用投票機制來完成這個工作。利用本發(fā)明的技術(shù),可以把郵件發(fā)送與收取通過對象發(fā)送接口描述出來;無論是用戶發(fā)送還是收到郵件都能夠得到及時通知。第三,即時通信系統(tǒng)。即時通信是一種高頻率的遠程事件發(fā)生機制。當前互聯(lián)網(wǎng)的即時通信機制沒有事件驅(qū)動機制的支持,只能依賴投票機制形成模擬即時消息的獲得。利用本發(fā)明,可以有效實現(xiàn)即時通信系統(tǒng)中發(fā)送消息和收到消息。實現(xiàn)這個目標時,本發(fā)明中的編程接口都可以利用,并且?guī)缀醪恍枰魏胃膭印5谒?,電子商務系統(tǒng)。電子商務系統(tǒng)中對遠程事件驅(qū)動機制的需求很多。有些電子商務系統(tǒng)數(shù)據(jù)更新頻繁,并且用戶也關(guān)注這些更新,比如股票系統(tǒng)。股票系統(tǒng)中商業(yè)數(shù)據(jù)變動頻繁,并且這些數(shù)據(jù)都是用戶所密切關(guān)注的。當前只能依靠投票機制實現(xiàn)上述功能。利用本發(fā)明的技術(shù),股票變更數(shù)據(jù)可以迅速有效獲得。同時這里還存在多播的問題。通常股票變更數(shù)據(jù)有多個用戶關(guān)注;簡單的事件通知機制效率低,不能保證即時性。由于本發(fā)明擁有獨特的多播技術(shù),使得股票數(shù)據(jù)在眾多用戶中有效擴散。對于其他電子商務系統(tǒng)來說,也存在類似問題。這個問題集中體現(xiàn)在分布式事務管理3上。當有眾多用戶共同參與一個商業(yè)服務,會涉及對同一商業(yè)數(shù)據(jù)的改動。如果沒有有效的事務管理機制,會造成商業(yè)數(shù)據(jù)的不一致,并最終引發(fā)混亂,造成商業(yè)損失。當有眾多用戶參與一個商業(yè)服務時,為了維持一致性,要求有效的事件通知機制以及多播機制。本發(fā)明的技術(shù)正好滿足了這個需求。第五,網(wǎng)絡游戲系統(tǒng)。網(wǎng)絡游戲當中存在大量用戶之間的交互以及用戶和系統(tǒng)的交互。這些交互可以抽象成各種不同的事件。但是當前網(wǎng)絡游戲系統(tǒng)也是沿用傳統(tǒng)的投票機制進行事件驅(qū)動以及相關(guān)多播機制。這增加了系統(tǒng)負載降低了效率。利用本發(fā)明的技術(shù),游戲用戶之間和游戲用戶和系統(tǒng)之間的事件都以最有效的方式進行。當有眾多用戶關(guān)心的事件發(fā)生時,本發(fā)明的多播技術(shù)也會起到有效支持作用。第六,新聞系統(tǒng)。新聞系統(tǒng)的顯著特征就是數(shù)據(jù)變更頻繁并且用戶對變化敏感。然而由于新聞系統(tǒng)通常用戶量大,為了避免對系統(tǒng)造成過大壓力,這些系統(tǒng)甚至沒有實現(xiàn)事件機制以及和事件機制緊密相關(guān)的有效多播機制。從這里可以看出,當前互聯(lián)網(wǎng)技術(shù)的落后狀態(tài)。利用本發(fā)明,新聞系統(tǒng)中的任何變更可以即刻被用戶感知;同時,一個被大量用戶感知的事件也可以通過多播方式即時通知相關(guān)用戶。第七,公告欄系統(tǒng)。本質(zhì)上,公告欄系統(tǒng)和一般以數(shù)據(jù)發(fā)布為特征的互聯(lián)網(wǎng)應用性質(zhì)是一致的。一些區(qū)別在于公告欄系統(tǒng)交互頻率要比普通互聯(lián)網(wǎng)發(fā)布系統(tǒng)要高。與普通互聯(lián)網(wǎng)發(fā)布系統(tǒng)類似,公告欄系統(tǒng)也需要通過事件驅(qū)動機制以及相關(guān)的多播機制完成即時變更數(shù)據(jù)的通知和發(fā)送。基于與新聞系統(tǒng)同樣的原因,當前公告欄系統(tǒng)也沒有上述機制對系統(tǒng)進行輔助。在公告欄上的交互也需要事件驅(qū)動機制通知相關(guān)用戶;這個功能在當前公告欄系統(tǒng)中也沒有實現(xiàn)。利用本發(fā)明涉及的技術(shù),上述問題都可以得到解決。第八,會議系統(tǒng)?;ヂ?lián)網(wǎng)會議系統(tǒng)本質(zhì)上是一個多個用戶參與交互系統(tǒng)。會議當中有不同用戶需要發(fā)布數(shù)據(jù),這個數(shù)據(jù)的發(fā)布可通過事件的形式表現(xiàn)出來。使用本發(fā)明,會使得會議過程高效流暢,參與者可以即時感知會議數(shù)據(jù)的變化。同時,有些會議系統(tǒng)需要有重量級數(shù)據(jù)的支持。這個重量級數(shù)據(jù)的傳輸可以利用基于BT協(xié)議的流媒體傳輸機制6完成。這個機制構(gòu)成的拓撲結(jié)構(gòu)對本發(fā)明的多播機制會有輔助作用,使本發(fā)明依賴的輕量級多播表現(xiàn)出更高的質(zhì)量。參考資料1AndrewD.Birrell,BruceJayNelson;ImplementingRemoteProcedureCalls;ACMTransactionsonComputerSystems(TOCS),Volume2Issue1,1982JasonMassen,RobvanNieuwpoort,RonaldVddema,HenriE.Bal,AskePlaat;AnEfficientImplementationofJava'sRemoteMethodInvocation;PPoPP'99:ProceedingsoftheSeventhACMSIGPLANSymposiumonPrinciplesandPracticeofParallelProgramming,19993GeorgeCoulouris,JeanDollimore,TimKindberg;DistributedSystemsConceptsandDesign;PearsonEducation,Ltd;2004Obraczka,K.;MulticastTransportProtocols:aSurveyandTaxonomy,CommunicationMagazine,IEEE,Volume36,Issue1,Jan.1998Page(s):94-105CohenB.;IncentivesBuildRobustnessinBitTorrent,inWorkshoponEconomicsofPeer墨to-PeerSystems,BerkeleyUSA,May2006VlavianosAggelos,etal.BiToS:EnhancingBitTorrentforSupportingStreamingApplications,INFOCOM2006,25IEEEInternationalConferenceonComputerCommunicationsProceedings,April2006,Page(s):1-7MicrosoftAsynchronousProgrammmingOverview;http:〃msdn.microsoft.com/en-us/librarv/2e08f6vc(VS.71).aspx8NewmanMEJ.;TheStructureandFunctionofComplexNetworks,SIAMReview,2003,45,Page(s):167-259J.A.Pouwelse,et.al;TRIBLER:ASocial-BasedPeer墨to-PeerSystem;RecentAdvancesinPeer-to國PeerSystemsandSecurity,2006,Volume20,Issue2,Pages:127-13810M.Ripeanu;Peer墨to-PeerArchitectureCaseStudy:GnutellaNetwork;ProceedingsofFirstInternationalConferenceonPeer-to-PeerComputing,2001,Pages:99-10011PaulFrancis;IstheInternetGoingNUTSSIEEEInternetComputing,November/December2003,Pages:97-9912RosenbergJ.,etal;STUN—SimpleTraversalofUserDatagramProtocol(UDP)ThroughNetworkAddressTranslators(NATs);RFC3489,March20013NewmanMEJ.;TheStructureandFunctionofComplexNetworks;SIAMReview,2003,45,Page(s):167-256。權(quán)利要求1.一種基于互聯(lián)網(wǎng)事件驅(qū)動機制編程模型的建立方法,其步驟為1)采用TCP/IP對等協(xié)議模式使計算節(jié)點具有接收請求和發(fā)送請求的能力;2)在計算節(jié)點之間建立直接對等的交互協(xié)議;3)在計算節(jié)點上建立基于消息的事件監(jiān)聽機制,用于接收數(shù)據(jù);4)建立動態(tài)集群,并在動態(tài)集群內(nèi)采用數(shù)據(jù)多播機制進行數(shù)據(jù)傳輸;所述動態(tài)集群為基于共同需求的計算節(jié)點在某一個時刻形成的計算資源協(xié)作共享模型;5)監(jiān)測所述動態(tài)集群內(nèi)的節(jié)點,將事件發(fā)生節(jié)點的數(shù)據(jù)通過所述數(shù)據(jù)多播機制傳輸給其它節(jié)點;6)結(jié)合軟件工程技術(shù),根據(jù)傳輸?shù)臄?shù)據(jù)類型建立事件驅(qū)動編程模型。2.如權(quán)利要求l所述的方法,其特征在于所述計算節(jié)點包括客戶端和服務器端。3.如權(quán)利要求2所述的方法,其特征在于所述計算節(jié)點之間直接對等的交互協(xié)議的建立方法為1)建立網(wǎng)絡連接監(jiān)聽機制;2)通過IPv6或NAT穿越技術(shù)實現(xiàn)互聯(lián)網(wǎng)上任意節(jié)點的直接連接;3)根據(jù)具體互聯(lián)網(wǎng)應用特征,建立不同的客戶端和服務器端對等交互的協(xié)議。4.如權(quán)利要求l所述的方法,其特征在于利用異步編程模型結(jié)合TCP/IP協(xié)議完成所述建立基于消息的事件監(jiān)聽機制。5.如權(quán)利要求4所述的方法,其特征在于所述基于消息的事件監(jiān)聽機制的工作方法為在獲得相關(guān)遠程事件消息后,啟動本地事件驅(qū)動機制把遠程事件轉(zhuǎn)換成本地事件,來驅(qū)動本地相關(guān)系統(tǒng)對遠程事件予以響應。6.如權(quán)利要求5所述的方法,其特征在于所述相關(guān)遠程事件包括消息遠程事件、文件遠程事件、字節(jié)遠程事件和對象遠程事件。7.如權(quán)利要求1所述的方法,其特征在于所述數(shù)據(jù)多播機制為利用BT協(xié)議形成的拓撲結(jié)構(gòu)進行輕量級數(shù)據(jù)多播,其方法為1)采用BT協(xié)議的跟蹤器監(jiān)測動態(tài)集群中計算節(jié)點的狀態(tài),所述節(jié)點狀態(tài)包括節(jié)點是否處于集群中、節(jié)點是否對某個事件關(guān)注、節(jié)點是否為超級節(jié)點、節(jié)點是否已獲得某個事件;2)對于處于集群中節(jié)點,所述跟蹤器均衡分配多播任務,其方法為首先為傳輸數(shù)據(jù)設置唯一標識;然后所述跟蹤器將確定出的超級節(jié)點作為種子節(jié)點,通過并發(fā)連接向其它節(jié)點傳輸數(shù)據(jù);節(jié)點檢查接收到的數(shù)據(jù)的標識,如果出現(xiàn)重復,則停止傳輸給該節(jié)點的并發(fā)連接節(jié)點;否則傳輸給該節(jié)點的并發(fā)連接節(jié)點繼續(xù)多播。8.如權(quán)利要求7所述的方法,其特征在于所述傳輸數(shù)據(jù)上標識有曾經(jīng)經(jīng)過的節(jié)點,當出現(xiàn)當前到達節(jié)點與輕量級數(shù)據(jù)經(jīng)過的節(jié)點重復時,則停止傳輸;否則,繼續(xù)多播過程。9.如權(quán)利要求1所述的方法,其特征在于所述數(shù)據(jù)類型包括消息、文件、字節(jié)和對象。10.如權(quán)利要求9所述的方法,其特征在于所述事件驅(qū)動編程模型包括消息發(fā)送及相關(guān)事件、文件發(fā)送及相關(guān)事件、字節(jié)發(fā)送及相關(guān)事件和對象發(fā)送及相關(guān)事件。全文摘要本發(fā)明公開了一種基于互聯(lián)網(wǎng)事件驅(qū)動機制編程模型的建立方法,屬于互聯(lián)網(wǎng)應用開發(fā)領(lǐng)域。本發(fā)明首先使計算節(jié)點具有接收請求和發(fā)送請求的能力,然后在計算節(jié)點之間建立直接對等的交互協(xié)議以及在計算節(jié)點上建立基于消息的事件監(jiān)聽機制,之后在具有共同需求的節(jié)點間建立動態(tài)集群并在動態(tài)集群內(nèi)采用數(shù)據(jù)多播機制進行數(shù)據(jù)傳輸;監(jiān)測動態(tài)集群內(nèi)的節(jié)點,將事件發(fā)生節(jié)點的數(shù)據(jù)通過數(shù)據(jù)多播機制傳輸給其它節(jié)點;最后結(jié)合軟件工程技術(shù),根據(jù)傳輸?shù)臄?shù)據(jù)類型建立事件驅(qū)動編程模型。本發(fā)明在不增加網(wǎng)絡成本的前提下,提高了網(wǎng)絡計算資源,同時編程模型內(nèi)部的事件驅(qū)動機制,可以使網(wǎng)絡用戶及時自動的獲取所關(guān)心的事件信息,使網(wǎng)絡服務更加高效、便捷、人性化。文檔編號H04L29/08GK101645912SQ20081011782公開日2010年2月10日申請日期2008年8月5日優(yōu)先權(quán)日2008年8月5日發(fā)明者冰李申請人:北京大學