无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

🐇明明跟你说过:个人主页

🏅个人专栏:《未来已来:云原生之旅》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、云计算的发展趋势

2、无服务器计算简介 

二、无服务器架构概述

1、什么是无服务器计算

2、关键组件:函数即服务(FaaS)、事件驱动模型 

3、与传统服务器架构的对比 

三、无服务器架构的优势

1、成本效率

2、灵活性与可扩展性

四、无服务器架构的挑战与局限

1、冷启动问题

2、资源限制与监控难题


一、引言

1、云计算的发展趋势

  1. 云原生技术的普及与深化:云原生技术(包括容器、微服务、持续集成/持续部署CI/CD等)将更加广泛地被采用,以提高应用的灵活性、可移植性和可维护性。容器化和Kubernetes等编排工具将成为标准配置。
  2. 多云与混合云策略的增长:随着企业对云服务的依赖加深,多云(使用多个公有云服务商)和混合云(结合公有云与私有云)策略将更为普遍,以减少供应商锁定,提高业务连续性和灵活性。
  3. 成本优化与服务降价:随着技术成熟和市场竞争,IaaS(基础设施即服务)价格预计将持续下降,同时服务商将提供更多优化成本的方案,如预留实例、节约计划等。
  4. 人工智能与机器学习的整合:AI和ML将成为云服务的重要组成部分,云服务商将提供更多开箱即用的AI服务,助力企业智能化转型,提高数据分析、决策制定的效率和准确性。

2、无服务器计算简介 

无服务器计算(Serverless Computing)是一种云计算服务模型,它允许开发者构建和运行应用程序,而无需直接管理底层服务器或基础设施。尽管名称中有“无服务器”一词,实际上仍然需要物理服务器来支撑服务运行,但这些服务器的管理和维护工作对开发者透明,由云服务提供商全权负责。

在无服务器模型中,应用被分解成一系列功能或微服务,这些功能在需要时被触发执行,通常是响应特定的事件(如文件上传、数据库更改或HTTP请求)。开发者只需要编写并上传代码,云平台会自动管理和分配资源,按实际使用的计算量计费,无需预先支付或保留服务器容量。

二、无服务器架构概述

1、什么是无服务器计算

无服务器计算,听起来好像没有服务器参与一样,但实际上并不是真的没有服务器,而是把管理和维护服务器的复杂工作从开发者那里移开了。想象一下,你开了一家餐厅,但不用自己买地盖厨房、雇厨师、洗碗工,只要告诉别人你想做什么菜(编写代码),就有专业的餐饮团队(云服务提供商)帮你准备好一切,按客人点菜(触发事件)的时候迅速做好并端上桌(执行代码),而且只在有客人点菜时才收费。

具体来说,无服务器计算就是你把应用程序拆分成很多小的功能块(比如计算一个人的年龄、发送邮件等简单任务),每个功能块都是一个独立的“函数”。当你需要使用这些功能时,比如用户点击了一个按钮,云平台就会自动运行对应的函数来完成任务,完成后就停止,不占用资源也不计费。这样,你就不用操心服务器怎么配置、软件怎么更新这些繁琐的事,只需要专注于写出解决问题的代码就行了。这样一来,不仅省事,还能根据实际使用情况灵活付费,成本更低,效率更高。

2、关键组件:函数即服务(FaaS)、事件驱动模型 

在无服务器计算模型中,两个核心概念是“函数即服务(Function as a Service,简称FaaS)”和“事件驱动模型

函数即服务(FaaS)
想象一下,你拥有一支神奇的魔法队伍,每当你说出咒语(也就是一个需求或事件发生),他们立刻出现,完成一项特定的任务后便消失无踪,不留下任何需要你打理的痕迹。FaaS就是这样的一个概念。

在技术领域,FaaS是一种云服务,让你能够上传一小段代码(这个代码块就是一个“函数”),然后设定好什么时候或者在什么条件下(比如文件上传、API调用、定时任务等)去运行这段代码,而不需要你去关心运行这段代码所需的服务器配置、资源分配等问题。代码执行完毕后,资源会被自动回收,你只需为执行这段时间内的计算资源付费。

事件驱动模型
事件驱动模型就像是一个自动化生产线,每一步操作都是由前一步的操作结果(即“事件”)触发的。在无服务器架构中,这种模式尤为重要。

想象你家的智能门铃,当有人按门铃(这是一个事件),就会触发一系列动作:摄像头开始录像、发送通知到你的手机、甚至自动开灯。在这个过程中,每一个动作都是由前一个事件触发的,而不是一直在运行等待任务。

在FaaS中,事件可以是任何事情:用户上传图片、数据库记录更新、网页访问等。一旦这些事件发生,云平台就会自动调用相应的函数去处理这些事件,执行完后函数会自动结束,整个过程高效且按需进行。

总结起来,FaaS提供了运行代码片段的能力,而事件驱动模型确保了这些代码片段只有在需要时才被触发执行,两者结合构成了无服务器计算的核心机制,让开发者能够更高效、低成本地构建和运行应用程序。

  

3、与传统服务器架构的对比 

1. 资源管理与运维

  • 传统服务器架构:通常需要运维人员手动配置和管理服务器硬件、操作系统、中间件以及应用程序的部署。这包括资源的预分配、软件安装、安全补丁更新、性能监控和故障排查等。
  • 无服务器架构:开发者几乎不直接管理底层基础设施,云服务提供商自动处理服务器的配置、扩展、维护和安全更新。用户只需关注业务逻辑的代码编写和部署,极大地减轻了运维负担。


2. 计费模式

  • 传统服务器架构:通常基于固定成本或者预付费模型,即使资源未充分利用,也需要承担一定的费用。包括服务器租赁、带宽、存储空间等固定成本。
  • 无服务器架构:采用按需付费的模式,仅对实际消耗的计算资源(如执行时间、请求次数、存储使用量等)进行计费,这有助于降低成本,特别是在应用负载波动较大的情况下。


3. 扩展性

  • 传统服务器架构:扩展性相对较低,需要提前规划资源以应对高峰负载,手动添加或升级服务器资源。
  • 无服务器架构:具有高度的弹性和自动扩展能力。云服务会根据应用的实际需求自动分配资源,无需人工干预,能够迅速响应突发流量。


4. 开发与部署速度

  • 传统服务器架构:部署新应用或更新现有应用通常需要较长的时间,涉及到环境配置、测试、部署等多个环节。
  • 无服务器架构:函数部署快速,代码上传后即可运行,迭代速度快,有利于快速开发和持续交付。

   

三、无服务器架构的优势

1、成本效率

  1. 按需付费模式:在无服务器计算模型下,用户仅需为实际使用的计算资源和执行时间付费,而不是预先支付固定的服务器租用费用。这意味着在应用需求低谷期,用户不会为闲置的服务器资源买单,大大降低了空闲成本。
  2. 资源自动优化:无服务器架构通过自动伸缩功能,根据应用的实际负载动态分配资源。在流量高峰期,系统自动增加资源以保证性能;而在低峰期,则自动释放资源,减少开支。这种精细化的成本控制策略能够确保资源得到最高效的利用。
  3. 减少运维成本:由于云服务提供商负责底层基础设施的维护和管理,企业无需雇佣大量运维人员进行服务器监控、安全更新、备份等工作,从而节省了大量的人力成本。
  4. 消除前期投资:相较于传统服务器架构,无服务器模式免去了购买和设置服务器的初期投入,降低了进入门槛,特别是对于初创企业和进行新项目试验的团队而言,可以更快地启动项目而无需担心高昂的初始投资。
  5. 成本透明化:无服务器架构的计费模式较为直接和透明,用户可以清晰地看到每一项服务或函数的消耗成本,便于预算管理和成本优化。
  6. 避免资源浪费:由于资源的即时分配和释放,无服务器架构减少了因资源预估不准确导致的过度配置或资源闲置问题,从而避免了不必要的资金浪费。

   

2、灵活性与可扩展性

  1. 快速迭代与部署:无服务器架构允许开发者将应用拆分为微小的功能模块(函数),每个函数都可以独立开发、测试和部署。这种细粒度的管理极大提升了开发效率,使得新功能的添加或现有功能的修改变得迅速且简便,支持快速迭代和持续集成/持续部署(CI/CD)流程。
  2. 无缝扩展:基于事件驱动的机制,无服务器应用能够根据实际需求自动扩展。当请求量增加时,云服务提供商自动分配更多资源来处理额外的工作负载,而不需要开发者手动调整服务器数量或配置。这一特性确保了应用在面对突发流量或长期增长时都能保持高性能和稳定性,同时也避免了过量预置资源带来的浪费。
  3. 地理分布式部署:云服务提供商通常在全球拥有多个数据中心,无服务器架构能够轻松利用这一优势,根据用户地理位置智能路由请求,或在不同地区复制服务,减少延迟,提升用户体验。这对于跨国运营或需快速响应的业务至关重要。
  4. 跨平台兼容性:无服务器函数通常遵循开放标准,这意味着开发者编写的代码可以在不同的云服务商之间迁移,增加了灵活性,减少了供应商锁定的风险。

   

四、无服务器架构的挑战与局限

1、冷启动问题

冷启动问题定义

冷启动指的是在无服务器环境中,当一个函数在一段时间内没有被调用,云服务提供商可能会将其从内存中移除以节省资源。当下一次请求到达时,这个函数需要重新加载到内存中,初始化执行环境,这一过程会产生额外的延迟,即所谓的“冷启动延迟”。

冷启动的影响

  • 延迟增加:用户首次请求或长时间未请求后再次请求时,可能体验到较明显的延迟,影响应用响应速度和用户体验。
  • 资源消耗:冷启动过程中需要加载函数及其依赖,可能会暂时消耗更多的计算和内存资源。
  • 一致性问题:对于要求严格响应时间的应用,冷启动可能导致服务性能不稳定。


应对策略

  1. 预热机制:定期触发函数,保持其活跃状态,减少冷启动发生的概率。
  2. 代码与依赖优化:减小函数包的大小,优化代码结构,减少加载时间。
  3. 使用缓存:缓存函数实例或其依赖,加快重启时的加载速度

   

2、资源限制与监控难题

资源限制

  • 内存和执行时间限制:云服务提供商通常会为无服务器函数设置最大内存使用量和最长执行时间限制。超过这些限制会导致函数执行失败,这对处理复杂或长时间运行的任务构成挑战。
  • 并发执行限制:为了防止资源滥用和保障服务稳定性,云平台还会限制函数的并发执行数量。对于高并发场景,可能需要额外的配置或策略来优化处理能力。
  • 资源争抢:在共享基础设施上,多个函数同时运行可能导致资源竞争,影响性能和响应时间。


监控与调试难题

  • 分布式追踪困难:无服务器应用由多个独立运行的函数组成,这些函数可能跨多个服务和区域运行,追踪请求的完整路径和诊断问题变得复杂。
  • 日志和指标收集:虽然云服务提供商通常提供日志和监控服务,但由于函数的瞬态性质,收集、聚合和分析这些数据以获取有意义的信息可能比较困难。
  • 调试复杂性:由于函数的短暂运行特性,开发者难以复现问题环境进行调试,尤其是冷启动相关的问题。


应对策略

  1. 资源优化:合理分配函数的内存和执行时间,优化代码以减少资源消耗,必要时利用云平台的高级配置来调整限制。
  2. 采用专业监控工具:利用云服务商提供的或第三方监控工具,实现详细的日志记录、性能跟踪和异常检测。
  3. 分布式追踪:实施分布式追踪系统(如OpenTelemetry)来跨函数和服务跟踪请求,以便于问题诊断

   

  💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于云原生的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DPDK概述

文章目录 1. DPDK概述1.1 DPDK 内存管理Mbuf单帧结构:1.2 DPDK内核驱动 igb_uio驱动1.3 DPDK源码下载方式1.4 pktgen源码下载方式1.5 DPDK相关名词解释 1. DPDK概述 Intel DPDK全称Intel Data Plane Development Kit,是Intel提供的数据平面开发工具集,为…

AI语音工具——Fish Speech:使用简单,可训练专属语音模型!

今天给大家介绍一款超好用的AI语音工具——Fish Speech,使用简单,还可以训练自己的语音模型! 工具介绍 Fish Speech是由 Fish Audio 开发的免费开源文本转语音模型。经过十五万小时的数据训练,Fish Speech能够熟练掌握中文、日语…

binutils ifunc 流程图

上图是x86 binutils 的流程图。 函数说明_bfd_x86_elf_link_hash_table_createInit local STT_GNU_IFUNC symbol hash.elf_x86_64_check_relocsAdd support for handling STT_GNU_IFUNC symbols_bfd_elf_x86_get_local_sym_hashFind and/or create a hash entry for local sym…

SSL/CA 证书及其相关证书文件解析

在当今数字化的时代,网络安全变得至关重要。SSL(Secure Socket Layer)证书和CA(Certificate Authority)证书作为保护网络通信安全的重要工具,发挥着关键作用。 一、SSL证书 SSL证书是数字证书的一种&…

前端八股文 说一下盒模型

网页中任何一个元素都可以视为一个盒子,由里到外,盒模型包括外边界(margin)、边框(border)、内边界(padding)和内容(content)。 盒模型基本分为3种&#xff1…

【遥感语义分割】UNetFormer

原文:UNetFormer: An UNet-like Transformer for Efficient Semantic Segmentation of Remotely Sensed Urban Scene Imagery Libo Wang1, 2, Rui Li1, Ce Zhang3, 4, Shenghui Fang1*, Chenxi Duan5, Xiaoliang Meng1, 2 and Peter M. Atkinson3, 6, 7 1) 中国…

【机器学习】分类算法-KNN算法实践

一、前言 前面的一篇文章介绍了KNN算法的基本思想,接下来我们就根据B站UP主【abilityjh】老师的节奏,做一个关于KNN算法运用于“约会网站配对”的算法实现。当然,这个实践的代码是一样的,但是理解的话,我是用自己的话来…

考到PMP证书后 如何获得PDU?

目前仅续证一次,也是在威班PMP考试后免费积攒的。其实获取PMP的渠道很多,网上也有很多售卖的,积攒起来也挺容易,不过在续证的时候千万不要找不明渠道来源的人去搞,不靠谱。续证期有三年的,三年时间积攒60PD…

第十二章 执行引擎

一、执行引擎概述 概述 执行引擎是 Java 虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引…

简单的git pull fail Can‘t update has no tracked branch解决记录

简单的git pull fail Can‘t update has no tracked branch解决记录 1. 问题描述 上午同事使用idea拉取代码的时候,发现拉取不了,提示用户权限问题,之后修改了git用户信息,发现还是拉取不了分支代码,然后删除了git r…

docker介绍与详细安装

1 docker 介绍 1.1 虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实…

Vue 详情实战涉及从项目初始化到功能实现、测试及部署的整个过程

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

全面解析找不到msvcp71.dll无法继续执行的原因及修复方法

在使用Windows操作系统时,可能会遇到“msvcp71.dll文件丢失”的问题,从而导致部分应用程序无法正常运行。msvcp71.dll属于Microsoft Visual C 2008 Redistributable package的一部分,其包含了运行基于该编译器开发的软件所需的运行时库函数。…

react v18 less使用(craco)

方案一、弹出配置(不推荐) 安装依赖:yarn add less less-loader 首先 执行 yarn eject 弹出配置项文件(注意:弹出配置不可逆!) 在 config 文件夹中 找到 webpack.config.js,在如图…

苹果手机耗电太快怎么办?6个有效解决方法大揭秘

现代智能手机功能越来越强大,但随之而来的电量消耗问题也让许多用户头疼不已。尤其是苹果手机,虽然以其流畅的用户体验和强大的功能著称,但电池续航问题仍然是很多用户的共同困扰。 那么,苹果手机耗电太快怎么办呢?别…

震惊!张宇25版高数18讲发布,656页惹争议!

这个张宇老师在微博已经解释过了! 我觉得张宇老师本意是好的,在考研数学教学创新这方面,他真的有自己的思考。 他为什么要这么做? 其实作为一个考研高数老师,他完全可以像其他老师一样,什么都不做&#x…

fyne的几种multiLine

fyne的几种multiLine 创建一个MultiLine有一个专门的函数: widget.NewMultiLineEntry()进入方法看看源码: // NewMultiLineEntry creates a new entry that allows multiple lines func NewMultiLineEntry() *Entry {e : &Entry{MultiLine: true, Wrapping: fyne.TextTr…

springboot大学生实习管理系统-计算机毕业设计源码97434

目录 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 图2-4 添加信息流程图 2.2.5 修改信息流程 2.2.6 删除信息流…

Java的数据类型(复习版)

思维导图 一.字面常量 什么是常量?在我的理解看来常量就是在一个程序运行期间,保持不变的量就是常量。 例如: System.out.println(100);System.out.println(a);System.out.println(3.114);这些都可以称为常量。 字面常量的分类:…

论文速览 | CVPR 2022 | Autofocus for Event Cameras | 首个事件相机自动对焦算法:让事件相机在黑暗中也能清晰成像

论文速览 | CVPR 2022 | Autofocus for Event Cameras | 首个事件相机自动对焦算法:让事件相机在黑暗中也能清晰成像 项目主页: https://eleboss.github.io/eaf_webpage/ 1 引言 在计算机视觉和机器人领域,事件相机因其高动态范围和低延迟的特性而备受关注。然而,事件相机的…