首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQS能否为单个帐户扩展多达1,000,000个队列?

SQS能否为单个帐户扩展多达1,000,000个队列?
EN

Stack Overflow用户
提问于 2018-01-25 00:00:35
回答 3查看 4.8K关注 0票数 8

我需要一个消息传递服务,允许我为每个用户创建一个通道,以方便实时通知。如果我的用户在10万到100万之间,那么为每个用户创建一个SQS队列有意义吗?

根据SQS定价文档,创建100万队列只需花费0.40美元,但我会遇到缩放问题吗?

另外,是否有一种方法可以在队列上设置过期日期?如果用户删除了他们的帐户,那么他们的队列就不再存在了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-25 00:09:46

在这里,创建队列不是问题。轮询,甚至长轮询--队列对您来说将是非常昂贵的。为了处理实时通知,您需要轮询每个队列,每5秒轮询1M个队列。

根据SQS的定价,每百万次请求的价格为每1百万次免费服务后的价格为0.00000040美元。

这意味着您将调用ReceiveMessage API,用于:

1000000 queues * 17280 (1 day in seconds / 5 seconds) = 17280000000 times.

在最坏的情况下,大约每天$6912.00,

您需要以更好的方式设计解决方案。

票数 10
EN

Stack Overflow用户

发布于 2018-02-15 04:37:35

“为每个用户提供一个通道,以方便实时通知”--您不需要为每个用户设置一个专用队列--您可以通过一个主消息队列来完成这一任务,并且根据您的流量模式,可能会有几个溢出队列来处理超高流量用户。

“一队”你是说?“到底如何将这个规模扩大到100万用户呢?”

用户数与无关。重要的是您的消息消费可以跟上message production (每秒传入消息)。如果你能做到这一点,你的用户就会觉得这是实时的。

  • 消息消耗可以扩展到您愿意花费的高度--只需生成一个线程来处理每个传入的消息(使用线程池!) !
    • 当然,您需要将每个主机限制在X处理线程上,根据它能处理多少(因此“尽可能高”)
    • 溢出队列是为了控制成本--如果您按比例处理每秒10K条消息,您不希望用户出现并每秒发送100万条消息,从而删除您的服务和其他客户--将其限制在合理的范围内,并以较低的优先级处理其余的消息。

“但是.上百万”-是的SQS可以处理很多问题。一个单一的多租户队列在架构和成本方面要比多个单租户通道要大得多。

票数 5
EN

Stack Overflow用户

发布于 2018-01-25 00:13:38

大多数AWS资源卷都是有限的,虽然我没有发现队列数量的任何帐户限制,但我可能错过了它,或者它可能没有发布。如果我的同事把它带给我,我肯定不会对你在这里介绍的每个通知目的地的队列感到兴奋。我会担心在所有侦听器队列中放置相同的通知,然后再读取它们的成本。

你所描述的听起来更像是酒吧的潜艇。或者,如果你想要更好的送货保证,也许是像“动力”或“卡夫卡”这样的流。我也听说过一些人用Redis来实现这类事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48433618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档