使用 EventBridge 的事件驱动模式

在 AWS 上部署应用

Dunieski Otano

Amazon Web Services Solutions Architect

一笔订单,四种响应

  • 一笔订单需触达计费、履约、分析、邮件
  • 直接调用四方脆弱且缓慢
  • 一条事件可并发分发给所有消费者

一条事件从中心主题并行扩散到多个下游服务

在 AWS 上部署应用

选择合适的消息服务

AWS 消息服务 2x2:SQS 队列的生产者-消费者,SNS 发布/订阅多路扩散,EventBridge 事件总线基于规则路由,Kinesis 有序分片可回放

  • SQS:单队列、单消费组,至少一次投递
  • SNS:发布/订阅,将一条消息推送给多订阅者
  • EventBridge:按事件内容路由到多目标
  • Kinesis Data Streams:有序、可回放的流式处理
在 AWS 上部署应用

扇出模式

  • 一条事件需同时送达多个消费者
  • 发布到一个 SNS 主题
  • 各 SQS 队列 订阅该主题
  • 每个消费者获得自己的副本,解耦

SNS 到 SQS 的扇出模式:一个 SNS 主题发布到多个 SQS 队列,每个队列按自身节奏为各自消费者服务

在 AWS 上部署应用

过滤:让消费者只拿所需

  • 无过滤时,每个订阅者都会收到所有事件
  • SNS 订阅过滤策略:按消息属性过滤
  • EventBridge 内容过滤:按事件字段匹配
  • 各消费者仅接收其相关事件

SNS 订阅过滤策略与 EventBridge 内容过滤:每个消费者仅接收匹配其过滤规则的事件,减少不必要处理与成本

在 AWS 上部署应用

用 EventBridge 路由

EventBridge 路由图:事件总线接收多源事件,规则匹配事件模式,匹配事件路由到 Lambda、SQS 等目标服务

  • Event bus:接收多来源事件
  • Rule:匹配特定事件的模式
  • Target:发送匹配事件的目标
  • 一条事件可路由到多个目标
在 AWS 上部署应用

使用 Kinesis Data Streams 进行流处理

  • 连续、实时 的记录流
    • 分片内记录有序
    • 可回放:消费者可从任意点重读
    • 多个消费者可独立读取同一流
    • 适用于点击流、遥测、高吞吐数据

Kinesis Data Streams 架构:生产者将有序记录写入编号分片,三个消费者在不同位置独立读取,回退箭头表示可回放

在 AWS 上部署应用

Lambda 作为事件消费者

  • Lambda 可由 SQS、SNS、EventBridge、Kinesis 触发
  • 事件源映射 代您轮询 SQS 与 Kinesis
  • SNS 与 EventBridge 将事件推送到 Lambda
  • 准实时处理,无需管理服务器

Lambda 由四种事件源触发:事件源映射批量轮询 SQS 与 Kinesis,SNS 与 EventBridge 直接将事件推送到 Lambda

在 AWS 上部署应用

让我们一起练习吧!

在 AWS 上部署应用

Preparing Video For Download...