【发布时间】:2020-08-08 17:56:42
【问题描述】:
我试图了解事件驱动架构如何比传统架构更高效。当然是松耦合的。
让我们想象一下。我们有 2 个 spring-boot 微服务。
微服务-A 引发一个事件,微服务-B 监听该事件并执行一些操作。使用 EDA 方法,微服务 B 依次处理所有这些事件。为了扩展,我必须运行多个微服务 B 实例。但如果我使用传统方法,多个 HTTP 请求将由单个服务器并行处理。那么,使用 EDA 方法,单线程和顺序处理不是一种很好的资源利用方式吗?
【问题讨论】:
-
为什么说事件是一一处理的呢?即使在单线程微服务中,大多数操作也需要大量的 IO 等待,因此它们可以高度并行化。
-
@FrancescCastells,我能这样理解吗?这是意料之中的。由消费者以非阻塞方式处理请求。要提高消息/事件处理速度,请水平扩展异步/非阻塞。
-
跟API场景没什么区别。由于多线程,api 和消息处理器都可以处理许多并发操作。如果操作也被实现为异步,那么您可以增加很多并发性,因为它们不会阻塞线程。在任何情况下,操作都是相同的,它们消耗相同的资源。不同之处在于消息传递是暂时解耦的(请求和执行不需要同时发生)
标签: cloud microservices event-sourcing saga event-driven-design