越来越火的Serverless(无服务器计算),到底是个啥?

news/2024/5/20 8:51:23 标签: serverless, 云计算, 服务器, 网络, 云原生

今天这篇文章,我们来聊一个云计算领域的热门概念——Serverless。

5d512b14c961068edd6c51d1f962a223.png

到底什么是Serverless?

英语好的童鞋,可能一眼就看出来了,Serverless是由Server和less两个词根组成的词。从字面上理解,就是“无服务器”。

行业通常所说的Serverless,主要是指“无服务器计算(Serverless Computing)”

那么问题来了,这年头,就连小学生都知道,服务器是具有很强计算能力的计算机,是我们现在最主要的计算工具。“无服务器计算”,如果不采用服务器,那该怎么算呢?

事实上,Serverless所谓的“无服务器计算”,并不是真的不需要服务器,而是说,对于用户,服务器变得“不可见”了(或者说“无感知”了)。

越说越玄乎了,有木有?别急,还是让我从头开始说起吧——

█ Serverless的诞生背景

1946年2月,世界上第一台数字式电子计算机ENIAC诞生,标志着人类正式进入了数字计算机时代。

早期的计算机都是大型机,体积庞大,价格昂贵,但是,算力却很弱。当时,这些机器只有很少的公司才能拥有,用于特定的计算目的。

到了1970-80年代,为了解决单点式计算(一台大型机,独立完成全部的计算任务)算力不足的问题,专家们发明了网格计算这样的分布式计算架构,取得了不错的效果。

说白了,分布式计算,就是把一个巨大的计算任务,分解为很多的小型计算任务,交给不同的计算机分工完成,

f7b7925a9e8179617c1cf90a57178a17.png

再后来,随着芯片技术的进步,计算机的体积变得越来越小,算力也变得越来越强劲。不久后,小型化的计算机出现了,也就是我们常说的PC(Personal Computer,个人电脑)。

计算机制造和使用成本的不断下降,加速自身的普及,也刺激了计算机网络的出现与发展。从局域网到广域网,再到互联网,计算机网络的规模变得越来越大。

互联网的出现,彻底改变了计算机服务用户的方式。

此前,一个机房服务于一所学校、一家企业、一个政府部门,现在,有了互联网,服务对象可以是全球用户,规模大大增加了。

用户规模增加,意味着对算力的需求也增加了。互联网服务提供商,需要一种更强大、更便宜的算力,满足用户需求。

于是乎,就有了云计算

ce87ea0c729ec04176267c91e95d51b1.png

很多人认为,云计算就是一个超大号的机房,和以前的企业机房没有区别,只不过服务器更多些。

这种观点是不对的。

云计算的本质,不是算力资源的简单堆砌,而是池化——它将大量的零散算力资源(廉价的算力资源)进行打包、汇聚,实现更高可靠性、更高性能、更低成本的算力。

具体来说,在云计算中,CPU、GPU、内存、硬盘等计算资源被集合起来,通过软件的方式,组成一个虚拟的可无限扩展的“算力资源池”。如果用户有算力需求,“算力资源池”就会动态地进行算力资源的分配,构建一个虚拟的“计算机”。用户按需使用、付费,即可。

相比于用户自购设备、自建机房、自己运维,云计算有明显的成本优势,可以节约大量资金和人力。

根据提供算力资源的层级不同,云计算通常也分为IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)。如下图所示:

3240b023e387cba5d6e7c73d08214455.png

那么,问题又来了——云计算这种“租”的方式,是不是最终极的算力资源使用方式呢?我们作为用户,使用算力,还能更简单一点吗?

答案是肯定的。

不管是自建机房,还是云计算,用户都需要和服务器打交道,和软硬件环境打交道。这些都是工具和过程,而我们的最终目的是什么?是得到运算结果。

e0b6be3f6058a1df43bac77954992309.png

那么,为了得到结果,我们是不是一定要关心环境的搭建过程?

不一定。既然环境可以租,那何不更彻底一点,直接“租”服务呢?

举例来说,如果把计算过程理解为炒菜。以前,我们为了炒菜,需要自己建个厨房,自己买锅碗瓢盆、油盐酱醋,自己亲自炒菜。后来,有了云计算,我们可以租个厨房,租工具,然后炒菜。现在,想要更简单的话,是不是可以直接叫外卖?

再例如,以前,我们上班通勤,是自己买车,自己开车。然后,有了云计算,相当于租车。现在,是不是可以直接打车?

说白了,我们要的是计算服务和计算结果。计算环境(硬件),我们完全可以不去操心。

bf8193df4c0a7072d0128244ae4c4f9c.png

说到这,我们的主角——Serverless,终于闪亮登场了。

对于Serverless,我们可以把它理解为一种架构,一种理念,甚至是一种思想。

Serverless的核心目的,就是在云计算的基础上,再向前迈进一步,彻底“包揽”所有的环境工作,直接提供计算服务。

在Serverless架构下,开发者只需编写代码并上传,云平台就会自动准备好相应的计算资源,完成运算并输出结果,从而大幅简化开发运维过程。

换句话说,用户完全不用关心厨房,你把食材提供给Serverless平台,它负责把菜炒好,就这么简单。

█ Serverless的特点

Serverless是云计算的进一步延伸,所以,它继承了云计算的最大特点——按需弹性伸缩、按需付费。

现在的互联网服务,基本上都是采用微服务架构。也就是把一整套服务,拆分为多个细分服务,由不同的服务器完成运算。

Serverless的特点是,这个服务足够“细小”,变成了“函数级”的颗粒度。

ed51bc1d61dbe72b7d8780b539d5f9d1.png

所谓函数,就是提供输入,计算输出。

从层级上来看,Serverless在传统云计算SaaS的Application(应用)层级之上,又加了一层——function(函数)。它的颗粒度更细,可以更灵活地满足用户的算力需求。

b9715381fca6d1aa8a00fd012cab91c6.png

按照CNCF对Serverless 的定义,Serverless架构是采用FaaS(函数即服务)和BaaS(后端服务)服务来解决问题的一种设计。

FaaS就是Function as a service(函数即服务)。每一个函数都是一个服务,函数可以由任何语言编写,直接托管在云平台,以服务形式运行,通过事件触发。

BaaS则是Backend as a service(后端即服务)。云平台提供的后端组件整合,开发者无需开发和维护后端服务,通过API/SDK的调用,便可获得例如数据存储、消息推送、账号管理等能力。

Serverless = FaaS + BaaS

Serverless的背后,依然是虚拟机和容器。只不过,服务器部署、runtime安装、编译等工作,都由Serverless计算平台负责完成了。对开发人员来说,只需要维护源代码和Serverless执行环境的相关配置即可。这就叫“无服务器计算”。

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

根据业界的统计,在商业和企业数据中心里的典型服务器,日常仅仅只提供了5%~15%的平均最大处理能力的输出。这是一种算力资源的巨大浪费。

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

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

█ Serverless的发展历程

世界上第一个Serverless平台,是2006年发布的Zimki。这个平台提供服务端JavaScript应用,支持“按照实际调用付费”。不过,当时他们并没有使用Serverless这个名词。

后来,到了2012年,Iron.io的副总裁Ken Form在文章“Why The Future of Software and Apps is Serverless”中,首次提出了Serverless,才宣告这个概念的正式诞生。

2014年11月,亚马逊率先推出了真正意义上的第一款Serverless FaaS服务——Lambda。从此,各大厂商开始跟进。

2017年,Serverless开始在国内落地。这一年,阿里云和腾讯云先后推出了自己的 Serverless平台。阿里云的Serverless平台,被直接命名为函数计算(FC,Function Compute)。

一年后的2018年,阿里云推出Serverless容器服务ASK和Serverless应用引擎SAE。

那一时期,刚好小程序开始火爆。Serverless的灵活架构,非常适合小程序的开发。于是,吸引了大量的开发者们。

到了2019年,国内厂商纷纷入局Serverless。如今,Serverless已经成了各大云厂商的标配,受到整个行业的热捧。

本月初,2022·云栖大会上,阿里云智能总裁张建锋表示,以云为核心的新型计算体系正在形成,软件研发范式正在发生新的变革,Serverless是其中最重要的趋势之一。

8ba7f4de05ca1b34eb67e0149cdbfb76.png

他认为,Serverless让云计算从一种资源真正变成一种能力,未来云将全面Serverless化,更加接近“电网”模式,按计算的调用次数付费。

目前,阿里云已经拥有超过20款Serverless产品,包括函数计算FC、Serverless 应用引擎SAE、Serverless容器服务ASK、PolarDB数据库、AnalyticDB数仓等。其中函数计算日调用次数超过200亿次,整体规模位居国内首位。

前面小枣君也提到,Serverless并不是没有服务器的计算,而是将算力环境和资源进行了“隐藏”,让用户不可见,无需操心。事实上,Serverless不仅需要算力资源,而且对算力资源的要求比以往更高。

以阿里云为例。他们之所以能够做Serverless平台,就是因为背后有四大核心技术的支撑。这四大核心技术,分别是:神龙计算平台、袋鼠沙箱容器、盘古存储平台和洛神网络平台。

在算力芯片上,阿里云今年6月新推出的一款云数据中心专用处理器 CIPU(Cloud Infrastructure Processing Unit),也非常擅长对数据中心的计算、网络和存储资源进行管理和加速,帮助进一步提升Serverless平台的性能。

█ Serverless的落地案例

接下来,我们不妨通过几个案例,详细看看阿里云Serverless平台究竟是如何提升算力效率的。

阿里巴巴每年的双11促销,是行业公认的算力极限挑战。海量用户、高并发,对系统的处理能力有着极高的要求。

2020 年天猫双 11,阿里云实现了国内首例Serverless在核心业务场景下的大规模落地,扛住了全球最大规模的流量洪峰,创造了Serverless落地应用的里程碑。

今年天猫双 11,阿里云Serverless支撑业务场景更多,范围更广。阿里云函数计算(FC)与集团内的运维体系全面实现标准化对接,打通了研发的最后一公里,首次实现了业务全链路“FaaS+BaaS”的Serverless体系化研发,覆盖淘特、淘系、阿里妈妈、1688、高德、飞猪等业务场景。

根据数据统计,支撑场景数量同比增加2倍,峰值流量总数同比增加3倍,实现了百万QPS的突破,人效提升40%。

684701b9e28045e4bcaf2af467512652.png

再来看看外部用户。

网易云音乐,是阿里云Serverless产品的重要客户之一。

他们的产品背后,有非常多的算法服务支撑,比如多种码率的音频转码、听歌识曲中应用的音频指纹生成和识别、副歌检测、小语种音译歌词等等。

这些任务的资源需求和执行时间变化很大,需要使用C++、Python等多种语言实现,对算力的弹性要求非常大。

早期的时候,网易自建了一个算法服务平台,进行应对。但随着业务增长,以及算法复杂度的不断增加,基础设施管理的负担越来越大,严重影响了工作效率。

引入阿里云Serverless平台之后,网易的算法计算需求得到了很好的满足。网易在函数计算上高峰期一天处理超过2000万个任务,算法应用到业务10倍速的提升,稀疏调用的算法成本大幅缩减。

同样的效率提升,还发生在南瓜电影、越光医疗、世纪华联、江娱互动等企业身上。他们都是阿里云Serverless平台的用户。

5db203e5c50e21b567eaf7fc7b452522.png

2021年3月,阿里云函数计算凭借在产品能力、安全性、战略愿景和市场规模等方面的优势脱颖而出,在19个评估项目中,拿到了8项满分和12项最高分,进入了FaaS领导者象限(综合产品能力位列全球第一,战略愿景全球第二)。这是首次有中国云厂商进入Forrester FaaS领导者象限。

█ 结语

随着数字经济浪潮的蓬勃发展,以及各行各业数字化转型的不断推进,算力的价值正在持续提升。

在单纯提升芯片算力方面,我们面临越来越大的挑战(摩尔定律逐渐失效)。在这种情况下,我们必须更多地考虑,该如何提升算力的使用效率。

作为一种灵活轻量化的新型算力架构,Serverless毫无疑问是我们挖掘算力潜力、提升算力效率的一个重要手段。

客观来说,目前的Serverless谈不上完美。在实时性等方面,还存在一些不足。小枣君相信,随着时间的推移,这些问题最终都会得到解决。

Serverless,将引领我们全面走向算力新时代。

—— The End ——

de60cd80d98473a3d80cdce1bb4f2a50.png


http://www.niftyadmin.cn/n/408935.html

相关文章

深度学习简介

什么是深度学习? 一、深度学习–神经网络简介 深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierachical Learning】或者 深度机器学习【Deep Machine Learning】)是一类算法…

chatgpt赋能python:如何更新Python库?

如何更新Python库? Python语言已经成为现代编程语言中最受欢迎的一种,它的成功归功于它的灵活性、简洁性和可读性。Python库是它成功的关键,这些库是程序员的基本工具箱,可以更快地编写、测试和部署程序。 然而,Pyth…

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 图解RRT*算法原理2 ROS C++算法实现3 Python算法实现4 Matlab算法实现0 专栏介绍 🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条…

分割一切?手把手教你部署SAM+LabelStudio实现自动标注

一,前言 最近Open-mmlab开源了Playground项目,将最近引起CV界轰动的SAM(Segment Anything Model)模型和Open-mmlab多个视觉框架相结合,可实现多种视觉任务的自动标注,本文将采用Open-mmlab的Playground开源项目,使用S…

mysql中的utf8mb4、utf8mb4_unicode_ci、utf8mb4_general_ci

1.utf8与utf8mb4(utf8 most bytes 4) MySQL 5.5.3之后增加了utfmb4字符编码支持BMP(Basic Multilingual Plane,基本多文种平面)和补充字符最多使用四个字节存储字符 utf8mb4是utf8的超集并完全兼容utf8,能…

微服务治理之Spring Cloud Consul

微服务治理之Spring Cloud Consul 一、简介1. 定义2. 目的3. 常用的微服务治理工具 二、Spring Cloud Consul1. 概述2. 功能3. 工作原理 三、Consul的优势1. 服务发现2. 健康检查3. 动态配置管理4. 多数据中心支持5. 分布式锁 四、Consul在微服务治理中的应用1. 服务注册2. 服务…

chatgpt赋能python:Python数据拟合

Python 数据拟合 在数据分析和机器学习领域,数据拟合是非常重要的一步。Python作为一种流行的编程语言,在数据拟合方面拥有强大的工具和库,因此被广泛使用。本文将介绍Python中常用的一些数据拟合方法,并演示如何使用它们。 线性…

ViewOverlay-加蒙层真的一种实现方式

一、ViewOverlay能实现什么? 在Android中,ViewOverlay是一个特殊的视图层,可以在一个视图的上方添加和管理附加的视图层,而不会干扰原始视图的布局和交互。它提供了一种方便的方式来在运行时添加、移除或修改视图层,而…