我只是在寻找有关如何解决我想要构建的特定事物的想法。
假设我有两套物品。每个项目只是几行 JSON。任何时候将一个项目添加到一个集合中,我都会立即(嗯,几乎)想要针对整个另一个集合进行处理。因此将项目添加到集合 A:针对集合 B 中的每个项目进行处理。反之亦然。
项目通过 API Gateway + Lambda 进入。来自队列/流的 Lambda 中的匹配处理。
哪种 AWS 技术更适合?我不知道集合何时或多久改变一次,也没有明确的模式。另外,我希望它尽可能保持一致。当然,我希望它尽可能无服务器且具有成本效益。:)
选项可能是:
- Aurora 中存储的集合,A 中新项目的匹配处理每次都需要从数据库中查询完整集合 B
- 存储在 DynamoDB 中的集合,可能在后台使用 DynamoDB 流;A 中新项目的匹配处理需要从 Dynamo 查询完整集 B;但是由于读/写配置不明确,负载很尖,不太适合
- 将每个集合放在自己的“静态” Kinesis 流中,其中匹配处理会读取项目但不会修剪。流将定期更换为新集
我的痛点是:在处理来自 A 的项目时,可能需要匹配 B 中的数千个项目。而且我想避免每次处理来自 A 的项目时都必须从某个数据库加载完整的集合 B。我正在考虑对集合进行一些缓存,但随后需要一个很好的选项来使缓存在发生变化时失效。