【问题标题】:Real time notifications in AWS (server less)AWS 中的实时通知(无服务器)
【发布时间】:2020-11-27 01:33:30
【问题描述】:

我正在 AWS 中内置 typescript 和 Vue 为我的 Web 应用程序实现实时通知。该应用程序由一个 RDS 实例 (mysql) node.js lambda 函数(用于后端)和用于应用程序的 s3 组成。

我的问题是为用户处理在数据库上创建的通知的最佳方式是什么(这包括知道何时创建通知并将其发送给客户端)?这方面的一个例子是说我在数据库中有一个通知表,并且每当需要通知用户的东西都会被添加到该表中。根据我的发现,我有两个选择:1. 使用带有 API 网关的 Web 套接字并使用 lambda 函数与客户端来回通信,或者 2. 使用 AWS IoT (https://www.serverless.com/blog/serverless-notifications-on-aws)。

第一个选项的问题是 lambda 如何知道何时将通知添加到 RDS 实例的通知表中,因为我不能有一个 lambda 函数只是不断地轮询数据库(违背了使用 lambda 的目的)。

如果您有更好的解决方案来处理 Web 应用程序 (Vuejs) 的实时通知,请告诉我。

【问题讨论】:

    标签: amazon-web-services vue.js notifications


    【解决方案1】:

    请忽略我的问题,我认为我已经找到了解决方案。

    -每次有人对数据库等进行更改以获取通知(通过 lambda 发生)时,它还会触发另一个 lambda 函数来通知用户所做的更改。

    用户将使用 Web 套接字保持与 API 网关的连接打开,然后 lambda 函数将查找连接 ID 并将新通知发送给用户。

    如果这没有意义,请告诉我,我会进一步详细说明。这也可能不是最好的解决方案,但我只是一名初级人员,我的老板希望这样做,这对我来说很有意义。

    【讨论】:

      【解决方案2】:

      您可能想看看DynamoDB streams

      这是一个比拥有两个 Lambda 更优雅的解决方案。数据库中的每次插入都会触发 Lambda。然后你需要相应地更新前端。

      有一个教程详细介绍了 DynamoDB 流和 Lambda here 之间的集成。

      根据应用程序扩展的需要,Kinesis 也是一个不错的选择。基本上,如果您只使用 DynamoDB 流,您将在每个请求中调用一次 Lambda,如果您收到大量请求,这将是一个问题。 Kinesis 解决了这个问题,因为您可以将 DynamoDB 中的数据而不是 Lambda 输入 Kinesis,然后每隔 X 秒使用收集的数据调用 Lambda,并在一次调用中对请求的聚合进行操作。

      Here 是有关该集成的一些信息。

      记得考虑使用这些服务的额外费用。

      【讨论】:

      • 感谢您的回答不幸的是我必须使用mysql所以我不能使用dynamo db,但是您提供的解决方案要优雅得多。
      猜你喜欢
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多