AWS lambda 实例的粘性

问题描述 投票:0回答:1

我们正在提供这种形式的 API 背后的资源

/item/{id}/{query_spec}

每个

query_spec
都涉及一些本地计算服务器端,并且每个项目都相当重,因此我们将数据保存在本地(内存+文件)以避免每次查询时从存储(s3)中获取项目数据。实际上,我们还进行了一些预热,以便在可能的情况下进行一些预取。项目的生命周期相对较短,这意味着大多数传入查询(但不是全部)都针对最新的项目(每 1000 万个新项目)。

目前,这是由一组容器(在 ECS 上)提供的,但我们遇到了流量高峰,并且扩展反应不够灵敏。结果是我们过度配置了这项服务。

我想知道 AWS Lambda 是否可以作为这里的一个选择。 根据我的理解,我们可以使用

/tmp
在调用之间本地保存一些数据,以避免一直重新获取。 但是
/tmp
并没有那么大,所以最好的方法是将特定项目
id
的所有查询路由到最近为其提供数据的 lambda 实例(它们已经在本地拥有数据)。

有没有办法在 api-to-lambda 路由上配置这种“粘性”?

还有其他可以提供帮助的设计考虑吗?

amazon-web-services aws-lambda
1个回答
1
投票

一种方法是在容器启动时将 EFS(类似于网络驱动器)安装到容器中,然后将文件保存在 EFS 中,以便所有容器都可以使用该文件,而无需重新下载相同的文件。这也会使容器的“预热”速度更快,因为文件已经可用。

© www.soinside.com 2019 - 2024. All rights reserved.