首页 > 解决方案 > 定期获取第三方数据

问题描述

我有一个拥有 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 才能访问公共互联网。相对来说,很便宜。

想了解规模是否有其他可能的解决方案?

标签: aws-lambdaarchitecture

解决方案


如果不了解您的架构和谷歌 API 的更多信息,就很难做出推荐。

首先我会看看谷歌是否提供批量导出功能,然后批量处理用户请求。因此,您可以为 100k 用户发出 1 个请求,而不是为每个用户发出 1 个请求。这将减少与消息元数据的连接和处理/解析相关的开销。

其次,我想看看我是否可以减少处理时间,例如像 python 这样的解释语言在很多情况下比像 C# 或 GO 这样的编译语言慢得多。或者也许可以用更优化的东西替换库或算法。

如果没有您的具体设置的更多细节,很难提供更具体的建议。


推荐阅读