AWS SNS 中的延迟和吞吐量是不是足以取代用于发布/订阅的专用 MQ?

Posted

技术标签:

【中文标题】AWS SNS 中的延迟和吞吐量是不是足以取代用于发布/订阅的专用 MQ?【英文标题】:is latency and throughput in AWS SNS good enough to replace dedicated MQ for pub/sub?AWS SNS 中的延迟和吞吐量是否足以取代用于发布/订阅的专用 MQ? 【发布时间】:2013-01-24 06:57:20 【问题描述】:

为了高可用性,我正在考虑将应用程序中的发布/订阅从自托管解决方案 (ZeroMQ) 切换到 AWS Simple Notification Service。这是应用程序的后端,因此应该是相当实时的。

SNS 的延迟和吞吐量是多少?

【问题讨论】:

只是好奇:您为什么选择 SNS 而不是 SQS?对于 HA,SQS 可以允许多个 sub 来划分请求。 @PBelzile:首先,SQS 没有真正的发布/订阅模式。 SQS 中发布/订阅的标准方式是使用 SNS + SQS 端点。其次,我不喜欢 SQS 主动轮询。第三,根据我的经验,我知道 SQS 的延迟非常高且不可预测。 这里有一些关于这个问题的可靠数据,如果你使用 SQS 作为你的 SNS 端点:softwaremill.com/amazon-sqs-performance-latency 总而言之:运行具有许多线程的许多节点,你可以期望得到 95% 1300 毫秒内的消息,平均 700 条。在较小的规模上,您可以预期大约 200 毫秒。 【参考方案1】:

应用程序是否将托管在 EC2 上?如果是这样,延迟将大大减少,因为通信渠道将通过亚马逊的连接,而不是通过互联网。

如果您要从未托管在 EC2 上的盒子调用 AWS 服务,这里有一个 cool site,它试图让您了解您与各种 AWS 服务和位置之间的延迟量。

您如何测量 HTTP Ping 请求延迟?

我们正在向 AWS 服务端点(如 EC2、 SQS、SNS 等)用于 PING 并测量观察到的延迟 在所有地区。

至于思考,这取决于你。您可以使用各种策略来提高吞吐量,例如多线程、批处理消息等。

请记住,您将不得不针对一些副作用进行编码,例如可能会看到相同的消息两次(至少一次传递),并且无法依赖 FIFO。

【讨论】:

非常酷的网站,但是我看不到 HTTP ping 从我的位置到 SNS 端点如何转化为服务的延迟。 是的,这看起来不像是合适的答案。这是各个地区从浏览器到服务的延迟,但不能衡量服务是否为real-time

以上是关于AWS SNS 中的延迟和吞吐量是不是足以取代用于发布/订阅的专用 MQ?的主要内容,如果未能解决你的问题,请参考以下文章

AWS SNS Android GCM - InvalidPlatformToken

一个 VPC 终端节点用于 AWS 中的多项服务

用于 Apple 推送通知 AWS-SNS 或 Heroku 的更好的服务器是啥?

用于移动推送通知的 AWS SNS 的最大有效负载长度是多少?

我是不是需要 .ebextensions 才能使用 DynamoDB 或 SNS 等 AWS 资源?

来自账户 A 的 AWS Cloudwatch 警报无法发布到账户 B 中的 SNS 主题