AWS serverless设计-Lambda

AWS serverless设计-Lambda

1. 同时执行的次数有限制

Lambda原理其实是不断增加的容器技术。每一个请求就是开启一个容器。

并发执行=(每秒调用次数)x(平均执行时间(秒))
例如,一个Lambda函数平均耗时10秒,每秒发出100个事件会同时执行1000个Lambda函数,这就是极限。

奇妙的是,世界上每个地区的限制其实还不太一样,像美国好像是2000限制。

普通地区AWS Lambda在同一账户的同一区域内限制为1,000。当达到限制时,进一步的函数调用被限制(节流)。注意是同一个账户,不是同一个函数。

有几种方法可以避免限制。

其中之一是“重试处理”。对于同步处理,当发生限制时,Lambda函数会返回 429 错误。如果发生此错误,函数的调用者将执行重试过程。在异步处理的情况下,它会以最长6小时的间隔自动重试。

此外,在 AWS Lambda 的情况下,申请放宽上限,
(但是,很难被接受)。
AWS serverless设计-Lambda_第1张图片

监控和错误分析非常复杂

多个功能在无服务器应用程序中协同工作。 因此,它实际上比一般应用程序更难监控。

Lambda 在运行时也可用于 Java 和 Python 等多种语言。 但是 Lambda 提供的大部分运行时都隐藏在内部,出现问题时难以分析和隔离检查。
AWS serverless设计-Lambda_第2张图片

当然使用AWS CloudWatch日志可以看到足够多的错误信息。一般排查也够用的其实,相对其他的来说已经很好了。比如splunk,Nmap这些

执行时间限制

对于执行时间有限的 AWS Lambda,执行时间在15分钟内。如果有一个执行会超过15分钟的话,需要将进程划分并且并行化。

而且需要考虑Lambda以外的无服务器服务的限制。
例如,API Gateway + Lambda。在这种情况下,您还应该考虑 API 网关的限制。在 API Gateway 的情况下,规范是它最多会在 29 秒内超时。因此,该值会在 29 秒内从 Lambda 函数返回,之后该过程将异步执行。如果流程难以划分和并行化,则需要使用 Amazon EC2 实现需要 15 分钟或更长时间的流程。

AWS Lambda 不能单独使用

不能单独使用 AWS Lambda 执行 Lambda 函数。 为了执行 Lambda 函数,需要设置一个触发器来触发进程在另一个服务资源中启动。
执行 Lambda 的触发器主要有两种类型。 第一个是与触发器同步调用函数的类型。 这适用于 API Gateway 和手动执行。 第二种是检测事件发生并异步执行函数的类型。 这包括从 Amazon S3、CloudWatch Log、CloudWatch Events 等运行。
oudWatch Log、CloudWatch Events 等运行。

你可能感兴趣的:(aws,aws,serverless,云计算)