一文读懂Serverless,它到底有啥用?

news2024/11/27 14:47:49

各位ICT的小伙伴好呀。

Serverless是最近大家讨论很多的一个话题。

今天我们就来聊聊什么是Serverless?

▉ Serverless是个啥?

Server:服务器,Serverless解决问题的产品。

less:更少,Serverless解决问题的目的。

所以Serverless直接翻译过来就是“更少的服务器”?

在国内,很多人将Serverless直接翻译成“无服务器”,但“无服务器”并不是说不需要依赖和依靠服务器等资源,其实更多的是一种使用体验。

开发者不用过多考虑服务器的问题,可以专注在产品代码上,并且无需管理和操作云端或本地的服务器,使得开发人员与服务器之间没有了直接交互,彷佛服务器不存在一般,所以才有了“无服务器”的说法。

基于此,云原生计算基金会(Cloud Native Computing Foundation)给出了Serverless的官方定义:构建和运行不需要服务器管理的应用程序的概念。

▉ 为什么需要Serverless?

每一个新技术概念的引入都伴随着生产力的提高,无服务器技术也不例外。

开发人员一直在寻找更有效的方法来维持软件开发生命周期,而无服务器架构且可以帮助企业专注于应用程序开发,不再需要担心服务器等基础设施的部署建设和运维管理,还可以很好的降低开发成本和缩短开发周期。

无服务器体系架构的开发建立在从虚拟化开始的先前成就的基础上,虽然这个过程是相当连续的,但它有几个值得注意的里程碑:

  1. 早期人们使用物理机来进行业务开发;
  2. 随着企业不断提高对软件开发效率的要求,越来越多的企业通过虚拟机提供服务。
  3. 虚拟化集群技术逐渐成熟,开始迁移到弹性更好的云计算平台进行开发。
  4. 基于最小化操作空间的原则,将每个VM细分为Docker容器。构建在Docker容器上的应用程序不需要任何运行时的环境管理,只需要核心代码的无服务器体系结构。
  5. Serverless来临,帮助开发人员专注于应用程序逻辑而不是服务器。

基于以上,我们可以看出开发底层架构的发展一共经历了5个里程碑的过程,就像人类的演进过程,代表着生产力的解放,极大提升了开发人员的的效率。Serverless来到了开发架构的高级阶段。

可能有人会问,我们为什么需要Serverless呢?

其实从物理机到 Serverless,就像我们买车一样,如果要买一辆私家车,这个车的车况保险全部要自己关心,然后你要自己开;到了虚拟机之后,我们把业务host 到云上,就像汽车租赁;然后再到网约车,我不用买车,不用关心车况,我们外出办事,只需要打个车,完全按需付费,按需弹性。

网约车就像Serverless,我们只需要享受服务,不需要关注车的情况,也不用管车的运行,只需要买这个打车服务就行了。

在 Serverles 架构下,用户仅需要关心业务实现,而操作系统、虚拟化和硬件层面的实现则全部交给服务商统一维护,达到了提高软件开发/交付效率、降低成本(资源成本、人力成本)的目的。

▉ 聊聊Serverless发展史?

所有技术发展都不是一蹴而就。

Serverless的概念出现已经有十多年了,并且伴随着云计算的发展越来越成熟。

早在2006年,伦敦的一家公司就发布了第一个Serverless平台Zimki。并提出 “Pay as you go”的概念,就是早期的按需付费的雏形,虽然在商业上并未取得成功,但是也拉开了Serverless的大幕。

在2008年,谷歌发布了App Engine服务,用户无需考虑预分配资源,也无需考虑操作系统的实现,让开发模式产生了根本变革。

直到2012年,一家提供DevOps 解决方案的公司 http://Iron.io 首次提出了Serverless 的概念。

但让Serverless被人熟知则是在2014年,AWS率先推出了真正意义上的第一款Serverless FaaS服务——Lambda。从此,Serverless 的概念逐渐进入大众视野,各大厂商开始跟进。

2016 年,Azure、Google以及 IBM相继发布 Serverless 计算平台。

2017 年,Serverless开始在国内落地。腾讯云和阿里云先后发布了Serverless 计算产品——云函数和函数计算;

一年后的2018 年,腾讯云发布小程序·云开发产品,提供基于小程序的多端Serverless 开发方案。阿里云推出Serverless容器服务ASK和Serverless应用引擎SAE。华为云也正式商用发布全球首款基于Kubernetes的Serverless容器服务——CCI(Cloud Container Instance)

2019 年,腾讯云和 http://Serverless.com 达成战略合作,共同开发 Serverless Framework 产品,提供Serverless 开发的一站式解决方案。

如今,Serverless已经成了各大云厂商的标配,受到整个行业的热捧。

▉ Serverless架构详解?

Serverless之所以能实现“按量计费”和“自动扩容”,与其涵盖的诸多技术有关,最关键的两个技术分别为BaaS(Backend as a Service,后端即服务)和FaaS(Function as a Service,函数即服务)。

简单理解,Serverless = Faas (Function as a service) + Baas (Backend as a service)。

首先我们来看FaaS(Function as a Service)函数即服务,也叫Serverless Computing,可让我们随时随地创建、使用、销毁一个函数。

简单来说,FaaS 就是“有事我就干,没事我就躺”。请求多的时候启动多个实例提供服务,没有请求时候则关闭所有实例。

举个例子,有这么一个业务需求:当用户上传一张图片,服务器监听到图片上传,给这个图片打水印,再把加了水印的图片传到oss上,保存了原图和加了水印的图。

上面的图片加水印的服务,就没有状态,它只是读图片、加水印,然后再上传图片,操作都是计算。Serverless服务按量付费,没有用户上传图片时候不会产生服务器租金。

BaaS(Backend as a Service)则是Serverless另一半的重要组成,BaaS即后端即服务,是指具备高可用性和弹性,而且免运维的后端服务。

说简单点,BaaS就是专门支撑FaaS的服务。FaaS就像高铁的车头,如果我们的后端服务还是老旧的绿皮火车车厢,那肯定是要散架的,而BaaS就是专门为FaaS准备的高铁车厢

比如你需要开发一个App,放在以往,注册、登录、密码管理等代码都需要你自己编写,但实际上这些代码在不同的应用里完全就是大同小异的,本质上是一种重复性工作。所以,云服务商将这些代码提取出来做成一个外部服务,当你需要实现这些功能时直接从云服务器调用即可,非常的方便。

微信小程序云开发,就是一种Serverless的应用场景,让前端工程师不仅可以开发页面还可以通过云函数(Faas)来写业务,而且还提供了基础存储(Baas)。

Serverless发展的一个方向,也就是追求这种一体化的开发体验。

下面举几个有名的Serverless产品FaaS:

  • 亚马逊AWS Lambda
  • 阿里FC
  • 腾讯云SCF
  • 华为FunctionStage

BaaS:

  • 谷歌firebase
  • Leancloud
  • bmob

Serverless架构的最大优势,显然就是帮助用户彻底摆脱了基础设施管理这样的“杂事”,更加专注于业务开发,从而提升了效率,降低了开发和运营成本。

Serverless的出现,可以让用户按照实际算力使用量进行付费,属于真正的“精确计费”。

换言之,用户的每一分钱,都花在了刀刃上。

▉ 适用哪些应用场景?

Serverless 进一步释放云计算的能力,将安全、可靠、可伸缩等需求交由基础设施实现,使用户仅需关注业务逻辑而无需关注具体部署和运行,极大地提高应用开发效率。同时这个方式促进了社会分工协作,云厂商可以进一步通过规模化、集约化实现计算成本大幅优化。

在现阶段,Serverless主要应用在以下几个场景:

首先,在Web及移动端服务中,可以整合API网关和Serverles服务构建Web及移动后端,帮助开发者构建可弹性扩展、高可用的移动或Web后端应用服务。

其次,在IoT场景下,Serverless可高效的处理实时流数据,由设备产生海量的实时信息流数据,通过Serverles服务分类处理并写入后端处理。

另外,在实时媒体资讯内容处理场景里,用户上传的音视频到对象存储OBS,通过上传事件触发多个函数,分别完成高清转码、音频转码等功能,满足用户对实时性和并发能力的高要求。

最后,无服务器计算还适合于任何事件驱动的各种不同的用例,这包括物联网,移动应用,基于网络的应用程序和智能聊天机器人等应用场景。

▉ 最后总结:

对于企业来说,支持Serverless计算的平台可以节省大量时间和成本,同时可以释放员工,让开发者得以开展更有价值的工作,而不是管理基础设施。另一方面可以提高敏捷度,更快速地推出新应用和新服务,进而提高客户满意度。但是Serverless不是完美的,它也存在一些问题,需要慎重应用在生产环境。毕竟,Serverless或许也仅仅是一个过渡的产物,但是这就要交给时间去验证了。

END

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

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

相关文章

如何解决空指针异常

NPE异常相信 Java 程序员都很熟悉,是 NullPointerException 的缩写;最近业务需求开发的有点着急,测试环境就时不时的来个NPE异常,特别的头疼;作为出镜率最高的异常之一,一旦入行Java开发,可以说…

微服务网关、SpringBoot、Nginx、tomcat8配置跨域

微服务网关、SpringBoot、Nginx、tomcat8配置跨域 跨域是什么?为什么会跨域解决跨域微服务网关处理跨域springboot项目配置跨域nginx配置跨域tomcat8配置跨域 跨域是什么? 跨域是A端向B端发送请求,A端与B端的地址协议、域名、端口三者之间任意一个不同&#xff0c…

Tomcat的优化

Tomcat的优化 一、Tomcat 优化Tomcat 配置文件参数优化 二、系统内核优化三、Tomcat 配置 JVM 参数:参数含义 一、Tomcat 优化 Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它…

吴恩达联手OpenAI的免费课程笔记—面向开发人员的 ChatGPT 提示工程

目录 前言一、大语言模型介绍二、提示指南2-0、导入API key和相关的python库2-1、写清楚的、具体的提示2-1-1、使用分隔符清楚的指示输入的不同部分2-1-2、要求结构化的输出2-1-3、按照指定的条件输出2-1-4、少样本学习 2-2、给模型时间去思考2-2-1、指定完成任务所需要的具体步…

软件外包开发UI管理工具

软件在开发前需要设计UI界面,UI界面是产品经理和开发人员、测试人员之间的交流工具,因此项目中会有多人的工作涉及到的UI界面,这就需要有个好的工具协调相互之间的工作。今天和大家分享一些常用到的工具,希望对大家的工作有所帮助…

插件框架PF4J-从理论到实践

PF4J:Plugin Framework for Java 目录 是什么? 不是什么? 特点 组件 主要类 流程概述 spring-pf4j 思考 功能模块化 我对pf4j的封装和使用demo GitHub - chlInGithub/pf4jDemo: pf4j demo 是什么? 开源轻量级的插件框架。通过插件…

三相三线、三相四线、三相五线制区别

三相三线、三相四线、三相五线制区别 1、三相三线2、三相四线3、三相五线4、三相三线和三相四线的区别5、三相四线和三相五线的区别 1、三相三线 由A、B、C这3根相线俗称火线组成,没有布置零线N和接地线PE,这种布线方式常见于交流380V的上一级10KV的系统…

Maven安装教程

maven环境配置(点击此电脑右键属性): 点击高级系统设置,点击环境变量: 开始配置环境变量(点击系统变量,新建按钮): 新建系统变量:MAVEN_HOMED:\maven\apac…

vueX学习看这篇就够了

vuex就是为了实现全局状态管理 vuex有哪些东西? state【状态】getter【可以认为是 store 的计算属性,不会修改状态】mutation【唯一修改state的方法,不支持异步】action【不能直接修改state,通过触发mutation修改状态,支持异步】…

GPT聊天功能,逐字返回数据

目录 前言一、前端二、后端1.接收前端请求的api如下是继续向其他接口请求的api如下是直接返回前端数据的api甚至可以返回图片 2.模拟GPT的接口 前言 我们在和GPT交流的时候发现GPT总是逐字的显示,因为GPT是一种基于神经网络的自然语言处理模型,它的训练…

王道考研计算机网络第一章知识点汇总

以上内容为1.1概念与功能的重点知识点 以下为1.2组成与分类: P2P模式下每台主机既可以是客户也可以是服务器,主机越多资源分享速度越快。 1.3标准化工作及相关组织 1.4性能指标 带宽只是指的是从主机内部往传输链路上投送数据的最大能力(从入口端放入数…

棱镜七彩中标浦发银行项目 助力金融行业开源治理

近日,棱镜七彩凭借出色的研发实力和优秀的产品服务能力在众多竞标企业中脱颖而出,成功中标上海浦东发展银行创新实验室“开源治理扫描工具信创改造课题”项目。棱镜七彩将为浦发银行在开源软件治理、软件安全可靠性等方面提供全方位支持。 在数字经济发…

odoo from 表单自定义按钮 执行JS代码 并调用websoket

业务场景: 集成串口读取RFID数据。由于串口是需要在客户端本地电脑执行才可以拿到数据 但是系统 部署在服务器 不能直接调用串口。 解决方案: 利用websoket通信 调用串口 传输 读取到的串口数据,解决服务器与本地之间的通信 本场景是基于odo…

深度解析:2023年软件测试的10个新趋势和挑战

随着技术的飞速发展,软件测试的角色和责任也在经历重大转变。我们在2023年目前所面临的一些新趋势和挑战值得所有从业人员关注。以下是这些主要趋势和挑战的深度分析。 趋势一:人工智能和机器学习在测试中的应用 AI和ML正在越来越多地应用于软件测试&am…

给httprunnermanager接口自动化测试平台演示参数化(五)

文章目录 一、背景1.1、前情回顾 二、参数化实现三、总结 一、背景 参数化,在使用httprunner框架的时候,参数话说实在的不是很实用,因为更多是场景化的用例编写,不用过多的去参数化批量执行,无非也就是登录注册查询啥的…

数据库系统概论 ---知识点大全(期末复习版)

(一)绪论 数据(Data):是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的种类:文字、图形、图象、声音等 数据的特点:数据与其语义是不可分的 数据库(Database,简称DB):是长期…

数据结构与算法-跳表详解

我们知道如果一个数组是有序的,查询的时候可以使用二分法进行查询,时间复杂度可以降到 O(logn) ,但如果链表是有序的,我们仍然是从前往后一个个查找,这样显然很慢,这个时候我们可以使用跳表(Ski…

chatgpt赋能python:Python如何依次取字符——一种简单有效的方法

Python如何依次取字符——一种简单有效的方法 1. 介绍 Python 常常被用于编写文本处理脚本,而文本处理中的一个常见任务就是依次取字符。本文将介绍一种简单高效的方法,让您可以在 Python 中便捷地完成此操作。 2. 如何依次取字符 Python 中的字符串…

黑客入门必备指南

在探讨黑客如何入门之前,首先我们的思想要端正。 作为一名黑客,必须要有正直善良的价值观。 或许你听过这么一句话“能力越大,责任越大”作为一名黑客就是如此,黑客的技术越精湛,能力就越大,就越不能去干…

spark入门 Linux模式 Local模式 (二)

一、下载对应的spark包 https://archive.apache.org/dist/spark/spark-3.0.0/ 我这里下载的是spark-3.0.0-bin-hadoop3.2.tgz 二、解压 tar -zvxf spark-3.0.0-bin-hadoop3.2.tgz三、启动 再解压路径的bin目录执行下 ./spark-shell 四、测试 WordCount代码例子 sc.textFil…