单机事件处理系统设计

目前正在考虑一个单机事件处理系统的架构设计,来完成一个基于事件驱动的系统。

为什么要单独设计一个事件处理系统?

1 ) 容错

      考虑一个场景,你添加了一个物理机器,想要上报给一个master,但是因为什么原因,无法上报,但是物理机确实已经创建了,你现在怎么办。为了保持一致性,最好的方式是缓存这个事件,然后隔一段事件继续上报。这个就是单独的事件处理系统可以帮你做的事情。

2) 容易审计

      所有事件都被集中处理了,特别方便进行安全以及统计处理。

3)   容易扩展

      方便的事件注册/处理。新增事件特别容易。

 

目前有两个架构在考虑中:

1) 有event dispatcher 类

    每种事件,你运行之前需要注册一种事件类型的处理函数,dispatcher类会维护一个map,对应着事件种类和其对应处理函数。

2) 没有一个event  dispathcer 类

    直接用继承树,在相应事件里面直接定义处理函数。

 

 第一种来说相对实现起来复杂一点点,用起来稍微麻烦。但是有一个第二种架构无法比拟的,就是添加新事件以及处理函数时,不用重新编译整个系统,甚至可以在原系统运行的时候动态的加入,你只要运行一个实现了新事件的定义和其实现,然后注册它即可,dispatcher会在内存中map中存储这个新的事件以及其对应的处理函数。

我现在做的系统暂时没有这个如此灵活的需求,暂时就用第二种架构吧。

posted @ 2013-01-18 14:19  zaleilynn  阅读(171)  评论(0编辑  收藏  举报