Bil*_*uly 2 amazon-ec2 amazon-web-services aws-lambda
根据我的理解,AWS Lambda在用户无法访问的EC2实例上运行上载的代码.它创建运行上载代码,管理权限和平衡负载所需的运行时环境.这就是我认为AWS Lambda在幕后所做的事情.
引用维基百科:
与在专用服务器,虚拟机或容器上持续运行的代码相比,不经常使用的无服务器代码可能遭受更大的响应延迟.这是因为,与自动扩展不同,云提供商通常在不使用时完全"旋转"无服务器代码.
这是有道理的,但AWS Lambda确实声称使用自动缩放:
AWS Lambda通过运行代码来响应每个触发器,自动扩展您的应用程序.您的代码并行运行并单独处理每个触发器,并根据工作负载的大小进行精确缩放.
我的问题是 -
Lambda不知道它需要的内存和CPU的数量 - 您告诉它并在设置功能时相应计费(在设置之后,您可以根据需要更改它).
Lambda不在单个EC2实例上运行,通常可以理解Lambda函数在docker容器中运行(在封面下的EC2实例上运行) - 或者更有可能使用AWS的EC2 Container服务来执行所有这些lambda的编排.
它通过增加运行实例的数量来"扩展",而不是运行lambda的大小 - 所以如果你同时使用数百个调用充满你的lambda函数,它不会增加你的lambda的内存或cpu,它会旋转额外的处理负载的实例.
当lambda需要启动一个新实例时会有一个延迟 - 特别是如果你有一段时间没有运行它 - 通常被称为冷启动 - 一旦请求继续进入,lambda倾向于保持准备服务下一个请求,因此后续调用运行速度比前1-2快.一旦呼叫停止进入 - AWS 可能会降低实例,但没有关于何时或为何可能发生这种情况的文档.我的经验是,只要有稳定的请求流,延迟就会非常低 - 当你做一个冷启动时,它会招致'再次'让它再次出现.
如果你需要减少'冷启动'延迟,最简单的方法是指定一个更大的内存大小 - 内存和CPU规模串联,所以即使你的功能不需要更多的内存,给它更多的内存将减少初始延迟.
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |