事件驱动架构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)
CQRS特点
- 所有状态改变由Domain Events驱动
- 聚合根接受 Commands,然后发布 Events
- 报表系统 (数据库查询) 将作为一个发布后事件published Events的结果
- 所有来自表现层查询直接走报表系统。
CQRS优点
- 充分封装了业务领域,只暴露行为。
- 查询不使用 domain model
- 没有对象和关系不匹配问题。
- 易于跟踪审计和历史
- 易于和外部系统整合。
- 性能与可伸缩性。
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
Point-to-Point
Store-forward
Request-Reply
消息标准和产品
- Standards:
• AMQP
• JMS
- • Products:
• RabbitMQ (AMQP)
• ActiveMQ (JMS)
• Tibco
• MQSeries
ESB
下页
首页
集群专题
更多伸缩性scalable讨论