【发布时间】:2019-01-18 03:48:15
【问题描述】:
将 AWS AppSync 与 lambda 数据源一起使用时,您可能会遇到 N+1 查询问题。
基本上,当您的类型有单独的字段解析器并且您的查询返回这些类型的数组时,您的字段解析器 lambda 将被调用 N 次。
AWS 在解析器中引入了 BatchInvoking lambda 来解决这个问题。在这里您可以阅读更多关于该问题及其解决方案的信息:https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html#advanced-use-case-batching
但是,他们的解决方案不起作用。 BatchInvoking lambda 仅限于 5 个事件(文档中未说明)。这是对 N+1 问题的轻微改进(使其变为 N/5+1),但我认为这还不够,因为更复杂的查询往往会执行很长时间并且需要更多的 lambda 调用。
所以我的问题是你如何处理这个问题?有没有更好的解决方案?
【问题讨论】:
-
我在 AWS AppSync 团队工作。我很乐意将此作为功能请求传递给自定义批量调用的批量大小。
-
半年过去了,还没有解决办法。 @Karthik,它在路线图中吗?
-
@ArthurGurov 我认为现在最好使用 Apollo GraphQL,如果您愿意,您可以在传统的 aws ec2 实例甚至 aws lambda 上托管 apollo 服务器
-
这个问题有什么更新吗?这是一个严重的限制
-
刚刚用干净的设置再次测试了这个,这种未记录和不可更改的行为仍然存在。您可能希望 AWS 在 3 年不添加后至少记录此行为,但不会。
标签: amazon-web-services aws-lambda graphql aws-appsync