事件管道模型

事件管道模型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中能够动态地设置一个或者多个策略。

相关文章
相关标签/搜索