我需要一个消息传递服务,允许我为每个用户创建一个通道,以方便实时通知。如果我的用户在10万到100万之间,那么为每个用户创建一个SQS队列有意义吗?
根据SQS定价文档,创建100万队列只需花费0.40美元,但我会遇到缩放问题吗?
另外,是否有一种方法可以在队列上设置过期日期?如果用户删除了他们的帐户,那么他们的队列就不再存在了。
发布于 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,。
您需要以更好的方式设计解决方案。
发布于 2018-02-15 04:37:35
“为每个用户提供一个通道,以方便实时通知”--您不需要为每个用户设置一个专用队列--您可以通过一个主消息队列来完成这一任务,并且根据您的流量模式,可能会有几个溢出队列来处理超高流量用户。
“一队”你是说?“到底如何将这个规模扩大到100万用户呢?”
用户数与无关。重要的是您的消息消费可以跟上message production (每秒传入消息)。如果你能做到这一点,你的用户就会觉得这是实时的。
“但是.上百万”-是的SQS可以处理很多问题。一个单一的多租户队列在架构和成本方面要比多个单租户通道要大得多。
发布于 2018-01-25 00:13:38
大多数AWS资源卷都是有限的,虽然我没有发现队列数量的任何帐户限制,但我可能错过了它,或者它可能没有发布。如果我的同事把它带给我,我肯定不会对你在这里介绍的每个通知目的地的队列感到兴奋。我会担心在所有侦听器队列中放置相同的通知,然后再读取它们的成本。
你所描述的听起来更像是酒吧的潜艇。或者,如果你想要更好的送货保证,也许是像“动力”或“卡夫卡”这样的流。我也听说过一些人用Redis来实现这类事情。
https://stackoverflow.com/questions/48433618
复制相似问题