Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Performant API处理许多请求_Node.js_Mongodb_Amazon Web Services_Aws Lambda_Aws Api Gateway - Fatal编程技术网

Node.js Performant API处理许多请求

Node.js Performant API处理许多请求,node.js,mongodb,amazon-web-services,aws-lambda,aws-api-gateway,Node.js,Mongodb,Amazon Web Services,Aws Lambda,Aws Api Gateway,我正在开发一个iOS应用程序来显示来自MongoDB数据库的新闻。该应用程序有大约50000个活跃用户,因此它在服务器上的工作量相当大。我试图重新思考API应该如何构建。我刚刚了解了一些AWSAPI网关、谷歌云函数、Firebase等 如果我只是需要一些函数来提取新闻列表、用户列表等,那么从2017年开始构建此API的最佳方式是什么?我一直认为我应该简单地创建一个带有一些端点的Node.js服务器。但现在,使用AWSAPI网关(每个网关都指向一个AWS Lambda函数)创建单独的端点似乎更为有

我正在开发一个iOS应用程序来显示来自MongoDB数据库的新闻。该应用程序有大约50000个活跃用户,因此它在服务器上的工作量相当大。我试图重新思考API应该如何构建。我刚刚了解了一些AWSAPI网关、谷歌云函数、Firebase等

如果我只是需要一些函数来提取新闻列表、用户列表等,那么从2017年开始构建此API的最佳方式是什么?我一直认为我应该简单地创建一个带有一些端点的Node.js服务器。但现在,使用AWSAPI网关(每个网关都指向一个AWS Lambda函数)创建单独的端点似乎更为有效

但是什么才是真正可扩展的选项呢?

Cloudfront(带缓存)-->API网关-->Lambda将是一个可扩展的解决方案。由于您尚未选择DynamoDB,因此需要管理mongoose以获得存储和可用性

要使其更高级,可以将Lambda Edge与Cloudfront结合使用,使其在多个区域中处于活动/活动状态。因此,如果某个地区出现故障,应用程序仍将可用。

Cloudfront(带缓存)-->API网关-->Lambda将是一个可扩展的解决方案。由于您尚未选择DynamoDB,因此需要管理mongoose以获得存储和可用性

要使其更高级,可以将Lambda Edge与Cloudfront结合使用,使其在多个区域中处于活动/活动状态。所以,如果一个地区出现故障,应用程序仍然可用。

当你说“Performant”时,这在你的场景中是什么意思

如果您需要一些提取新闻列表、用户列表等的函数,那么性能似乎不是问题

如果您想知道AWS无服务器堆栈是否可以处理数千或数百万个请求,答案是肯定的,API网关+Lambda可以处理任何规模的请求

如果您只需要通过散列键查询数据,DynamoDB将非常适合!还有一个。但是,如果您需要执行扫描或一些复杂的查询,这将有点昂贵,有时会很慢。对于这种情况,您可以将DynamoDB数据流式传输到Elasticsearch或数据仓库解决方案

我不确定将Lambda与MongoDB结合是否会有那么好。假设您选择托管的MongoDB服务,例如,您需要为您的系统增加更多的复杂性,例如VPC对等,并且还需要管理/优化到MongoDB()的lambda连接。如果您正在处理一百万个请求调用,我想很多Lambda函数将开始并行运行,那么在您的MongoDB中会打开多少个连接呢

除了AWS无服务器堆栈之外,还有一些可以轻松扩展系统的功能

所有的解决方案都有优缺点,您可以同时使用API网关+Lambda或Elastic Beanstalk(或其他供应商的解决方案)进行扩展。我猜“可伸缩性”是云供应商现在提供的一个内置功能,“性能”只是设计基础设施时应该分析的主题之一。

当你说“性能”时,在你的场景中这意味着什么

如果您需要一些提取新闻列表、用户列表等的函数,那么性能似乎不是问题

如果您想知道AWS无服务器堆栈是否可以处理数千或数百万个请求,答案是肯定的,API网关+Lambda可以处理任何规模的请求

如果您只需要通过散列键查询数据,DynamoDB将非常适合!还有一个。但是,如果您需要执行扫描或一些复杂的查询,这将有点昂贵,有时会很慢。对于这种情况,您可以将DynamoDB数据流式传输到Elasticsearch或数据仓库解决方案

我不确定将Lambda与MongoDB结合是否会有那么好。假设您选择托管的MongoDB服务,例如,您需要为您的系统增加更多的复杂性,例如VPC对等,并且还需要管理/优化到MongoDB()的lambda连接。如果您正在处理一百万个请求调用,我想很多Lambda函数将开始并行运行,那么在您的MongoDB中会打开多少个连接呢

除了AWS无服务器堆栈之外,还有一些可以轻松扩展系统的功能


所有的解决方案都有优缺点,您可以同时使用API网关+Lambda或Elastic Beanstalk(或其他供应商的解决方案)进行扩展。我猜“可伸缩性”是云供应商目前提供的一项内置功能,“性能”只是设计基础设施时应该分析的主题之一。

尽管这是一个很好的问题,但一旦它不是一个特定的编程问题,人们可能会投反对票。尽管这是一个很好的问题,但一旦它不是一个特定的编程问题,人们可能会投反对票。您可以在API网关(在后台使用CloudFront)内启用缓存。不需要在API网关前面放置额外的CloudFront发行版,只用于缓存。CloudFront缓存和API缓存之间的定价各不相同。您可以在API网关(在后台使用CloudFront)内启用缓存。不需要在API网关前面放置额外的CloudFront发行版,只用于缓存。CloudFront缓存和API缓存之间的定价各不相同。和。