

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon SNS 中的高吞吐量 FIFO 主题
<a name="fifo-high-throughput"></a>

Amazon SNS 中的高吞吐量 FIFO 主题可以有效地管理高消息吞吐量，同时保持严格的消息顺序，从而确保处理大量消息的应用程序的可靠性和可扩展性。该解决方案非常适合要求高吞吐量和有序消息传递的场景。为了提高使用高吞吐量 FIFO 主题的消息吞吐量，建议增加消息组的数量。有关高吞吐量消息配额的更多信息，请参阅《Amazon Web Services 一般参考》**中的 [Amazon SNS service quotas](https://docs.aws.amazon.com/general/latest/gr/sns.html)。

## Amazon SNS FIFO 主题的高吞吐量使用案例
<a name="fifo-topic-use-cases"></a>

以下使用案例重点介绍了高吞吐量 FIFO 队列的不同应用，展示了它们在各行业和场景中的有效性：
+ **实时数据处理**：处理实时数据流（例如事件处理或遥测数据摄取）的应用程序可以利用高吞吐量 FIFO 主题来处理不断涌入的消息，并在保证消息顺序的同时，进行准确分析。
+ **电子商务订单处理**：在电子商务平台中，保持客户交易顺序至关重要，高吞吐量 FIFO 主题可以确保订单按顺序交付并且不会出现延迟，即使在购物高峰期也是如此。
+ **金融服务**：金融机构在处理高频交易或交易数据时，依靠高吞吐量 FIFO 主题以最小的延迟处理市场数据和交易，同时遵守严格的消息顺序监管要求。
+ **媒体流式传输**：流媒体平台和媒体分发服务利用高吞吐量 FIFO 主题来管理媒体文件和流媒体内容的分发，确保用户获得流畅的播放体验，同时保持正确的内容分发顺序。

## Amazon SNS FIFO 主题高吞吐量的分区和数据分发
<a name="fifo-topic-partitians-and-data-distribution"></a>

对于高吞吐量主题，Amazon SNS 可以跨分区分发 FIFO 主题数据。分区是为主题分配的容量，可在 AWS 区域内的多个可用区中自动进行复制。您无需管理分区。相反，Amazon SNS 会根据入口速率自动代表您管理分区。

对于 FIFO 主题，在以下情况下，Amazon SNS 会修改主题中的分区数量：
+ 如果当前发布速率接近或超过现有分区所能支持的速率，则会分配其他分区，直到主题达到区域配额。有关更多信息，请参阅《Amazon Web Services 一般参考》**中的 [Amazon SNS service quotas](https://docs.aws.amazon.com/general/latest/gr/sns.html)。
+ 如果当前分区的利用率较低，则分区的数量可能会减少。

分区管理在后台自动进行，对程序是透明的。您的主题和消息始终可用。

**注意**  
如果您突然大幅增加主题的流量，同时发送量是平时的数倍，则可能会出现临时[发布](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) API 节流。这种节流在重复数据删除窗口期可能会一直持续，而主题则可以纵向扩展以适应增加的流量。

## 按消息组分发数据 IDs
<a name="fifo-topic-message-group-ids"></a>

将消息发布到 FIFO 主题时，Amazon SNS 使用每条消息的消息组 ID 的值作为内部哈希函数的输入。哈希函数的输出值决定了哪个分区处理消息，一个或多个消息组 IDs 可以由给定分区处理。

**注意**  
Amazon SNS 经过优化，可以在 FIFO 主题的分区中均匀分配项目，无论分区数量如何。 AWS 建议您使用可 IDs 包含大量不同值的消息组。

## 在 Amazon SNS FIFO 主题上启用高吞吐量
<a name="enable-high-throughput-on-fifo-topic"></a>

默认情况下，Amazon SNS FIFO 主题配置为主题级重复数据删除，这由 [https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html) 设置为 `Topic` 的主题属性控制，吞吐量配额更受限制，请参阅《Amazon Web Services 一般参考》中的 [Amazon SNS service quotas](https://docs.aws.amazon.com/general/latest/gr/sns.html)。**

要为 Amazon SNS FIFO 主题启用高吞吐量，请将 `FifoThroughputScope` 属性更新为 `MessageGroup`。此更改可以通过控制台或使用 AWS CLI 和 SDK 完成，也可以在主题创建期间进行设置，Amazon SNS 建议这样做，以获得最佳的客户体验并减少主题被限制的机会。

**重要**  
将主题的 `FifoThroughputScope` 更改为 `MessageGroup` 后，就无法将其恢复为 `Topic` 吞吐量。

## 为任何已订阅的 Amazon SQS FIFO 队列启用高吞吐量模式
<a name="enable-high-throughput-for-sqs-fifo-queue"></a>

向启用了高吞吐量的 Amazon SNS FIFO 主题发布消息并且订阅了一个或多个 Amazon SQS FIFO 队列时，建议您在 Amazon SQS FIFO 队列上启用高吞吐量，以便 Amazon SNS FIFO 高吞吐量主题顺畅传输。有关更多信息，请参阅《Amazon Simple Queue Service 开发人员指南》**中的 [FIFO 队列的高吞吐量](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html)。