写点什么

伯克利论断:Serverless 才是云时代的主宰

  • 2019-02-18
  • 本文字数:3290 字

    阅读完需:约 11 分钟

伯克利论断:Serverless 才是云时代的主宰

编者按:

来自伯克利的犀利断言:Serverless 计算将会成为云时代默认的计算范式,将会取代 Serverful (传统云)计算模式,因此也意味着服务器-客户端模式的终结。


你准备好了吗?

引言

2009 年,伯克利以独特的视角发布了一篇文献,定义了云计算,十年过去了,这篇文章被引用无数,其中的观点更是当下最好的见证:


  1. 按需计算的表现形式。

  2. 消除云用户的前期承诺。

  3. 根据需要在短期内支付使用计算资源的能力。

  4. 规模经济,由于许多非常大的数据中心,显着降低了成本。

  5. 通过资源虚拟化简化操作并提高利用率。

  6. 通过多路复用来承载不同组织的工作负载,进而提高硬件利用率。


2019 年,伯克利又以新的视角发布了一篇文献:将云中的编程变得简单:伯克利视角下的Serverless 计算。 观点同样让人眼前一亮:


Serverless 所提供的接口,简化了云计算的编程,其代表了程序员生产力的又一次的变革,一如编程语言从汇编时代演变为高级语言时代。


因为 Serverless 和传统的云计算有着本质的区别:


  1. 计算和存储的解耦,彼此独立扩展和定价。

  2. 将执行的代码作为运行的对象,而屏弃了分配该段代码所运行的资源。

  3. 代码成为明码标价的对象,而不再是运行代码所需要的资源。


如果各位看官和我一样,对于伯克利视角下的 Serverless 好奇的话,不妨跟随我接下来以问答的方式来解读一下这篇文献:


数据中心即计算机。 —— Luiz Barroso(2007)

Serverless 计算的最佳理解是?

在任何的 Serverless 平台,用户只需要使用高级语言撰写使用云功能,然后以事件来触发运行即可,如将图片上传到云存储中、将图像缩略图插入到数据库表中,而所有的传统的操作:实例选择、实例扩展、部署、容错、监控、日志、安全补丁等等,均由 Serverless 计算的来掌控。

Serverless 计算和传统的云计算(serverful)有何区别?

相对于 Serverless 计算,传统意义上的云计算已经成为了 Serverful 计算了,以下列表从开发者和系统管理员的角度分别对比了他们二者之间的区别:


特性AWS Serverless 云计算AWS Serverful 云计算
程序员何时运行程序由云用户根据事件自行选择除非明确停止,否则会一直运行。
编程语言JavaScript、Python、Java、Go等有限的语言任何语言
程序状态保存在存储(无状态)任何地方(有状态或无状态)
最大内存大小0.125~3GiB(云用户自行选择)0.5~1952GiB(云用户自行选择)
最大本地存储0.5GiB0~3600 GiB (云用户自行选择)
最长运行时间900秒随意
最小计费单元0.1秒60秒
每计费单元价格$0.0000002$0.0000867 - $0.4080000
操作系统和库云供应商选择云用户自行选择
系统管理员服务器实例云供应商选择云用户自行选择
扩展云供应商负责提供云用户自己负责
部署云供应商负责提供云用户自己负责
容错云供应商负责提供云用户自己负责
监控云供应商负责提供云用户自己负责
日志云供应商负责提供云用户自己负责


基于云环境的描述下,Serverful 计算犹如传统底层的编程语言,如汇编程序;而 Serverless 计算犹如高级的编程语言,如 Python。前者开发者需要考虑每一个细节,到 CPU 寄存器这样一个级别,而后者开发者只需要考虑要实现的功能即可。

Serverless 之所以成为可能的基础条件有哪些?

  1. Serverless 计算是在 PaaS 和原来模式的之上的重要创新。

  2. 基于 VM 的隔离技术,如 Firecracker 、gVisor 等技术的成熟。

  3. 允许云用户携带运行程序所需要的库。

  4. BaaS 的发展,如对象存储的不断完善。

  5. 容器技术、Kubernetes 项目的崛起。

  6. 边缘计算的迅猛发展需求

伯克利对 Serverless 的大胆预言是什么?

Serverless 将会在接下来的十年,迅速的被采用,将会得到飞速的发展。


  • 新的 BaaS 存储服务会被发明,以扩展在 Serverless 计算上能够运行更加适配的应用程序类型。 这样的存储能够与本地块存储的性能相匹配,而且具有临时和持久可供选择。

  • 比现有的 x86 微处理器更多的异构计算机。

  • 更加安全、易用的编程,不仅具有高级语言的抽象能力,还有很好的细粒度的隔离性。

  • 基于 Serverless 计算的价格将低于 Serverful 计算,至少不会高于 Serverful 计算。

  • Serverless 将会接入更多的后台支撑服务,如 OLTP 数据库、消息队列服务等。

  • Serverless 计算一旦取得技术上的突破,将会导致 Serverful 服务的下滑。

  • Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,因此也意味着服务器-客户端模式的终结。

Serverless 计算的软件栈架构概览


Serverless 介于基础云平台和应用程序之间,旨在简化基于云的编程开发,Cloud Functions (通常称之为 FaaS)提供通用的计算,辅以专门的后端即服务(BaaS)等生态系统,如对象存储、Key-Value 数据库等。

Serverless 目前应用的场景如何?

来自 2018 年的一个调查显示:


百分比用户场景
32%web 和 API 服务
21%数据处理,如批处理的ETL
17%整个第三方的服务
16%内部 tooling
8%聊天机器人,如 Alexa Skills(Alexa AI 助手 SDK)
6%物联网


对五类典型应用的深度分析:


应用程序描述挑战解决办法花销比较
实时视频压缩(ExCamera)扔到云中的视频解码对象存储太慢,无法支持细粒度的通信; 功能太粗糙,无法完成任务。功能对功能以避免对象存储;以功能调度而不是任务。比基于虚拟机快60倍,但是钱只花了1/6。
MapReduce大数据处理(100TB排序)由于对象存储延迟和IOPS限制,扩展成为问题使用低延迟存储,高IOPS比虚拟机快1%,节省15%的费用
线性代数计算(Numpy-wren)大规模线性代数计算对象存储的低延迟、难以实现客户端的广播问题。使用低延时高吞吐的对象存储,比原来慢了3个数量级,CPU的消耗降低1.26到2.5倍。
机器学习pipeline(Cirrus)大规模的机器学习缺乏快速的存储,难以实现广播、聚合问题。使用低延迟存储,高IOPS比虚拟机快3~5倍,比原来贵7倍
数据库(Serverless SQLite)应用程序的主要状态(OLTP)缺乏共享内存,对象存储具有高延迟,缺乏对入站连接的支持。如果写入需求低,共享文件系统可以工作。TPC-C基准,要比原来的快3倍,读取比例匹配但写入不匹配。

对 Serverless 计算的期待?

  1. 抽象层:更多的资源调度、增加数据依赖功能

  2. 系统:高性能、经济实惠、透明配置的存储,最小化启动时间,协调服务

  3. 网络:实现更高吞吐量的通信

  4. 安全:随机的调度、物理隔离、细粒度的安全上下文、

  5. 体系结构:异构性、价格下调、更方便的管理

Serverless 计算目前有被人们吐槽的地方?

在分析了五大典型(实时视频解码、MapReduce、大规模线性代数计算、机器学习训练、数据库)应用案例之后,得出如下几个结论:


  1. 存储空间不足以进行细粒度操作

  2. 缺乏细粒度的协调

  3. 标准通信模式的性能不佳

  4. 启动的延迟性

是什么吸引着大家去追求 Serverless 计算方式?

对于云用户来说:


  1. 不需要任何的操作云基础设施、部署等知识,关注功能即可

  2. 更加容易编写应用程序是最主要的动力

  3. 更短的运行时间,毋须关心内存的大小,无状态的天然特性

  4. 省钱


对于云提供商来说:


  1. 减少对 X86 服务器的采用,可有效节省成本。

  2. 对计算新的抽象,意味着未来的无限可能性

谬误和陷阱

本章是向 Hennessy and Patterson 二位的风格致敬。鉴于本文只是读论文的解读,所以不会翻译所有的内容,这里仅抛砖引玉,讲述两个非常有趣的答复:


谬误 :Cloud Functions 无法处理需要可预测性能的极低延迟应用程序。


Serverful 计算,即服务器实例对于低延迟应用程序的处理,是它们始终处于启动状态,因此它们可以在收到请求时快速回复请求。 那么,照葫芦画瓢,如果 Cloud Functions 的启动延迟对于给定的应用程序来说不够好,可以使用类似的策略:通过定期运行它们来 Cloud Functions 进行预热,从而确保在任何给定时间都能够及时的响应,进而满足传入的请求。


陷阱:Serverless 计算会导致无法预料的成本


这种纯粹意义上按代码运行付费的模式,其实是大家对于这样新的计费模式的不适应罢了,尤其是大型公司的预算考虑,相信随着时间的推移,一旦人们了解了自己的业务以及有了一些历史数据之后,就会适应这样的计算模式的,一如对于如电力这样的计费模式。


笔者能力所限,加上论文论断式的风格,最后强烈建议各位看官请移步伯克利网站下载论文,进行进一步的深度阅读!尤其是引用的材料。


论文链接:https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf


2019-02-18 16:447067
用户头像

发布了 33 篇内容, 共 11.1 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

解决智慧城市发展困扰:Web3D智慧环卫GIS系统

一只数据鲸鱼

GIS 数据可视化 智慧城市 智慧环卫

Android Flutter 多实例实践

网易云信

flutter 架构

药物研发使用北鲲云高性能计算平台,有效解决研发效率问题

北鲲云

存储大师班 | NFS 的诞生与成长

QingStor分布式存储

分布式存储 分布式文件存储 NAS NFS

技术解码 | 腾讯云SRT弱网优化

腾讯云音视频

6月热点:BML全新升级WebIDE编程环境,度目智能视频分析盒G1上新

百度大脑

人工智能 BML

可以同时管理公有云和私有云资源的软件哪个好?

行云管家

公有云 私有云 云管平台 云资源

《人这一辈子,都在为认知闭环买单》读后感---刘润

Changing Lin

我学编程时最后悔的事!

程序员鱼皮

Java c++ Python 大前端 后端

使用数据库乐观锁的方式解决数值累加的问题

陈靓-哲露

实战-使用 SSM 工具创建可动态扩容的存储池

学神来啦

Linux 运维 ssm Linux教程

【得物技术】得物开放平台进阶之路

得物技术

安全 后端 平台 订单

阿里数据中台底座的12年建设实践

阿里云大数据AI技术

揭秘Hologres如何支持超高QPS在线服务(点查)场景

阿里云大数据AI技术

细节分析Linux中五种IO模型和三种实现方式

Linux服务器开发

网络编程 epoll Linux服务器开发 Linux后台开发 IO模型

极光开发者周刊【No.0723】

极光JIGUANG

从零开始学习3D可视化之数据对接(3)

ThingJS数字孪生引擎

大前端 数据 物联网 可视化 数字孪生

模块三作业

燕燕 yen yen

架构训练营

上线仅7天,GitHub已标星48.4k!原来是阿里巴巴内部《高并发系统设计》

Java redis 编程 架构 面试

线上教育培训机构如何推广自己

石头IT视角

上架一夜遭全网封杀!阿里大牛熬夜半年手码的Java面试指南太强了

白亦杨

Java 编程 程序员 架构师

启动、内存、卡顿三大分析,用户体验就用它?

友盟全域数据

App

结构化流-Structured Streaming(八-下)

数据与智能

spark 流式计算框架 structuredStreaming

学习下服务器端漏洞,受益匪浅!

网络安全学海

运维 网络安全 信息安全 漏洞扫描 渗透测试·

Jar 组件自动化风险监测和升级实践

Qunar技术沙龙

安全 风险管理

多鲸资本发布《2021教育实时音视频行业报告》:拍乐云以质取胜做行业引领者

拍乐云Pano

百度AI寻人获评《新周刊》2021年度公益项目

百度大脑

人工智能 寻人

Ipfs国家认可吗?国家对ipfs区块链是什么政策?

区块链 分布式存储 IPFS fil

【等保知识】等保测评机构申请条件,所需资料以及流程

行云管家

等保 堡垒机 行云管家 等保测评

怎么才能写出100个用户体验的关键时刻?

石云升

读书笔记 用户体验 关键时刻 7月日更

实践解析丨如何通过 WebAssembly 在 Web 进行实时视频人像分割

声网

大前端 WebRTC webassembly

  • 扫码加入 InfoQ 开发者交流群
伯克利论断:Serverless 才是云时代的主宰_服务革新_李建盛_InfoQ精选文章