【发布时间】:2016-07-13 12:47:54
【问题描述】:
所以我需要第二双眼睛来纠正或确认我对Amazon SQS 的理解。据我了解,您可以将无限数量的消息添加到一个队列中。一条消息的大小可以是256 KB,如果需要更大,您可以使用 amazon s3 存储 2 GB。在线阅读,似乎有很多这种排队服务的用例。例如,SQS 的一个用例可以充当数据库缓冲区。
但这就是我想做的事情。我想做一个实时消息传递系统。我目前的功能更像是一个留言板,所以实现只是插入到数据库中,然后读取数据并将其打包到JSON 中,然后插入到SQLITE 手机上。这很好用,但我收到了很多人的请求,要求它实现实时。
所以我想知道的是,我可以利用亚马逊SQS 为聊天应用程序编写和读取消息吗?因此,在我的SQS 的理论用例中,将有一个要写入的消息队列,并每秒从该队列中拉出以检查移动设备上的消息。但这就是我感到困惑的地方。由于您不能“Query”来自队列的特定消息,因此每个用户都有一个队列然后应用服务器读取一个通用队列是否有意义?还是我只是在说疯话,应该花费认知资源来考虑在Ec2 实例上实现开放连接?
任何帮助都会很棒,
谢谢!
【问题讨论】:
-
这不是 SQS 的好用例。你能详细说明你使用的是什么数据库吗?是 DynamoDB 吗?
-
感谢您的回复。是的,我也是这么想的。我将 Amazon RDS、Aurora 更专门用于我的主数据库。我实际上正在学习亚马逊 kinesis 更多的是用于实时数据流。所以我想要么用 kinesis 创建一个实时流,然后将它添加到 SQS,以便将数据缓冲区添加到 RDS 中。但是,我确实在文档中看到 DynamoDB 具有流容量。也许同时使用 RDS 和 DynamoDB 进行实时流可能会更好?幸运的是,需要流式传输的数据可以针对 NoSQL 进行规范化,然后插入 RDS。
-
DynamoDB 可能是一个值得研究的好东西,因为它能够根据需求扩展读/写。 DynamoDB 流与 Kinesis 流有点不同,因为 DynamoDB 流本质上是对 DynamoDB 表所做的所有更改的日志。这对于在有新聊天消息时通知聊天参与者很有用。这可能会为您提供所需的近乎实时的性能。
标签: amazon-web-services amazon-s3 amazon-ec2 amazon-sqs