事件驱动的架构由生成事件流的事件生成者和侦听事件的事件使用者组成 。
事件可几乎实时发送,因此使用者可在事件发生时立即做出响应。 生成者脱离使用者 — 生成者不知道哪个使用者正在侦听。 使用者之间也能彼此脱离,且每个使用者都能看到所有事件。 这与使用者竞争模式不同,在此模式中,使用者从队列中拉取消息,且消息可以一次或多次消费。 在某些系统中(例如 IoT),必须大量引入事件。
事件驱动的架构可以使用发布/订阅模式或事件流模式。
在使用者端,有一些常见的变化:
事件可能来源于系统之外,例如 IoT 解决方案中的物理设备。 在这种情况下,系统必须能够以数据源需要的容量和吞吐量来引入数据。
在上面的逻辑图中,每种类型的使用者都显示为单个框。 实际情况中通常有多个使用者实例,可避免使用者成为系统中的单点故障。 处理事件的容量和频率可能还需要多个实例。 此外,单个使用者可以处理多个线程上的事件。 如果事件必须有序处理或需要恰好一次语义,这可能会带来挑战。 请参阅本博客关于”减少协调架构设计原则“相关文章。