从函数计算架构看 Serverless 的演进与思考
作者 | 杨皓然 阿里巴巴高级技术专家
导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式、降低成本并简化体系结构,用全新的思维更好的满足了用户需求。而无服务器计算(Serverless Computing)作为这个巨大市场的下一个阶段的进化产物,将真正帮助企业实现只专注于业务和构建应用程序,而不必担心 IT 基础设施,这也将成为云服务商未来竞争的关键。
什么是无服务器计算
云原生计算基金会(Cloud Native Computing Foundation, CNCF)对无服务器计算作了如下定义:
Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.
无服务器计算是指开发者在构建和运行应用时无需管理服务器等基础设施。应用被解耦为细粒度的函数,函数是部署和运行的基本单位;用户只为实际使用的资源付费。可见,serverless 计算能够帮助应用开发者摆脱服务器等底层基础设施管理的负担,专注于业务层的创新。
图 1 - 无服务器计算的特点
无服务器计算的发展历史
实际上,Serverless 不是一个新概念。计算、存储等领域的很多服务都是 serverless 的模式。例如阿里云推出的第一个云服务,对象存储(OSS),就是 serverless 形态的存储服务。用户不需要关心数据是如何存储在底层服务器上,只为实际使用的存储资源付费。
统计数据表明,近年来,各个云服务商推出的新服务/新功能,超过 70% 都是 serverless 形态。随着云端 serverless 类型的服务种类越来越丰富,用户能够快速使用多种服务构建弹性高可用的云原生应用。因此,serverless 计算正变得越来越流行。
图 2 – 无服务器计算已经无处不在
从函数计算架构看无服务器计算的特性
在 serverless 计算中,平台服务接管了底层基础设施的管理,因此平台服务必须处理好容错和资源伸缩等问题,才能充分发挥 serverless 计算的能力。
从阿里云函数计算架构图不难看出:API 服务层完成身份验证、元数据的读写等功能。
- 同步调用函数时,API 服务模块从资源调度模块获取可用的函数执行引擎并发送请求,最后取回结果;
- 异步调用函数时,则将事件写入到消息队列后即返回。由事件分发模块分发事件,整个流程和同步调用类似。
图 3 - 阿里云函数计算架构
实时弹性伸缩是函数计算的核心优势,当用户负载出现波峰时,系统能实时扩张资源,平滑应对峰值访问。以异步事件处理为例,整个处理流程分为三步:
- 事件写入函数计算的事件队列;
- 事件分发器从队列中读取事件,并调用对应的函数处理事件;
- 用户函数处理事件。
图 4 - 函数计算实时伸缩
函数计算系统会监控用户的负载变化,各组件均能够根据用户负载动态伸缩。如上图所示,当用户 A 的事件产生速率变大时,系统会自动在每个环节给 A 分配更多的资源,以匹配事件处理的能力。
函数计算采用多级资源调度策略,系统会根据用户负载和资源池水位预判需求,提前准备好计算资源。依托于阿里云飞天分布式系统平台多年的技术积累,在调度的实时性和准确性上取得了很好的平衡,具备毫秒级弹性伸缩的能力。
无服务器计算的典型应用场景
借助函数计算,用户几乎可以构建任何类型的应用程序或后端服务,包括 Web 应用后端服务,大规模文件处理,数据实时流式处理等等。
例如借助对象存储和函数计算的集成,用户只需要编写函数处理单个视频。当有大量视频文件被上传到对象存储服务后,会自动触发多个函数实例并发处理。
图 5 - Serverless 视频转码服务
使用函数计算的 HTTP 触发器,用户只需要编写函数处理单个请求。当 TPS 升高时,函数计算会自动扩容计算资源执行多个函数实例处理请求。
图 6 - Serverless 网站后端服务
无服务器计算对用户的价值
自阿里云函数计算上线以来,被开发者广泛的用于大规模多媒体数据并行处理、日志/物联网数据的流式处理以及网站后端服务等场景中。从实际使用情况来看,serverless 计算在工程效率、可靠性、性能、成本和安全性等方面给用户带来了巨大的价值。
工程效率:借助函数计算和其他云端服务的集成,用户只需要编写少量代码就可以串联多个服务完成复杂的功能。用户不需要负担服务器配置/升级,资源扩容/缩容等繁琐工作,运维成本大幅降低;
可靠性:用户不需要购买或维护任何的服务器,不需要安装任何的软件,借助函数计算,系统自动处理基础设施层各种错误,减少宕机、网络中断等危机情况发生,提升系统可靠性;
弹性伸缩:应用程序所需计算资源的伸缩能在毫秒级别由 serverless 计算平台自动完成,用户不需要负责增减服务器的数量;
低成本:不需要对计算和存储之类的服务预留容量。如果代码没有运行,就不会收费。研究数据表明,70% 以上的服务器资源并未得到充分利用,函数计算采用全新模式,资源使用率达 100%,实践结果显示,通常能节省 10%-90% 的成本。
也就是说,借助函数计算意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。生产实践中,用户用几百行代码就可以实现一个规模上亿、日调用次数几十亿次的图片处理服务。
从云计算 1.0 时代到 2.0 时代
云计算 1.0 时代,基础设施的云化(IaaS)为用户提供了和传统 IT 环境近乎一致的体验,让用户能把应用无缝迁移到云端。当人人都能获取所需的计算资源后,如何更高效的管理和使用计算资源,函数即服务(FaaS)则是云计算 2.0 时代最为重要的问题。阿里云函数计算这样的无服务器计算服务,能够从工程效率、可靠性、性能、成本和安全性等方面给用户带来巨大的价值,为广大开发者打开了一扇通往美丽新世界的大门。
10 月 9 日,阿里云宣布正式推出函数计算 2.0 解决方案,为用户提供更具性价比和更高效开发运维体验的 Serverless 计算服务。函数计算 2.0 提供了丰富的计费方式,全新的实例类型、灵活的自定义运行时、全方位升级的工具链。
图 7 - 预付费和后付费
函数计算 2.0 通过一系列创新的功能,解决了当前 Serverless 计算服务在成本、性能、应用构建等方面的痛点,极具竞争力。
全球首家推出预付费(包年包月)的计费模式。相较于后付费,预付费单价降低 70% 以上。应用所需资源中稳定部分使用预付费模式,单价低;弹性部分使用后付费,资源利用率高。结合预付费和后付费,用户能够显著降低成本。
图 8 - 预留实例和按量实例
更重要的是,函数计算 2.0 新增预留实例类型,允许用户自行管理实例的申请和释放。
通过预留实例,用户能够提前预热函数或者长期保持常驻实例,杜绝因为实例启动带来的请求延迟。当负载超过预留实例处理能力,系统会自动扩容,使用按量实例处理请求。同时函数计算提供了详细的实例使用指标,帮助用户轻松预留合理数目的实例。
图 9 - 用户体验
用户在函数计算平台上构建弹性高可用的云原生应用,如果没有好用的开发、调试、运维工具,使用体验将大打折扣。
函数计算 2.0 大幅增强了 Serverless 应用构建、运维等方面的用户体验。用户可以在自己的开发机本地环境中创建和云端运行环境一致的沙盒,进行依赖包安装、断点调试等操作。
函数计算 2.0 也提供了 VSCode,Intellij Idea,PyCharm 等流行开发工具的插件,通过图形用户界面的交互方式,进一步降低了工具的使用门槛。
欢迎加入函数计算群
“ 阿里巴巴云原生微信公众号(ID:Alicloudnative)关注微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术公众号。”
从函数计算架构看 Serverless 的演进与思考的更多相关文章
- 基于函数计算 + TensorFlow 的 Serverless AI 推理
前言概述 本文介绍了使用函数计算部署深度学习 AI 推理的最佳实践, 其中包括使用 FUN 工具一键部署安装第三方依赖.一键部署.本地调试以及压测评估, 全方位展现函数计算的开发敏捷特性.自动弹性伸缩 ...
- 一元建站-基于函数计算 + wordpress 构建 serverless 网站
前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS ...
- 函数计算: 让小程序开发进入 Serverless 时代
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 吴天龙(木吴 ...
- 从零入门 Serverless | 一文搞懂函数计算及其工作原理
作者 | 孔德慧(夏莞) 阿里云函数计算开发工程师 什么是函数计算 大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器.下图是一个应用从开发到上线的对比图: 在传统 Se ...
- 快速部署 Spring PetClinic 到函数计算平台
简介 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...
- 阿里云函数计算 .NET Core 初体验
体验了一波阿里云函数计算, 已支持 .NET Core 2.1, 那么按照惯例, 来写个 "Hello World" 吧. 作者注: 开发环境 Windows 10 & V ...
- 从函数计算到 Serverless 架构
前言 随着 Serverless 架构的不断发展,各云厂商和开源社区都已经在布局 Serverless 领域,一方面表现在云厂商推出传统服务/业务的 Serverless 化版本,或者 Serverl ...
- 独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless
作者 | 杨丽 出品 | 雷锋网产业组 "Serverless 其实离我们并没有那么遥远". 如果你是一名互联网研发人员,那么极有可能了解并应用过 Serverless 这套技术体 ...
- 阿里云函数计算发布新功能,支持容器镜像,加速应用 Serverless 进程
我们先通过一段视频来看看函数计算和容器相结合后,在视频转码场景下的优秀表现.点击观看视频 >> FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维. ...
随机推荐
- 序列标注(HMM/CRF)
目录 简介 隐马尔可夫模型(HMM) 条件随机场(CRF) 马尔可夫随机场 条件随机场 条件随机场的特征函数 CRF与HMM的对比 维特比算法(Viterbi) 简介 序列标注(Sequence Ta ...
- java基础之和String相关的一些转换
String虽然不是java的基本数据类型,但使用的频率却非常之高,可以说是很常见了. 列举几个常见的关于String的转换,写的有点过于简洁,欢迎纠错和补充 1.Object和String的 ...
- Hackers' Crackdown UVA - 11825
Miracle Corporations has a number of system services running in a distributed computer system which ...
- PHP中sha1()函数和md5()函数的绕过
相信大家都知道,sha1函数和md5都是哈希编码的一种,在PHP中,这两种编码是存在绕过漏洞的. PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值 ...
- Python_函数做字典的值
当需要用到3个及以上的if...elif...else时就要考虑该方法进行简化 通过将函数名称当做字典的值,利用字典的关键字查询,可以快速定位函数,进行执行 [场景]用户查询信息,输入fn查询,执行对 ...
- Bran的内核开发教程(bkerndev)-05 打印到屏幕
打印到屏幕 现在, 我们需要尝试打印到屏幕上.为此, 我们需要管理屏幕滚动, 如果能允许使用不同的颜色就更好了.好在VGA视频卡为我们提供了一片内存空间, 允许同时写入属性字节和字符字节对, 可以 ...
- Linux提权中常见命令大全
在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 root 权限,拿在进行 Linux 提权的 ...
- php 加入 unless 语法
1. php 的版本 :PHP 7.3.0-dev (cli) (built: Mar 18 2018 00:28:55) ( NTS ) 2. unless 语法结构: unless($cond){ ...
- 关于用gulp合并压缩seaJs模块
现在很多人都在用seaJs来开发项目,seaJs上手容易,操作简单.但在后期做合并压缩的时候却中了个巨大无比的坑,但坑也总得有人来填.于是花了将近一个星期的时间来填了这坑,现将填坑的一些心得与大家分享 ...
- Async,Await和ConfigureAwait的关系
[转自]https://mp.weixin.qq.com/s/h10V-FshGoaQUWFPfy-azg 在.NET Framework 4.5中,async / await关键字已添加到该版本中, ...