aws-lambda - 定期获取第三方数据
问题描述
我有一个拥有 1000 万用户的应用程序。该应用程序有权访问用户的 Google 健康数据。我想使用 Google API 定期读取/刷新用户数据。
我面临的挑战是memory-intensive task
. 由于 Google 不为新数据提供任何回调,因此我将进行后台同步(每 30 分钟一次)。所有用户都将被挑选并添加到队列中,然后将按顺序挑选(取决于工作节点的数量)。
现在,对于每 30 分钟刷新一次的 1000 万用户,我需要很多工作节点。
Each user request takes around 1 sec including network calls.
In 30 mins, I can process = 1800 users
To process 10M users, I need 10M/1800 nodes = 5.5K nodes
相当昂贵。无论是货币上还是运营上。
然后想到了使用 lambdas。但是,lambda 需要一个带有互联网网关的 NAT 才能访问公共互联网。相对来说,很便宜。
想了解规模是否有其他可能的解决方案?
解决方案
如果不了解您的架构和谷歌 API 的更多信息,就很难做出推荐。
首先我会看看谷歌是否提供批量导出功能,然后批量处理用户请求。因此,您可以为 100k 用户发出 1 个请求,而不是为每个用户发出 1 个请求。这将减少与消息元数据的连接和处理/解析相关的开销。
其次,我想看看我是否可以减少处理时间,例如像 python 这样的解释语言在很多情况下比像 C# 或 GO 这样的编译语言慢得多。或者也许可以用更优化的东西替换库或算法。
如果没有您的具体设置的更多细节,很难提供更具体的建议。
推荐阅读
- python - 与 django 一起使用的 chart.js 中未显示第一个和最后一个值
- c# - 如何在与给定输入向量 3 正交的所有向量中找到最接近给定目标向量的向量 3?
- arrays - 如何将元素连接到数组中?
- bash - 如何使用 bash 命令检查最新版本的 git 分支?
- java - Java如何使服务器向连接的每个客户端发送消息
- javascript - 使用没有服务器端渲染 (cookie) 的 CSP 随机数
- ios - 无法从 iOS 应用访问 Firebase 存储默认存储桶
- sql-server - 通过 ASP 文件运行存储过程
- swift - 使用 Alamofire 固定公钥
- amazon-s3 - 无法弄清楚为什么我的代码打印“无”。即使它应该带来价值