`
大涛学长
  • 浏览: 103883 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从函数计算架构看 Serverless 的演进与思考

阅读更多
![0](https://yqfile.alicdn.com/325aa358b3cd32fb5f048222b31ac70fcbf0347e.jpeg)

作者 | 杨皓然  阿里巴巴高级技术专家

> **导读**:云计算之所以能够成为 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](https://yqfile.alicdn.com/2a60851dc91bb92b4833a2a979d016a3f27672c4.png)

 

图 1 - 无服务器计算的特点

无服务器计算的发展历史
-----------

实际上,Serverless 不是一个新概念。计算、存储等领域的很多服务都是 serverless 的模式。例如阿里云推出的第一个云服务,对象存储(OSS),就是 serverless 形态的存储服务。用户不需要关心数据是如何存储在底层服务器上,只为实际使用的存储资源付费。

统计数据表明,近年来,各个云服务商推出的新服务/新功能,超过 70% 都是 serverless 形态。随着云端 serverless 类型的服务种类越来越丰富,用户能够快速使用多种服务构建弹性高可用的云原生应用。因此,serverless 计算正变得越来越流行。

![2](https://yqfile.alicdn.com/e1341f5e3a665d7ca5ba4230062e3ca01bc9ea1f.png)

 

图 2 – 无服务器计算已经无处不在

从函数计算架构看无服务器计算的特性
-----------------

在 serverless 计算中,平台服务接管了底层基础设施的管理,因此平台服务必须处理好容错和资源伸缩等问题,才能充分发挥 serverless 计算的能力。

从阿里云函数计算架构图不难看出:API 服务层完成身份验证、元数据的读写等功能。

*   同步调用函数时,API 服务模块从资源调度模块获取可用的函数执行引擎并发送请求,最后取回结果;
*   异步调用函数时,则将事件写入到消息队列后即返回。由事件分发模块分发事件,整个流程和同步调用类似。

![3](https://yqfile.alicdn.com/a580de11f29d89ea81b7ee10cbcd6f8e74b409bc.png)

 

图 3 - 阿里云函数计算架构

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

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

![4](https://yqfile.alicdn.com/724d3baba73a86ffbf2f43f8f40eb0a7d7478842.png)

图 4 - 函数计算实时伸缩

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

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

无服务器计算的典型应用场景
-------------

借助函数计算,用户几乎可以构建任何类型的应用程序或后端服务,包括 Web 应用后端服务,大规模文件处理,数据实时流式处理等等。

例如借助对象存储和函数计算的集成,用户只需要编写函数处理单个视频。当有大量视频文件被上传到对象存储服务后,会自动触发多个函数实例并发处理。

![5](https://yqfile.alicdn.com/1d78095518a903128ba8e4f6ff21bb3e68593649.png)

 

图 5 - Serverless 视频转码服务

使用函数计算的 HTTP 触发器,用户只需要编写函数处理单个请求。当 TPS 升高时,函数计算会自动扩容计算资源执行多个函数实例处理请求。

![6](https://yqfile.alicdn.com/477ba5bbe03a3b939b0f97b08a807c36a33e2bc6.png)

图 6 - Serverless 网站后端服务

无服务器计算对用户的价值
------------

自阿里云函数计算上线以来,被开发者广泛的用于大规模多媒体数据并行处理、日志/物联网数据的流式处理以及网站后端服务等场景中。从实际使用情况来看,serverless 计算在工程效率、可靠性、性能、成本和安全性等方面给用户带来了巨大的价值。

*   工程效率:借助函数计算和其他云端服务的集成,用户只需要编写少量代码就可以串联多个服务完成复杂的功能。用户不需要负担服务器配置/升级,资源扩容/缩容等繁琐工作,运维成本大幅降低;
*   可靠性:用户不需要购买或维护任何的服务器,不需要安装任何的软件,借助函数计算,系统自动处理基础设施层各种错误,减少宕机、网络中断等危机情况发生,提升系统可靠性;
*   弹性伸缩:应用程序所需计算资源的伸缩能在毫秒级别由 serverless 计算平台自动完成,用户不需要负责增减服务器的数量;
*   低成本:不需要对计算和存储之类的服务预留容量。如果代码没有运行,就不会收费。研究数据表明,70% 以上的服务器资源并未得到充分利用,函数计算采用全新模式,资源使用率达 100%,实践结果显示,通常能节省 10%-90% 的成本。

也就是说,借助函数计算意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。生产实践中,用户用几百行代码就可以实现一个规模上亿、日调用次数几十亿次的图片处理服务。

从云计算 1.0 时代到 2.0 时代
-------------------

云计算 1.0 时代,基础设施的云化(IaaS)为用户提供了和传统 IT 环境近乎一致的体验,让用户能把应用无缝迁移到云端。当人人都能获取所需的计算资源后,如何更高效的管理和使用计算资源,函数即服务(FaaS)则是云计算 2.0 时代最为重要的问题。阿里云函数计算这样的无服务器计算服务,能够从工程效率、可靠性、性能、成本和安全性等方面给用户带来巨大的价值,为广大开发者打开了一扇通往美丽新世界的大门。

10 月 9 日,阿里云宣布正式推出[函数计算 2.0 解决方案](https://cn.aliyun.com/product/fc),为用户提供更具性价比和更高效开发运维体验的 Serverless 计算服务。函数计算 2.0 提供了丰富的计费方式,全新的实例类型、灵活的自定义运行时、全方位升级的工具链。

![7](https://yqfile.alicdn.com/22eae891b6325a68e9589e5d6104f45811f9f15c.png)

 

图 7 - 预付费和后付费

[函数计算 2.0 ](https://promotion.aliyun.com/ntms/act/fc/serv.html)通过一系列创新的功能,解决了当前 Serverless 计算服务在成本、性能、应用构建等方面的痛点,极具竞争力。

全球首家推出预付费(包年包月)的计费模式。相较于后付费,预付费单价降低 70% 以上。应用所需资源中稳定部分使用预付费模式,单价低;弹性部分使用后付费,资源利用率高。结合预付费和后付费,用户能够显著降低成本。

![8](https://yqfile.alicdn.com/40fe518ce2533f6c0621c6c70aa774d43120fa51.png)

 

图 8 - 预留实例和按量实例

更重要的是,函数计算 2.0 新增预留实例类型,允许用户自行管理实例的申请和释放。

通过预留实例,用户能够提前预热函数或者长期保持常驻实例,杜绝因为实例启动带来的请求延迟。当负载超过预留实例处理能力,系统会自动扩容,使用按量实例处理请求。同时函数计算提供了详细的实例使用指标,帮助用户轻松预留合理数目的实例。

![9](https://yqfile.alicdn.com/021a180be52fe93ee975d2eaf96f8a5c551ea844.png)

 

图 9 - 用户体验

用户在函数计算平台上构建弹性高可用的云原生应用,如果没有好用的开发、调试、运维工具,使用体验将大打折扣。

函数计算 2.0 大幅增强了 Serverless 应用构建、运维等方面的用户体验。用户可以在自己的开发机本地环境中创建和云端运行环境一致的沙盒,进行依赖包安装、断点调试等操作。

函数计算 2.0 也提供了 VSCode,Intellij Idea,PyCharm 等流行开发工具的插件,通过图形用户界面的交互方式,进一步降低了工具的使用门槛。

 

 

[原文链接](https://yq.aliyun.com/articles/726194?utm_content=g_1000086166)

本文为云栖社区原创内容,未经允许不得转载。
分享到:
评论

相关推荐

    王晓波-从微服务到Serverless+架构应用与实践V2-32页.pdf

    在王晓波所著的《从微服务到Serverless+架构应用与实践》这份文档中,将探讨从微服务架构向Serverless架构演进的路径,以及在实践中的具体应用。 微服务架构是一种将单一应用程序划分成一组小服务的设计方法,每个...

    Serverless入门与实践 建立思维 技术选型及落地实践.pdf

    在《Serverless入门与实践》中,首先介绍了架构的演进历程,从早期的单体应用架构,到后来的微服务架构,再到现在的Serverless架构。单体架构在业务增长和资源需求增加时,面临单点故障和扩展性问题,而微服务架构...

    Serverless入门与实战.pdf

    **2.3 函数计算的开发与配置** - **编写代码**:支持多种编程语言。 - **部署函数**:通过控制台或CLI工具进行部署。 - **配置触发器**:设置HTTP触发器、定时任务等。 **2.4 函数的调试与部署** - **本地调试**...

    藏经阁-《Serverless 入门与实战》-223.pdf

    在第一章中,作者首先介绍了Serverless架构的演变过程,从传统的服务器托管到现在的无服务器计算,阐述了Serverless的价值所在,包括按需使用、自动伸缩和免运维等优势。接着,书中详细列举了常见的Serverless架构...

    腾讯教育Serverless技术实践及探索.pdf

    腾讯教育在Serverless技术领域的实践和探索主要围绕前端架构的演变、Serverless的定义与逻辑架构、腾讯云Serverless Cloud Function(SCF)的架构解析以及在实际应用中的优化策略。以下是对这些知识点的详细阐述: ...

    广告业务系统Serverless架构实践.pptx

    【广告业务系统Serverless架构实践】的讲解涵盖了从传统架构到Serverless架构的演进过程,以及在解决广告业务中的具体挑战方面的应用。Mobvista作为一家全球领先的移动价值发现平台,其业务主要包括帮助开发者进行获...

    Serverless无服务架构设计解读.docx

    Serverless架构的发展历程可以从传统的物理服务器到虚拟化,再到容器和PaaS的演变中看到。早期,IT系统主要依赖于组织内部管理的裸金属服务器,随后是虚拟化技术,然后是云计算的兴起,以及容器技术的广泛应用,如...

    云原生技术架构与实践.pdf

    - Serverless技术的实际应用场景,如函数计算开发实践等。 4. **DevOps与持续交付** - DevOps的基本理念和发展历程。 - 持续集成与持续部署的最佳实践,包括代码管理、自动化测试等。 5. **云原生安全** - 云...

    Serverless(无服务器)架构的应用模式 (2).pdf

    CNCF定义的Serverless架构主要涉及FaaS(函数即服务)和BaaS(后端服务),但随着技术的发展,Serverless的概念已经超出了FaaS的范畴,包括了像Google Cloud Run、阿里云Serverless应用引擎等服务。 Serverless架构...

    搜索推荐Serverless架构和业务中台技术实践.pdf

    Serverless架构是阿里为了应对业务中台的挑战而引入的一种新型计算模型。它强调“无服务器”概念,意味着开发者无需管理服务器,而是由云服务商自动处理资源分配和弹性伸缩。阿里巴巴的Serverless平台服务于集团62个...

    Serverless工作流简介与技术剖析.pdf

    随着微服务架构和函数即服务(FaaS)的普及,Serverless工作流成为了解决这些问题的关键工具。 传统的单体应用在面对业务量增长时,由于其架构的局限性,往往会出现计算延迟、恢复时间长等问题。为了适应这种变化,...

    Serverless云端一体化研发实践.pptx

    2. **云端一体化研发的架构演进与业务价值** 闲鱼作为阿里巴巴旗下的二手交易平台,其技术架构经历了从基于中台、聚焦差异化到一体化快速研发模式的转变。利用Serverless技术,可以构建一个更加灵活、高效的云端...

    2021年全球Serverless服务洞察(17页).pdf

    Serverless的核心概念包括函数即服务(FaaS)和无服务器计算,FaaS允许开发者编写单个函数来处理特定任务,而无服务器则意味着开发者无需管理底层基础设施。2021年的报告可能会讨论这些技术如何推动了微服务、物联网...

    Serverless+is+Everywhere

    Serverless技术简介中提到,Serverless架构是计算架构演进的产物,它抽象了运行时环境,使得开发者能够通过编写函数并指定所需内存大小来实现计算需求,无需管理服务器的配置、存储和网络等。这一架构相较于传统的...

    Serverless中的前端开发模式探索.pptx

    1. **前端开发在Serverless时代的演进**:从前端的发展历程来看,从基于模板渲染的动态页面,到AJAX实现的前后端分离,再到Node.js带来的前端工程化和全栈开发,而现在,Serverless的出现让前端开发者可以直接利用...

    探索Serverless中的前端开发模式.pdf

    前端开发在Serverless时代的演进经历了多个阶段:从最初的基于模板渲染的动态页面,到利用AJAX实现前后端分离,再到Node.js带来的前端工程化和全栈开发。Serverless的出现进一步推动了这一进程,前端开发可以更加...

    探索Serverless中的前端开发模式.pptx

    这种模式的出现,推动了前端开发从基于模板的动态页面、AJAX实现的前后端分离、再到基于Node.js的前端工程化和全栈开发的持续演进。 Serverless的特点包括事件驱动、无状态和无运维,这些特性降低了运维成本,并使...

    Serverless应用场景

    Serverless的演进展示了计算能力从原始到高效的过程,包括虚拟化技术的出现,将大型物理机分割成独立的虚拟机(VM),再到云计算平台的普及,进一步细化到Docker容器,直至现在的Serverless架构,使得开发者只需关注...

    从跨端框架厂商视角,谈如何加速serverless落地.pdf

    在Serverless架构中,云服务商自动处理资源管理和扩展,开发者只需关注应用代码本身,极大地提高了开发效率和降低了运维成本。 【跨端框架】是为了解决多平台开发问题而出现的工具,如uni-app,它遵循Vue.js语法...

    腾讯IMWEB前端团队一站式Serverless开发解决方案.docx

    #### 一、IMWEB团队Serverless研发模式的演进与思考 ##### (1)云函数开发特点与挑战 随着Serverless技术的兴起和发展,腾讯IMWEB前端团队也开始积极地探索并采用这种新型的技术架构。在实践过程中,团队发现...

Global site tag (gtag.js) - Google Analytics