我目前正在使用 Amazon EC2 实例来处理我们的 IoT 产品的通信(开发阶段)。我在扩展实例的规范以克服 future 设备的增加方面缺乏经验。因此,我正在考虑使用 AWS Lambda 并将所有业务逻辑从 EC2 实例移至 lambda。但现在,有几件事我不明白。
在 Lambda 函数的高级设置下,我可以为 Lambda 函数设置内存分配。如果我设置了 512mb 内存,那么如果我的函数需要超过 512mb 内存,内存会自动扩展吗?
我为 lambda 函数设置的内存是否在每次执行时使用?例如,我有 30 个请求需要并发处理。如果我的 Lambda 函数将执行 30 次,这是否意味着我的 30 次执行最多只能使用 512mb 内存?或者我有 512MB 内存可供每次执行使用?
文档指出 Amazon 可能会重用函数实例。那么,如果我同时有 2 个请求,并且 Amazon 重用了函数的现有副本,这是否意味着我的函数实例有可能一次处理两个请求?
每次发出请求时都会建立与数据库的连接。这个连接会保留吗?如果保留的话,那么当函数实例终止时,连接也会终止吗?
最佳答案
如果将内存设置设置为 512MB,则每次调用将恰好有 512MB 可用内存。该设置定义了每次调用函数可以使用的最大值。
是的,它是每次执行(调用)。
它将在后续调用中重用相同的函数。它不会重用并发调用的函数。如果您有 2 个并发函数执行,它们将由 Lambda 函数的 2 个独立实例执行。
如果您在初始化 Lambda 函数时创建数据库连接,而不是等到调用处理程序,那么您可以在多次调用单个函数实例时保留该数据库连接。但是,当您的函数实例终止时,它将无法正常关闭数据库连接。我更喜欢尽可能使用具有 REST API 的数据库(例如 DynamoDB)和 AWS Lambda 函数,以避免处理长期数据库连接的问题。
关于java - 适用于 IoT 的 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592659/