事件驱动架构Event-Driven Architecture

 上页

Event-Driven Architecture

  • Domain Events 领域事件
  • Event Sourcing
  • Command and Query Responsibility CQRS

   Segregation (CQRS) pattern

  • Event Stream Processing 简称ESP
  • Messaging 消息系统
  • Enterprise Service Bus  ESB总线
  • Actors
  • Enterprise Integration Architecture (EIA)

Event Sourcing事件溯源

  • 每个状态的改变都可以表达为事件。事件触发状态改变。
  • 所有的事件被发往EventProcessor
  • EventProcessor 将所有事件保存在 Event Log
  • 系统能够被复位,这样Event Log 会重播。
  • 不再需要ORM, 只要持久化Events。
  • 很多不同的EventListeners被加到EventProcessor,对其监听(or listen directly on the Event log)

EventSourcing


CQRS特点

  • 所有状态改变由Domain Events驱动
  • 聚合根接受 Commands,然后发布 Events
  • 报表系统 (数据库查询) 将作为一个发布后事件published Events的结果
  • 所有来自表现层查询直接走报表系统。

CQRS优点

  • 充分封装了业务领域,只暴露行为。
  • 查询不使用 domain model
  • 没有对象和关系不匹配问题。
  • 易于跟踪审计和历史
  • 易于和外部系统整合。
  • 性能与可伸缩性。

领域事件

CQRS


 

Event Stream Processing事件流处理产品

  • Esper (Open Source)
  • StreamBase
  • RuleCast

ESP

  • ESP—Event Stream Processing:监视事件数据流,分析这些事件。
    CEP—Complex Event Processing:以更加动态方式监测。
  • CEP是ESP的高级。
  • 案例:Esper是一个ESP/CEP容器或框架,实际就是一个JAR包,能整入大部分系统。

Esper特点

  • Esper就会帮助你监视事件
  • 设定告诉Esper,发送的事件中某个参数不能低于某值 。 如果有低于某值的,就会自动激活相应的行为,这实际类似一个观察者模式。

 

Messaging消息

  • Publish-Subscribe 一对多
  • Point-to-Point  一对一
  • Store-forward
  • Request-Reply

Publish-Subscribe

publish subsribe发布订阅
Point-to-Point

点对点
Store-forward

存储向前
Request-Reply

request reply
消息标准和产品

  • Standards:

    • AMQP
    • JMS

  • • Products:

    • RabbitMQ (AMQP)
    • ActiveMQ (JMS)
    • Tibco
    • MQSeries

ESB

esb消息总线

 


 

 

 

下页

首页

集群专题

更多伸缩性scalable讨论