我正在尝试在AWS Lambda上运行apollo graphql服务器。服务器的当前体系结构是-
一个主要的lambda函数保存架构,这是客户端与之交谈的函数。此函数中的每个解析器都调用其他lambda函数,这些函数保留了解析器的核心逻辑。其他lambda函数是使用lambda.invoke方法调用的。
一堆其他lambda函数,每个lambda函数都具有执行特定任务的逻辑。这些将由主要lambda函数中的解析器使用。这些功能还会与dynamoDB进行存储对话。
问题-客户端发出请求,主lambda函数接收请求,调用另一个lambda函数获取结果,主函数获取结果,并将结果返回给用户。 主lambda函数不必要地运行,直到它从调用的lambda函数获得结果为止。这是增加的成本,也有可能链条超过2个级别。
建议的一种解决方案是将所有内容合并为一个功能。但是,将来扩展规模不是难事吗?当它增长时,我将再次开始面临同样的问题。
人们通常如何在lambda上构建他们的graphql服务器?
答案 0 :(得分:1)
我已经在生产环境中运行了“将所有内容整合到一个lambda函数中”架构,大约一年了,它的伸缩性非常好(数百个用户需要庞大的GIS数据,由5个左右的开发人员组成的团队来构建解析器)。 / p>
如果您想查看以下内容,我已经在GitHub上编写了参考实现:https://github.com/rozenmd/graphql-resolvers/tree/master/api
通常,我们将resolvers.js
分成自己的文件夹,每个数据库模型都有一个文件。