【问题标题】:I need help clarifying a high level use-case of Amazon SQS我需要帮助澄清 Amazon SQS 的高级用例
【发布时间】: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


【解决方案1】:

您是否考虑过使用 Amazon SNS 将聊天消息推送到您的移动设备?每个用户发布到一个主题,而读者订阅该主题。如果应用程序没有运行,你只需要对丢失的消息感到满意。

【讨论】:

    【解决方案2】:

    如果您只有几个(或者可能少于 100 个)用户,您可以考虑为每个用户设置一个 SQS 队列。如果不是这样,该解决方案将在操作上不可行。

    如果您有一个通用队列,SQS 将无济于事,因为它不允许在所有可用消息中查询给定字段。

    我可以为您的用例考虑以下选项:

    1. 设置一个 Redis 集群,可能在 Amazon ElastiCache 上。每个用户有一条消息List
    2. MySQL 中有一个Messages 表,可能在AWS RDS 上。这将提供一种简单的方法来查询给定用户的消息。
    3. 您也可以在#2 中使用DynamoDB

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 2016-08-14
      相关资源
      最近更新 更多