一文搞懂函数计算及其工作原理

article/2025/11/10 6:31:18

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


什么是函数计算?

大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器。下图是一个应用从开发到上线的对比图:

 

 

 

在传统 Serverful 架构下,部署一个应用需要购买服务器,部署操作系统,搭建开发环境,编写代码,构建应用,部署应用,配置负载均衡机制,搭建日志分析与监控系统,应用上线后,继续监控应用的运行情况。而在 Serverless 架构下,开发者只需要关注应用的开发构建和部署,无需关心服务器相关操作与运维,在函数计算架构下,开发者只需要编写业务代码并监控业务运行情况。这将开发者从繁重的运维工作中解放出来,把精力投入到更有意义的业务开发上。

 

 

 

上图展示了函数计算的使用方式。从用户角度,他需要做的只是编码,然后把代码上传到函数计算中。上传代码就意味着应用部署。当有高并发请求涌入时,开发者也无需手动扩容,函数计算会根据请求量毫秒级自动扩容,弹性可靠地运行任务,并内置日志查询、性能监控、报警等功能帮助开发者发现问题并定位问题。

函数计算核心优势

 

 

 

1. 敏捷开发

  • 使用函数计算时,用户只需聚焦于业务逻辑的开发,编写最重要的 “核心代码”;

  • 不再需要关心服务器购买、负载均衡、自动伸缩等运维操作;

  • 极大地降低了服务搭建的复杂性,有效提升开发和迭代的速度。

2. 弹性扩容

  • 函数计算根据请求量自动进行弹性扩容,无需任何手动配置;

  • 毫秒级调度计算资源,轻松应对业务洪峰。

3. 稳定高可用

  • 函数计算分布式集群化部署,支持多可用区;

  • 如果某个可用区因自然灾害或电力故障导致瘫痪,函数计算会迅速切换到同区域其他可用区的基础设施运行函数,确保服务高可用。

4. 有竞争力的成本

  • 函数计算提供了丰富的计量模式,帮助您在不同场景获得显著成本优势;

  • 后付费模型按实际使用计算资源计费,不占用计算资源则不计费,资源利用率高达 100% ;

  • 预付费模型根据业务负载估算提前预购计算力,单价更低,组合使用后付费和预付费方式将有效降低成本。

函数计算使用场景

 

 

 

从使用场景来说,主要有三类:

  • Web 应用:可以是各种语言写的,这种可以是使用 Serverless 框架新编写的程序,也可以是已有的应用。比如可能是小程序后端,也可能是 Web API;

  • 对计算能力有很强的弹性诉求的应用:比如 AI 推理、音视频处理、图文转换等;

  • 事件驱动型的应用:比如通过其他阿里云产品驱动的场景,Web Hook、定时任务等。

函数计算已经与很多产品进行了打通,比如对象存储、表格存储、定时器、CDN、日志服务、云监控等十几个产品,可以非常快速地组装出一些业务逻辑。

函数计算工作原理

1. 函数计算调用链路

 

 

 

上图展示了函数计算完整的请求和调用链路。函数计算是事件驱动的无服务器应用,事件驱动是说可以通过事件源自动触发函数执行,比如当有对象上传至 OSS 中时,自动触发函数,对新上传的图片进行处理。函数计算支持丰富的事件源类型,包括日志服务、对象存储、表格存储、消息服务、API 网关、CDN 等。

除了事件触发外,也可以直接通过 API/SDK 直接调用函数。调用可以分为同步调用与异步调用,当请求到达函数计算后,函数计算会为请求分配执行环境,如果是异步调用,函数计算会将请求事件存入队列中,等待消费。

2. 函数计算调用方式

 

 

 

同步调用的特性是,客户端期待服务端立即返回计算结果。请求到达函数计算时,会立即分配执行环境执行函数。

以 API 网关为例,API 网关同步触发函数计算,客户端会一直等待服务端的执行结果,如果执行过程中遇到错误, 函数计算会将错误直接返回,而不会对错误进行重试。这种情况下,需要客户端添加重试机制来做错误处理。

 

 

 

异步调用的特性是,客户端不急于立即知道函数结果,函数计算将请求丢入队列中即可返回成功,而不会等待到函数调用结束。

函数计算会逐渐消费队列中的请求,分配执行环境,执行函数。如果执行过程中遇到错误,函数计算会对错误的请求进行重试,对函数错误重试三次,系统错误会以指数退避方式无限重试,直至成功。

异步调用适用于数据的处理,比如 OSS 触发器触发函数处理音视频,日志触发器触发函数清洗日志,都是对延时不敏感,又需要尽可能保证任务执行成功的场景。如果用户需要了解失败的请求并对请求做自定义处理,可以使用 Destination 功能。

3. 函数计算执行过程

函数计算是 Serverless 的,这不是说无服务器,而是开发者无需关心服务器,函数计算会为开发者分配实例执行函数。

 

 

 

如上图所示,当函数第一次被调用的时候,函数计算需要动态调度实例、下载代码、解压代码、启动实例,得到一个可执行函数的代码环境。然后才开始在系统分配的实例中真正地执行用户的初始化函数,执行函数业务逻辑。这个调度实例启动实例的过程,就是系统的冷启动过程。

函数逻辑执行结束后,不会立即释放掉实例,会等一段时间,如果在这段时间内有新的调用,会复用这个实例,比如上图中的 Request 2,由于执行环境已经分配好了,Request 2 可以直接使用,所以 Request 2 就不会遇到冷启动。

Request 2 执行结束后,等待一段时间,如果这段时间没有新的请求分配到这个实例上,那系统会回收实例,释放执行环境。此实例释放后,新的请求 Request 3 来到函数计算,需要重新调度实例、下载代码、解压代码,启动实例,又会遇到冷启动。

所以,为了减小冷启动带来的影响,要尽可能避免冷启动,降低冷启动带来的延时。

 

 

 

使用预留实例可以完全避免冷启动,预留实例是在用户预留后就分配实例,准备执行环境;请求结束后系统也不会自动回收实例。

预留实例不由系统自动分配与回收,由用户控制实例的生命周期,可以长驻不销毁,这将彻底消除实例冷启动带来的延时毛刺,提供极致性能,也为在线应用迁移至函数计算扫清障碍。

如果业务场景不适合使用预留实例,那就要设法降低冷启动的延时,比如降低代码包大小,可以降低下载代码包、解压代码包的时间。Initializer 函数是实例的初始化函数,Initializer 在同一实例中执行且只执行一次,所以可以将一些耗时的公共逻辑放到 Initializer 中,比如在 NAS 中加载依赖、建立连接等等。另外要尽量保持请求连续稳定,避免突发的流量,由于系统已启动的实例不足以支撑大量的突发流量,就会带来不可避免的冷启动。

【云栖号在线课堂】每天都有产品技术专家分享! 课程地址:https://yqh.aliyun.com/live 立即加入社群,与专家面对面,及时了解课程最新动态! 【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-28 本文作者:孔德慧(夏莞) 阿里云函数计算开发工程师 本文来自:“dockone”,了解相关信息可以关注“dockone”

上云就看云栖号:更多云资讯,上云案例,最佳实践,产品入门,访问:https://yqh.aliyun.com/

本文为阿里云原创内容,未经允许不得转载。


http://chatgpt.dhexx.cn/article/eKL8WUgi.shtml

相关文章

函数计算简介

什么是函数计算 大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器。下图是一个应用从开发到上线的对比图: 在传统 Serverful 架构下,部署一个应用需要购买服务器,部署操作系统,搭建开…

Excel常用函数公式20例

目录 一、【IF函数条件判断】 二、【多条件判断】 三、【条件求和】 四、【多条件求和】 五、【条件计数】 六、【多条件计数】 七、【条件查找】 八、【多条件查找】 九、【计算文本算式】 十、【合并多个单元格内容】 十一、【合并带格式的单元格内容】 十二、…

excel函数公式大全,最常用的6个公式

Excel中的函数引用一些预定义的公式,可以通过输入参数值来计算函数的对应函数,并且函数名称基本上与函数相对应,这很容易记住。在日常工作中,功能可用于数据统计、计算、处理和分析。本文主要介绍EXCEL中一些常用公式,…

前端入门(雷云特效,css)

(推荐个别人写的css特效网站CSS3的奇思妙想,感觉有好多蛮好玩的功能,这个特效是在里面偏下面一点的位置) (最好还是看一下动画的演示效果,直接复制粘贴就行了) 实现原理其实很简单,…

那些让人惊叹的前端特效

大鲨鱼 3D隧道 3D液体 更多特效请看在线效果 在线演示地址 http://gnipbao.github.io/css3-test/menu.html

前端特效——简单下雪(纯css)

原理&#xff1a; 雪花背景平铺&#xff0c;背景图片位置向右下移动的动画 缺点&#xff1a;不会永远都向下移动&#xff0c;动画时间结束会闪回去首帧 实现&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&q…

【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个响应式网站登陆页面|使用全屏可拖动图像滑块~手把手一步一步教学 ~快来收藏吧!

b站视频演示效果: 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个响应式网站登陆页面|使用全屏可拖动图像滑块~手把手一步一步教学 ~快来收藏吧! 效果图: 用到的图片在后面: 完整代码: <!DOCTYPE html> <html lang="en" dir="ltr"…

前端特效-HTML+CSS - 图片悬浮效果

实现的效果 html部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible…

前端特效——时钟

方法一&#xff1a;htmljs <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>钟表</title> </head> <body> <style type"text/css">.time{width:200px;height:50px;background:#030303;c…

前端特效——复杂下雪,雪花纷飞(纯css)

效果&#xff1a; 原理&#xff1a; 因为是用的纯css&#xff0c;所以为了实现很多个雪花&#xff0c;我们就需要创建200个div&#xff08; 数量适量多即可&#xff09; 然后先设置雪花div的共同属性&#xff1a;雪花的背景图片是雪花&#xff0c;给初始大小width: 10px;heig…

前端特效 —— 八卦图旋转(纯css)

原理&#xff1a; 用div的左边框和右边框实现两个半圆 然后用div的before 和 after 伪元素 画 两个小圆 注意&#xff1a;伪元素不加绝对定位&#xff0c;怎么完整显示出来&#xff1f;转为块级元素&#xff0c;宽高就生效了。 然后把小圆的位置移到中间即可 最后加上旋转的…

精美的web前端源码的特效

1.JS自定义烟花特效 这是一款基于JS和Canvas的自定义烟花特效&#xff0c;初始化界面的时候特效是不带声效的绽放&#xff0c;当你点击顶部中间的播放&#xff0c;即可以看到美丽的烟火也可以听到烟花绽放的声音&#xff0c;让你脑海浮现过年团圆放烟火的画面。当然除了声音的…

前端特效 - 前置- - 01. 百叶窗

逆水行舟用力撑&#xff0c;一篙松劲退千寻。 01.百叶窗 今日份打卡&#xff01;---经验值1&#xff01; 进度&#xff1a;001 效果图&#xff1a; 鼠标经过&#xff1a; &#xff08;有过渡&#xff09; 代码&#xff1a; <!DOCTYPE html> <html lang"en"…

【web前端特效源码】使用HTML5+CSS3制作一个会动的文字闪动动画效果~~适合初学者~超简单~ |前端开发|IT软件

b站视频演示效果: 【web前端特效源码】使用HTML5+CSS3制作一个会动的文字闪动动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><titl…

【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个影子~~适合初学者~超简单~ |前端开发|IT软件

b站视频演示效果: 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个影子特效~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name=…

前端特效CSS样式樱花

下面直接上代码: <!doctype html> <html lang"en"> <head> <meta charset"UTF-8"> <title>cloth</title> <style> body { padding:0; margin:0; overflow:hidden; height: 600px; } c…

前端特效炫酷输入框

今天给大家分享的是&#xff1a;前端特效之炫酷输入框 文本输入框在网页应用当中很常见&#xff0c;不管是登录或者是注册等&#xff0c;凡是需要用户输入文字的地方都离不开它&#xff0c;而在一个普通的输入框上面加上一点交互动画&#xff0c;就会让这个输入框变的更加的美…

学会这个前端特效520还怕没CP伴侣

下方是特效视频 【HTML&#xff0b; CSS&#xff0b; JS 实现幽默表白的网页特效 源码放在公众号 欢迎大家来领取-哔哩哔哩】 https://b23.tv/0VrNtxB 源码领取方式 微信扫描二维码 微信搜索 微信公众号 渔夫小猿

前端特效总结

1、前端的一些小的效果 a. ”透明的方块“ /*只需要对 div 设置&#xff1a;background: rgba(57, 61, 82, 0.7)就可以&#xff0c;第四个参数表示透明度的程度&#xff0c;取值为 0-1 */ <!DOCTYPE html> <html><head><meta charset"UTF-8"&g…

20款前端特效动画及源码

最近优化项目时看到一些实用的特效 感觉还不错 下面就分享给大家 代码量过长的我就不展示了 可以去在这里资源站源码部分预览下载 1.Loading加载动画 在canvas画布上&#xff0c;我们动态绘制许多多边形&#xff0c;这些多边形伴随着颜色的随机变化和旋转&#xff0c;形成了奇…