无服务器平台通过自动扩展计算资源来响应传入的请求,从而处理突发工作负载。当需求激增时,平台会配置额外的函数或服务实例来处理负载,然后在需求下降时将其删除。 这通过事件驱动的执行来管理:每个请求或事件触发一个函数实例,并且平台动态地分配资源。 开发人员无需配置服务器或集群——提供商管理基础设施,允许应用程序在几秒钟内从零扩展到数千个并发执行。 例如,一个处理突然涌入用户的无服务器 API 将启动新的函数实例以并行处理每个请求。
扩展行为取决于平台的并发模型。 大多数无服务器系统为每个请求分配一个函数实例,从而实现并行处理。 但是,存在限制。 诸如 AWS Lambda 之类的平台施加突发并发阈值(例如,在几秒钟内扩展到 3,000 个实例),之后扩展速度会降低到稳定速率。 为了最大限度地减少突发期间的延迟,提供商优化了实例启动时间,但“冷启动”(新实例的初始化延迟)仍然可能发生。 对于无状态工作负载(例如处理图像上传或 API 调用),此模型效果良好。 例如,零售应用程序在促销期间可以使用无服务器函数来处理结帐请求,而无需预先配置服务器,而是依靠平台来随着流量高峰进行扩展。
开发人员可以通过构建快速启动的函数(例如,最大限度地减少依赖项或使用较小的运行时环境)来优化突发工作负载。 一些平台提供“预置并发”(例如,AWS Lambda)以保持实例预热,从而减少冷启动。 诸如 AWS CloudWatch 或 Azure Monitor 之类的监控工具可帮助跟踪扩展模式并识别瓶颈。 但是,有状态工作负载(例如,长时间运行的进程)可能需要额外的模式,例如将状态卸载到外部数据库。 通过设计,无服务器平台优先考虑弹性而非细粒度控制,使其适合不可预测的流量。 例如,数据处理管道可以在零星的数据到达期间动态扩展,从而确保成本效率而无需过度配置。