在AWS Lambda中使用MongoDB和mLab API

在AWS Lambda中使用MongoDB和mLab API,mongodb,amazon-web-services,aws-lambda,mlab,Mongodb,Amazon Web Services,Aws Lambda,Mlab,通常,您不能在Lambdas中使用MongoDB,因为Lambda函数是无状态的,并且MongoDB上的操作需要连接,因此每次运行函数时设置DB连接都会对性能造成很大影响 我想到的一个解决方案是使用mLab的restapi(),这样我就不需要在每次调用Lambda函数时打开新的连接 在这个问题上,我可以看到mLab的REST服务是否会成为一个瓶颈,再加上我对它的依赖永远不会停止 有什么想法?关于这一点,我有几条建议供您选择。只是因为我从未使用过mLab 设置并使其位于lambda micro服

通常,您不能在Lambdas中使用MongoDB,因为Lambda函数是无状态的,并且MongoDB上的操作需要连接,因此每次运行函数时设置DB连接都会对性能造成很大影响

我想到的一个解决方案是使用mLab的restapi(),这样我就不需要在每次调用Lambda函数时打开新的连接

在这个问题上,我可以看到mLab的REST服务是否会成为一个瓶颈,再加上我对它的依赖永远不会停止


有什么想法?

关于这一点,我有几条建议供您选择。只是因为我从未使用过mLab

  • 设置并使其位于lambda micro服务和MongoDB实例之间。我已经在另一个项目中成功地使用了它。现在有一个EC2实例需要维护,这确实带来了负面影响。然而,建立restheart是相当容易的,工作人员维护它并给予支持是非常棒的
  • 您可以设置一个lambda函数来支付连接和保持连接打开的费用。然后,您的所有其他微服务都可以调用lambda函数来获取所需的数据。如果它更频繁地被点击,您将不必像以前那样频繁地支付DB连接的费用。然而,第一次连接可能非常残酷,所以你可能需要一些东西来保持它温暖。您还将面临潜在的问题,即连接从未正确关闭,最终将耗尽

撇开这两个选项不谈,如果mlab托管您的DB,您已经对他们保持系统运行的能力抱有很大信心。如果他们不能维持API,那么缺乏信心也应该转化为他们保持DB生存的能力。

您的函数多久被调用一次?如果调用它的频率足够高,您可以在处理程序外部设置连接,使其在多次执行之间保持。这是我过去对需要连接的API采取的一种方法,但并非在所有使用情况下都有效。谢谢。你相信DB是对的。尽管其他API文档表示,他们强烈建议不要依赖它,所以耸耸肩。我正在考虑试用documentdb,它内置了一个RESTAPI。根据应用程序的复杂程度,如果它只是按ID使用CRUD操作,您可以尝试使用S3。我写了一个小NPM模块来帮助解决这个问题,因为我已经开始在我写的东西上更加有规律地做这件事了。S3具有难以置信的弹性,其性能令人惊讶地可靠。再加上S3中的一些其他功能,版本控制、跨区域复制和使用云前端前置一个bucket可能会非常引人注目。