Derick
632 words
3 minutes
事件驱动架构

Understanding Event-Driven Systems#

现代系统需要执行的很多任务都是为了响应状态的变化。

将商品添加到购物车、点赞帖子和支付账单都是状态更改,会在各自的系统中触发一组任务。

这一要求为流行的系统架构方法(称为事件驱动架构 (EDA))铺平了道路。

事件驱动架构中有四个主要组件——事件、生产者、消费者和通道。

IMG_2761.jpg

事件是由生产者生成的系统状态的更新。当事件发生时,它会通过通道发送给消费者,然后触发操作或流程。

事件可以同步或异步处理。

IMG_2759.jpg

当使用同步方法时,生产者需要等待消费者处理事件,然后才能继续下一个任务。例如,在线预订酒店时,您的网络浏览器将等待系统完成您的请求并返回结果,然后才能继续。

同步处理为每个给定事件提供了可预测的执行路径,这使得理解和调试变得更加简单。在立即响应至关重要的情况下(例如处理金融交易),这是必要的。然而,其刚性性质使其与生成大量事件或执行耗时处理操作的组件不兼容。同步处理限制了系统的可扩展性和容错能力,这就是为什么它只应在绝对必要时保留。

另一方面,异步处理不等待响应。生产者将事件排队供消费者处理,然后继续执行下一个任务。例如,在社交媒体上发布状态更新不需要立即采取行动。相反,您的关注者可以收到异步通知。

异步处理在事件驱动架构中更常用,因为它比同步方法更好地提高可扩展性、松散耦合、弹性和灵活性。它非常适合频繁且大量生成事件的场景,这通常是大多数使用事件驱动设计构建的系统的情况。竞争条件是异步处理最显着的陷阱,这通常最好通过精心设计的队列来解决。


事件驱动架构是一种可扩展且高效的解决方案,适用于由许多节点或服务组成并处理大量事件的系统。它促进松散耦合,并有助于保持系统灵活且更易于维护。

事件驱动架构
https://blog.ithuo.net/posts/event-driven-architecture/
Author
Derick
Published at
2019-11-09