amazon-web-services - 责任更大的单个 AWS lambda 与责任更少的多个 lambda
问题描述
我目前正在开发一个索引组件,它根据客户端配置在不同的数据库表(DynamoDB、ElasticSearch 等)中创建索引。
可能有 100 多个客户需要不同的索引记录,系统的 TPS 为 700。目前我有两种方法,
- 让一个 lambda 监听 SQS(订阅事件)并从源中提取数据并为每个客户端构建索引记录,并将索引并行放入数据库中。
- 或者,在上述方法中,执行时间会更长——因为并行计算取决于可用内核的总数。因此,有一个小的 lambda 复制带有少量客户端的传入事件(假设对于 1 条传入消息,此 lambda 将创建 10 条新消息,其中包含 10 个客户端的名称)并将其推送到另一个 SQS。另一个订阅它的 lambda 将监听这些消息并为每个客户端构建索引记录,并将索引并行放入数据库中。
所以,这两种方法都有一些缺点,
- 执行时间更长,但 lambda 调用更少。更高的内存和更高的CPU。
- 更少的执行时间,但更多的 lambda 调用。更少的内存和中等高的CPU。
所以,我想要一个成本效益高的解决方案,我可以在其中实现索引组件的最大扇出,以便为多个客户端构建索引。另外,每个 AWS lambda 实例可以实现的最大并行化是多少?
解决方案
推荐阅读
- flutter - 错误:“num?”类型的值 不能分配给“num”类型的变量,因为“num?
- java - 使用 Mockito 在 java 测试类中模拟一个 kotlin 类
- css - 如何将未知宽度的 div 标签(包含文本)与另一个 div 标签下的右侧对齐
- node.js - NodeJS:Sequelize ORM 保存时出错,无法将 DTO 正确映射到实体
- python - PyLDAvis 错误:索引 11588 超出轴 1 的范围,大小为 11588
- python - 如何绘制 NxM 矩阵中列的平均值,python
- java - Netbeans 12 lts 版本未启动
- flutter - 从 Firebase 实时数据库中获取数据时,如何使扩展面板的“已扩展”功能单独工作?
- assembly - 以字符串形式输入,然后以汇编语言 8086 将其写入文件
- python - 如何使用带条件的地图功能?