【问题标题】:What architecture is best for creating a serverless aws service?哪种架构最适合创建无服务器 aws 服务?
【发布时间】:2020-05-13 03:46:59
【问题描述】:

我需要实施一项 AWS 服务,用于存储来自设备的备份数据。 设备通过 id 来识别。服务由 3 个端点组成:

  1. 保存设备备份。
  2. 获取设备备份。
  3. 获取最新的设备备份时间。

备份:二进制数据,从 10kb 到 1mb

加载示例

  1. 每天保存 100 次备份。每天 2k 次恢复备份。
  2. 取 p1 并乘以 100

I came up with 2 architectures.

  1. 哪种架构更适合选择或构建新架构?
  2. 我可以将网关 API 合并为一个,还是需要为每个请求使用单独的 API?
  3. 我可以将 lambda 合并为一个,还是需要为每个操作单独操作?

【问题讨论】:

  • 除非您打算永远保持驱动器运行,否则最好使用另一种方式(屏幕截图)将架构嵌入到问题中。这将使这个问题在驱动图消失后很长一段时间内仍然有用。快乐发帖!
  • lambda 和网关 api 能承受这样的负载吗?备份 - 二进制数据,从 10kb 到 1mb ## 加载示例 1. 每天保存 100 次备份。每天 2k 恢复备份。 2.取p1乘以100

标签: amazon-s3 amazon-ec2 aws-lambda amazon-redshift


【解决方案1】:

设备备份将包含两个元素:

  • 备份数据:最好存储在 Amazon S3 中
  • 元数据关于备份(用户、时间戳、指向备份数据的指针):最好存储在某种类型的数据库中,例如 DynamoDB

这些过程将是:

  • 保存备份:通过 API Gateway 将备份数据发送到 Lambda。 Lambda 函数会将数据保存在 Amazon S3 中并向 DynamoDB 数据库添加一个条目,返回对数据库中备份条目的引用。
  • 检索备份:通过 API Gateway 向 Lambda 发送请求。 Lambda 函数使用 DynamoDB 中的元数据来确定要提供哪个备份,然后创建一个 Amazon S3 预签名 URL 并将 URL 返回到设备。然后设备直接从 S3 存储桶中检索备份
  • 列出备份:通过 API Gateway 向 Lambda 发送请求。 Lambda 函数使用 DynamoDB 中的元数据检索备份列表(或仅检索最新备份),然后返回值。

为每种类型的请求(保存、检索、列表)使用单独的 Lambda 函数会更简洁。这些将通过 API Gateway 中的不同路径触发。

【讨论】:

  • lambda 和网关 api 能承受这样的负载吗?备份 - 二进制数据,从 10kb 到 1mb ## 加载示例 1. 每天保存 100 次备份。每天 2k 恢复备份。 2.取p1乘以100
  • 我还会使用预签名的 S3 url 进行上传。 API Gateway 和 Lambda 绝对可以根据您的负载进行扩展。主要因素将是:(1)成本,(2)延迟和(3)容错。通过使用预签名 url 进行上传,您可以从上传路径中删除 2 个故障点,并允许客户端重试失败的上传,而不会引发额外的 Lambda 调用。根据存储的元数据以及需要检索的方式,您还可以通过将元数据存储在键前缀和 S3 元数据的组合中来移除 Dynamo 依赖项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 2017-09-24
  • 2018-05-07
  • 1970-01-01
相关资源
最近更新 更多