zoukankan      html  css  js  c++  java
  • 单机事件处理系统设计

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

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

    1 ) 容错

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

    2) 容易审计

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

    3)   容易扩展

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

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

    1) 有event dispatcher 类

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

    2) 没有一个event  dispathcer 类

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

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

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

  • 相关阅读:
    c++中stl函数的使用
    java 中String类的常见方法和StringBuffer类的使用
    c++模板类和模板函数
    c++简单工厂类的设计模式
    Android自定义的button按钮
    c++基类与派生类之间的转换
    Unity和Android结合出现Unabled to convert class into dex format
    jz2240用tftp下载程序步骤
    解决jz2440不能ping同主机问题
    android中的事件传递机制
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2866340.html
Copyright © 2011-2022 走看看