zoukankan      html  css  js  c++  java
  • 软件架构---事件驱动架构

    事件(event)就是状态的显著变化,比如说前面提到的客户下单被执行。从来源来分,事件可以分为系统内部事件和外部事件。从类型来分,可以分为业务事件和系统事件。

    事件驱动架构(Event Driven Architecture,EDA)一个事件驱动框架(EDA)定义了一个设计和实现一个应用系统的方法学,在这个系统里事件可传输于松散耦合的组件和服务之间。一个事件驱动系统典型地由事件消费者和事件产生者组成。事件消费者向事件管理器订阅事件,事件产生者向事件管理器发布事件。当事件管理器从事件产生者那接收到一个事件时,事件管理把这个事件转送给相应的事件消费者。如果这个事件消费者是不可用的,事件管理者将保留这个事件,一段间隔之后再次转送该事件消费者。这种事件传送方法在基于消息的系统里就是:储存(store)和转送(forward)。

    说到底事件驱动架构就是通过事件进行通信的软件架构。

    它分成四个部分。

    • 事件队列(event queue):接收事件的入口
    • 分发器(event mediator):将不同的事件分发到不同的业务逻辑单元
    • 事件通道(event channel):分发器与处理器之间的联系渠道
    • 事件处理器(event processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作

    对于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成事件代理和事件处理器两部分。

    优点

    • 分布式的异步架构,事件处理器之间高度解耦,软件的扩展性好
    • 适用性广,各种类型的项目都可以用
    • 性能较好,因为事件的异步本质,软件不易产生堵塞
    • 事件处理器可以独立地加载和卸载,容易部署

    缺点

    • 涉及异步编程(要考虑远程通信、失去响应等情况),开发相对复杂
    • 难以支持原子性操作,因为事件通过会涉及多个处理器,很难回滚
    • 分布式和异步特性导致这个架构较难测试
  • 相关阅读:
    Files 的值“
    unable to open databse file
    你选择的点它并不一定在线上!
    各图元对应的DXF名
    combobox下拉列表进行模糊查找时,容易导致光标隐藏
    autocad2010在进行加密时总是出问题
    AutoCAD2010中没有RibbonFoldPanel,需要用RibbonRowPanel替代
    cad2009中把我在2016中定义的块打开为匿名块
    VS2015 未加载程序集时不允许进行更改
    无法将类型为“System.Windows.Forms.SplitContainer”的对象强制转换为类型“System.ComponentModel.ISupportInitialize”
  • 原文地址:https://www.cnblogs.com/sdysyhj/p/11057497.html
Copyright © 2011-2022 走看看