本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SNS
Amazon SNS 允许您创建标准主题和 FIFO 主题。主题用于实施发布/订阅(pub/sub)架构。Amazon SNS 支持多种订阅类型,包括电子邮件、短信(假设您已配置发起身份,例如免费电话号码或 10 位长代码)、HTTP(S)端点和 SQS 队列。最终用户对 SNS 主题的订阅(例如电子邮件和短信)必须由订阅用户确认。Amazon SNS 可助力服务广泛分发消息,这意味着单条消息可发送给潜在的大量订阅用户。SNS 标准主题的默认订阅限制为 1250 万。
在微服务环境中,SNS 主题有助于将消息路由和传送逻辑与发布者解耦。这可以通过使用主题筛选器来实现。从概念上讲,主题筛选器与 Amazon EventBridge 规则有些相似,但它们是为每个订阅用户配置的,并非从一个集中位置提供。例如,假设您有:
-
订单服务,用于处理订单。
-
配送服务,用于处理订单配送。
-
忠诚度服务,为会员的订单奖励忠诚度积分。
当订单准备好发货时,会向主题发布一则消息。配送服务订阅了该主题,但没有应用筛选器,因其想了解所有订单。想象一下,您有一项忠诚度服务,负责在会员下单时向他们奖励积分。但是,并非所有订单都是会员下的。忠诚度服务将订阅该主题,但会实施订阅筛选器,以检查指示是会员订单还是访客订单的属性。
考虑一下系统收到最终用户发起付款请求时的情况,如下图所示。这种情况下,多个下游系统需要知道请求已发出,以便采取相应措施。当您使用 Amazon SNS 时,付款将发布到某个 SNS 主题,Lambda 函数会订阅该主题以更新客户和销售数据库。此外,电子邮件订阅功能(须客户确认)会通过订阅筛选器向客户发送确认邮件。
指南
此部分所述的 Amazon SNS 部分功能与事件总线(如 EventBridge)提供的功能存在重叠。考虑在以下情况下使用 Amazon SNS:
-
一个主题将拥有大量订阅用户。
-
您想使用 EventBridge 本身不支持的订阅类型(例如电子邮件或短信)。
-
订阅用户应该能够确定他们的订阅筛选器。
-
您需要按顺序发送消息给订阅用户(按消息组)。
若有许多主题,且需通过订阅和筛选器在微服务间路由消息,EventBridge 通常是更优选择。