linugb118--java space

          Java

          事件管道模型

           

          事件管道模型

          很多人知道事件驅(qū)動(dòng)模式,那么事件管道(Event Pipeline)模式是什么?下面我們一起來(lái)探討

          event 的出現(xiàn)是設(shè)計(jì)為一個(gè)對(duì)象的狀態(tài)的改變即就通知對(duì)該對(duì)象感興趣的其他對(duì)象。
          一般產(chǎn)生一個(gè)event總是有個(gè)發(fā)源地,我們可以把這個(gè)發(fā)源地叫做Event Generators而在java的EventObject interface中其實(shí)應(yīng)該就是指的
          source參數(shù)。

          通常我們事件驅(qū)動(dòng)模式是在一個(gè)本機(jī)上做,其實(shí)這個(gè)模式在分布式環(huán)境中也可以采用事件驅(qū)動(dòng)模式。從整個(gè)模式上看,本地的事件驅(qū)動(dòng)模型(local event)
          和遠(yuǎn)程的事件驅(qū)動(dòng)模型(remote event)沒(méi)有什么本質(zhì)區(qū)別,但有幾點(diǎn)需要注意

          1.local event:所有的對(duì)象都在本地包括需要通知的對(duì)象。
            remote event:Event Generators在一段,remote event 有Event Generators產(chǎn)生后通知另外遠(yuǎn)端的entity。

          2.因?yàn)橛羞h(yuǎn)端那么就涉及到網(wǎng)絡(luò)通信,因此通常不能保證網(wǎng)絡(luò)通信一直通暢,所有remote event的模式可能或出現(xiàn)event丟失不能達(dá)到對(duì)方的情況。

           
          3.local event 在本地,所以往往event很快,相應(yīng)的處理的反饋也快,因此你會(huì)發(fā)現(xiàn)本地的event模式通常都類似于http的握手模式,也就是一個(gè)event觸發(fā)
          通常就直接通知給所有監(jiān)聽器。
          而remote event 是遠(yuǎn)程event的傳送,那么在網(wǎng)絡(luò)通信其實(shí)消耗大量的時(shí)間,那么我認(rèn)為client端多event的發(fā)送,server端統(tǒng)一處理一批event可能是節(jié)省資源
          比較好的方式。

          因此我們這里引入Event Pipeline,他是對(duì)server端接收到的event進(jìn)行管理,將event 放入管道進(jìn)行各自策略的處理。
          另外我們把遠(yuǎn)端的Event Listener叫做Remote Event Listener,其實(shí)本質(zhì)是一樣的,只是為了區(qū)分。

          當(dāng)許多remote events 在同一個(gè)管道的時(shí)候,那么我們需要根據(jù)不同的需要來(lái)定制event的策略,下面列舉以下一些策略
          a.In-order delivery
          events按照某種順序傳遞

          b. Efficient delivery
          多個(gè)event 合并為一個(gè)event

          c. Store and forward
          event 暫停在管道中,等待某個(gè)條件出現(xiàn)再繼續(xù)傳遞

          d. Filtering of events
          根據(jù)條件過(guò)濾相應(yīng)event

          e. Grouping of events
          多個(gè)event 被一個(gè)event代替


          PipeLine 流程:

          Event Generator  ---> Event pipeLine -->Event Consumer

          其中pipeLine中可以動(dòng)態(tài)地設(shè)置一個(gè)或者多個(gè)策略。

           

          posted on 2010-12-01 16:46 linugb118 閱讀(1855) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 安岳县| 威信县| 张家港市| 敦煌市| 田阳县| 临沂市| 婺源县| 边坝县| 静海县| 汶川县| 本溪| 肥乡县| 婺源县| 嵊州市| 商水县| 湖北省| 丹棱县| 阳朔县| 肥东县| 崇文区| 台东市| 宣威市| 茂名市| 元氏县| 江达县| 连城县| 龙口市| 肃宁县| 桃江县| 高平市| 璧山县| 赞皇县| 南漳县| 甘肃省| 康平县| 奉新县| 韶山市| 大埔县| 平昌县| 万山特区| 阿勒泰市|