仅为代码实际运行资源付费 解构国内首个函数计算

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月15万CU 3个月
简介:

4月26日,在云栖大会・南京峰会上,阿里云宣布函数计算(Function Compute)启动邀测。这是国内首个事件驱动的无服务器计算平台。用户按需调用、按需付费,无需管理服务器等基础设施,特别适用于应用场景中有明显波峰波谷的企业。

图片描述

通过函数计算,用户无需再管理服务器等基础设施,只需编写代码并上传。函数计算会为用户准备好计算资源,以弹性、可靠的方式运行代码,并提供日志查询,性能监控,报警等功能。

借助于函数计算,可以快速构建任何类型的应用和服务,无需管理和运维。更棒的是,只需要为代码实际运行消耗的资源付费 ——代码未运行则不产生费用。

让我们以构建一个视频处理后端服务为例,来体验以serverless的方式开发应用的高效。

在示例场景中,用户将生成的高清视频文件上传到阿里云对象存储(OSS)上,这些视频文件需要转码为不同码率的文件(360P,720P,……)以适配不同的播放设备。最终结果文件被存储到OSS上,由用户消费。

如果以传统的server-based方式构建系统,用户需要购买和设置服务器,编码实现高性能服务器软件。并且要考虑一系列容量预估、容错、运维监控等方面的问题。例如,

  • 需要多少台服务器?什么规格?
  • 如何配置网络/操作系统?
  • 如何部署升级?
  • 如何处理服务器宕机?
  • 如何负载均衡?
  • 如何根据负载实时动态伸缩?
  • 如何对系统监控报警?
  • ……

图片描述
图 1 server-based后端服务

如果以serverless的方式构建系统,用户只需要编写处理单个请求的视频转码函数,并设置相应的OSS触发器即可,函数计算系统会保证函数被可靠的执行。大大提高了开发效率。

图片描述
图 2 serverless后端服务

架构总览

接下来,让我们从安全性,可用性和可扩展性的角度来审视函数计算的架构。看看它是如何帮助用户构建弹性高可用的应用。

整个系统架构如下图所示。API服务层完成身份验证,元数据的读写等功能。如果是同步函数调用请求,则API Server从资源调度模块获取可用的函数执行引擎并发送请求,最后取回结果。如果是异步调用,则将事件写入到消息队列后即返回。由事件分发模块分发事件,整个流程和同步调用类似。

图片描述
图 3 函数计算架构

安全性和访问控制

作为一个通用的计算服务,函数计算允许用户运行任意代码。因此保证用户信息安全是函数计算最高优先级的目标。我们在系统设计中坚持以下两个原则:

  • 使用最高级别的安全隔离技术,提供与阿里云ECS同等级的安全隔离性。
  • 访问用户的任何资源均需得到用户的显式授权。

整个计算环境的隔离分为两个层面:

  • 执行用户函数的计算资源和函数计算系统的网络是相互隔离的。
  • 不同用户的计算资源和网络是相互隔离的。

通过多层次,多维度的安全隔离,确保用户和函数计算服务本身的信息安全性。

此外,由于用户的函数被其他用户或服务调用或者访问其他资源会涉及到费用和数据安全,因此函数计算要求用户授权。例如,用户想使用阿里云对象存储服务(OSS)触发器时,需要授权OSS服务调用相关函数的权限。通过对触发器的管理,用户可以非常方便的了解指定函数可能被哪些事件源服务调用。关于函数计算的授权模型,请参阅相关文档

高可用

要保证用户函数被可靠的执行,函数计算需要处理以下两类场景:

  • 非预期中断。例如程序崩溃,机器宕机,网络分割故障(network partition)等等。
  • 预期中断。例如用户函数、函数计算系统的升级等等。

非预期中断的处理能力是任何分布式系统都要具备的基本能力,相关技术已经非常成熟,细节我们不再赘述。函数计算本身和依赖的阿里云服务都具备高可用的特性。在有条件的区域,函数计算的系统会跨多个可用区部署,提供更高级别的容灾能力。

对于预期的中断,函数计算系统自身和用户函数都可以做到平滑升级。当升级发生时,正在执行的请求不会被终止,系统会等待请求处理完成,再执行升级操作。未来我们将支持函数的多版本(帮助用户快速回滚)、灰度发布等功能,进一步减轻用户的运维负担。

实时弹性伸缩

实时弹性伸缩是函数计算的核心优势,当用户负载出现波峰时,系统能实时扩张资源,平滑应对峰值访问。以异步事件处理为例,整个处理流程分为三步:

  1. 事件写入函数计算的事件队列。
  2. 事件分发器从队列中读取事件,并调用对应的函数处理事件。
  3. 用户函数处理事件。

图片描述

函数计算系统会监控用户的负载变化,各组件均能够根据用户负载动态伸缩。如上图所示,当用户A的事件产生速率变大时,系统会自动在每个环节给A分配更多的资源,以匹配事件处理的能力。

函数计算采用多级资源调度策略,系统会根据用户负载和资源池水位预判需求,提前准备好计算资源。依托于飞天分布式平台多年的积累,在调度的实时性和准确性上取得了很好的平衡,具备毫秒级弹性伸缩的能力。

另一方面,实时弹性伸缩也是一柄双刃剑,函数有可能被错误触发,不但影响服务可用性,也给用户造成财务损失。以上述视频转码系统为例,每当有新的视频被上传到对象服务(OSS)的指定目录后,函数就会被触发进行转码。但如果用户不小心把处理后的结果文件也写入到了源目录,则形成了一个事件触发的环,导致函数会以指数级速度被错误触发,且永远不能终止。因此系统必须要能控制和隔离错误函数的影响。

图片描述

函数计算在用户粒度设置了函数最大并发调用限制(允许用户自定义),保证用户的费用不会超过一个上限。同时,整个系统从不同层次,不同维度对用户使用的资源进行流控,确保在多租户的环境中,用户不会互相影响。此外,提供丰富的监控和报警功能,能够及时通知用户处理。

总结

云的第一阶段,是基础设施的云化,使得用户有能力使用大规模的计算能力。云的下一阶段的发展,是要解决用户使用云的成本和效率问题,帮助用户实现业务能力的云化。本文从架构设计的角度,剖析了函数计算这样的无服务器计算服务(serverless computing)是如何帮助用户快速构建低成本、高可用、实时伸缩的cloud-native应用。当这些通用的问题在平台层面解决后,用户就能以很高的效率专注于业务层的创新。欢迎大家使用阿里云函数计算,进入无服务器计算的世界。


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
运维 负载均衡 Serverless
函数计算产品使用问题之在同一地域同一时刻最多可以同时运行多少个函数实例
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
Serverless PyTorch 文件存储
函数计算产品使用问题之如何使用并运行PyTorch
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 缓存 监控
函数计算产品使用问题之调用sd生图时,怎么保证高并发场景正常运行
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
Kubernetes 安全 Serverless
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
64 5
|
3月前
|
消息中间件 运维 Serverless
函数计算产品使用问题之如何限制同一时间只能运行一个函数实例
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
存储 缓存 Serverless
函数计算操作报错合集之如何处理运行时报错:“Function time out after 600 seconds”
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
3月前
|
存储 Serverless 文件存储
函数计算产品使用问题之如何让SDXL模型在函数计算FC中运行并生成图像
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
Serverless Go C语言
函数计算产品使用问题之如何在Golang运行时环境中解决glibc依赖问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
人工智能 Serverless API
函数计算产品使用问题之如何在一个Docker容器内运行一个持续监听特定端口的应用程序
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
人工智能 运维 安全
函数计算产品使用问题之设置了每40分钟运行一次任务,没有按照预期执行,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

相关产品

  • 函数计算
  • 下一篇
    无影云桌面