joh*_*ell 3 messaging message-queue amazon-sqs amazon-web-services
我需要一个消息服务,允许我为每个用户创建一个频道,以便于实时通知.如果我有大约100,000到100万用户,那么为每个用户创建一个SQS队列是否有意义?
根据SQS定价文档,创建100万个队列只需0.40美元,但是我会遇到扩展问题吗?
另外,有没有办法在队列上设置过期日期?如果用户删除了他们的帐户,则他们的队列不再需要存在.
创建队列不是问题.轮询甚至长时间轮询队列对你来说真的很贵.为了处理实时通知,您需要轮询每个队列,其中包含1M个队列,每5秒钟一次.
根据SQS定价,免费套餐后每百万请求的价格为每个请求0.00000040美元.
这意味着您将调用ReceiveMessage API以获取:
1000000 queues * 17280 (1 day in seconds / 5 seconds) = 17280000000 times.
最糟糕的情况是每天约6912.00美元.
您需要以更好的方式构建解决方案.
“为每个用户提供一个通道,以便于实时通知” - 为此,您不需要为每个用户设置一个专用队列 - 您可以使用一个主消息队列来完成此操作,并且根据您的流量模式,可能会有一些溢出排队处理超高流量用户。
你说“一队”?“这到底将如何扩展到 100 万用户?”
用户数量无关紧要。重要的是您的消息消费可以跟上消息生产(每秒传入消息)。如果你能做到这一点,对你的用户来说就像是实时的。
“但是……数百万。” - 是的。SQS 可以处理很多。与多个单租户通道相比,单个多租户队列在架构和成本方面的扩展性要好得多。
| 归档时间: |
|
| 查看次数: |
1710 次 |
| 最近记录: |