事件管道模型

事件管道模型java

不少人知道事件驅動模式,那麼事件管道(Event Pipeline)模式是什麼?下面咱們一塊兒來探討網絡

event 的出現是設計爲一個對象的狀態的改變即就通知對該對象感興趣的其餘對象。
通常產生一個event老是有個發源地,咱們能夠把這個發源地叫作Event Generators而在java的EventObject interface中其實應該就是指的
source參數。分佈式

一般咱們事件驅動模式是在一個本機上作,其實這個模式在分佈式環境中也能夠採用事件驅動模式。從整個模式上看,本地的事件驅動模型(local event)
和遠程的事件驅動模型(remote event)沒有什麼本質區別,但有幾點須要注意ide

1.local event:全部的對象都在本地包括須要通知的對象。
  remote event:Event Generators在一段,remote event 有Event Generators產生後通知另外遠端的entity。設計

2.由於有遠端那麼就涉及到網絡通訊,所以一般不能保證網絡通訊一直通暢,全部remote event的模式可能或出現event丟失不能達到對方的狀況。server

 
3.local event 在本地,因此每每event很快,相應的處理的反饋也快,所以你會發現本地的event模式一般都相似於http的握手模式,也就是一個event觸發
一般就直接通知給全部監聽器。
而remote event 是遠程event的傳送,那麼在網絡通訊其實消耗大量的時間,那麼我認爲client端多event的發送,server端統一處理一批event多是節省資源
比較好的方式。對象

所以咱們這裏引入Event Pipeline,他是對server端接收到的event進行管理,將event 放入管道進行各自策略的處理。
另外咱們把遠端的Event Listener叫作Remote Event Listener,其實本質是同樣的,只是爲了區分。事件

當許多remote events 在同一個管道的時候,那麼咱們須要根據不一樣的須要來定製event的策略,下面列舉如下一些策略
a.In-order delivery
events按照某種順序傳遞ip

b. Efficient delivery
多個event 合併爲一個eventci

c. Store and forward
event 暫停在管道中,等待某個條件出現再繼續傳遞

d. Filtering of events
根據條件過濾相應event

e. Grouping of events
多個event 被一個event代替


PipeLine 流程:

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

其中pipeLine中能夠動態地設置一個或者多個策略。

相關文章
相關標籤/搜索