AWS SQS 是否跨区域复制消息?

问题描述

由于 SQS 是分布式队列,所以它是在同一区域还是不同区域复制消息?查看 AWS docs 处的架构,它显示了正在复制的消息,但它是在同一区域还是不同区域进行复制?

用例:

我正在区域 X 中设置队列,但它可能在世界另一端的区域中被访问。因此,如果有两个工作人员在区域 X 中运行一个,另一个在区域 Y 中运行,两者都从同一个区域 X 队列中获取数据还是区域 X 和区域Y 从他们附近的区域获取数据。

就像 X 从区域 X 收到一条消息一样,在此信息到达区域 Y 以更新队列之前,另一个工作人员从复制区域 Y 队列中取出并读取相同的消息。

P.S :- 我至少在一次语义中了解 SQS。但是我想知道上面用例中的语义。

解决方法

SQS 是区域服务,在单个区域内高度可用。没有跨区域复制功能。您绝对可以从不同区域访问队列,只需使用正确的目标区域初始化 sqs 客户端即可。

,

作为 AWS 服务的标准做法,数据驻留在您创建服务所在的区域内。

也有例外,但这些将要求您作为用户执行允许复制 AMI 或启用 S3 复制等操作。

如果队列在多个区域被消费,它将始终访问 SQS 队列的区域端点,而不是当前区域的端点。

由于 SQS 是一种排队服务,如果您的工作人员分布在各个区域,则可能会将项目从队列中删除并在单个区域中处理(尽管确切的定义是它至少交付一次)。

如果您尝试在多个区域使用消息,最好考虑基于扇出的方法,每个区域的工作人员将从他们自己的 SQS 队列中使用,而不是共享一个。

有关详细信息,请查看 https://aws.amazon.com/getting-started/hands-on/send-fanout-event-notifications/ 文档。