从零入门Serverless|一文搞懂函数计算及其工作原理

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


什么是函数计算?

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

 

1

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

 

2

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

函数计算核心优势

 

3

1. 敏捷开发

  • 使用函数计算时,用户只需聚焦于业务逻辑的开发,编写最重要的 “核心代码”;
  • 不再需要关心服务器购买、负载均衡、自动伸缩等运维操作;
  • 极大地降低了服务搭建的复杂性,有效提升开发和迭代的速度。

2. 弹性扩容

  • 函数计算根据请求量自动进行弹性扩容,无需任何手动配置;
  • 毫秒级调度计算资源,轻松应对业务洪峰。

3. 稳定高可用

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

4. 有竞争力的成本

  • 函数计算提供了丰富的计量模式,帮助您在不同场景获得显著成本优势;
  • 后付费模型按实际使用计算资源计费,不占用计算资源则不计费,资源利用率高达 100% ;
  • 预付费模型根据业务负载估算提前预购计算力,单价更低,组合使用后付费和预付费方式将有效降低成本。

函数计算使用场景

 

4

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

  • Web 应用:可以是各种语言写的,这种可以是使用 Serverless 框架新编写的程序,也可以是已有的应用。比如可能是小程序后端,也可能是 Web API;
  • 对计算能力有很强的弹性诉求的应用:比如 AI 推理、音视频处理、图文转换等;
  • 事件驱动型的应用:比如通过其他阿里云产品驱动的场景,Web Hook、定时任务等。

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

函数计算工作原理

1. 函数计算调用链路

 

5

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

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

2. 函数计算调用方式

 

6

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

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

 

7

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

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

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

3. 函数计算执行过程

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

 

8

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

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

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

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

 

9

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

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

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

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线视频面试业务融合阿里云,助您找到心仪好工作

“您好,可以听到吗?“ “……. 您…好,我…这里画面卡顿….了!” “…..不好意….思,能重复一下您刚才的描述吗吗吗,没听太清….楚…………..” “哎,感觉这次又糊了,这已经是我的第…

HbuilderX中 真机调试 Android IOS

文章目录一、Android二、IOS2.1. 运行到IOS2.2. 打开调试模式一、Android HbuilderX中 Android 真机调试 二、IOS 2.1. 运行到IOS 2.2. 打开调试模式

终于有人把Python讲清楚了!!

从事Python开发的这些年中,我见过很多相关的教程和书籍,他们大都这样讲 :先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等IO操作.... 就这样一点一点往下说…

浪迹天涯的骨灰级开源爱好者——对话阿里云MVP吴晟

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 吴晟是我见过最“浪”的程序员,喜欢买买买,热爱公路自驾。格子间拘不住他向往自由的…

2019-12-31

2019.12.31 天气:晴 地点:杭州 今天是2019年的最后一天,就用这篇博客来记录一下这一年的历程吧。 时间很快,它从指缝中悄悄划过的时候,我们好似毫无感觉,突然又一年就过去了,大学四年的生活也随…

高科技护航“史上最严”高考

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 人脸识别验证身份、无线电测控车上街、无人机高空巡考……这些平时人们生活中的高科技,将使用到即将到来的高考中…

腾讯云~安装MinIO

文章目录1. 下载安装2. 安全策略组3. 访问控制台https://docs.min.io/docs/minio-quickstart-guide.html1. 下载安装 wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod x minio vim start-minio.sh# 这个是新版的,把后台管理设置为9111端口&…

一文详解Serverless架构模式

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 什么是 Serverless 架构?按照 CNCF 对 Serverless 计算的定义,Serverless 架构应该是采用 FaaS&#…

0 改造,让单体/微服务应用成为 Serverless Application

作者 | 陈涛(毕衫)责编 | 寇雪芹头图 | 下载于视觉中国天然云原生的 Serverless1. 云原生时代随着 2013 年以 Docker 为代表的容器技术、CNCF 基金会以及 K8s 的发展等,云原生开始被广大开发者所熟知。云原生时代之前还有两个阶段&#xff1a…

vmware虚拟机为何和主机网段不一样 电脑 虚拟机 手机同一网段

NAT 改为“桥接”,即直接连接到物理网络,这样虚拟机和物理主机就处于在同一网段了 电脑ip 虚拟机 手机网络

汽车产业云上多地域高可用消息系统构建

汽车产业互联网平台大搜车由姚军红创立于2012年12月,先后获得阿里巴巴集团、蚂蚁金服、晨兴资本、华平投资、春华资本等机构超过12亿美元融资。2017年12月,大搜车列入由硅谷全球数据研究机构PitchBook评选的“2017年全球新晋独角兽”名单。 目前&#x…

一文带你初识---虚拟dom

好久没有来博客了,疫情期间3月中旬从杭州实习公司辞职,在杭州的出租房呆了两个月,准备毕设和毕业相关的材料,顺便找新的工作。最终还是留在了魔都这座城市。现在也算稳定下来了,准备以后好好维护一下博客。第一篇文章就…

漫画通信:一图看懂通信发展史

原文链接 本文为云栖社区原创内容,未经允许不得转载。

为什么要使用 Kubernetes 准入控制器

Kubernetes 准入控制器是什么?为什么要使用准入控制器?如何使用?本文对 Kubernetes 准入控制器进行了详细解释。来源 | K8sMeetup作者 | Arun Prasad头图 | 下载于视觉中国Kubernetes 控制平面由几个组件组成。其中一个组件是 kube-apiserver…

HTTP系列学习(笔记二):HTTPS与HTTP的区别在哪?

图文详解: 对称加密 :加密与解密的算法一样 非对称加密:加密与解密的算法不同 加密算法: 明文 -> encode 加密 -> 密文 -> decode 解密 -> 明文 摘要算法: 加密后得到固定长度的摘要,无法解…

程序员晒元宵节福利,网友:看了我想砸键盘......

再过几天就到元宵节了,又到了互联网大厂晒福利、拉仇恨的时候了。小编在脉脉上看到许多不愿透露姓名的网友的爆料,一起来看看吧。有的网友说收到了汤圆,还有员工说收到了四盒草莓,但是还有网友透露自己喜提加班,更有甚…

深度解读OpenYurt:从边缘自治看YurtHub的扩展能力

作者 | 新胜 阿里云技术专家 导读:OpenYurt 开源两周以来,以非侵入式的架构设计融合云原生和边缘计算两大领域,引起了不少行业内同学的关注。阿里云推出开源项目 OpenYurt,一方面是把阿里云在云原生边缘计算领域的经验回馈给开源…

HTTP系列学习(笔记一):一文带你详解HTTP协议

1、什么是协议 计算机中的协议和现实生活中的协议是一样的,一式多份,彼此都遵从共同的一个规范,这个规范就可以称之为协议。 2、HTTP协议的工作流程 3、HTTP请求信息和响应信息的格式 请求: 响应: 常见状态码&…

阿里高级技术专家总结6年来的成长和收获

7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!点击图片或戳我查看详情和投简历 作者 | 箫逸 阿里文娱高级技术专家 导读:转眼 2020 已…

一目了然的 Docker 环境配置指南

来源 | Datawhale作者 | Tianchi头图 | 下载于视觉中国Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机&#xff0…