带你读《弹性计算—无处不在的算力》第一章:开篇 1.1:弹性计算是什么


2010 年以前,我国的火车票主要还是采用人工窗口结合电话订票的方式销售的, 相信不少人都有过排队几个小时购买春运火车票的经历,这是一段难忘且心酸的记忆。时至今日,随着国内某火车购票网站的出现,人们早已不需要去人工窗口排队买票了,拿着手机几次点击,几分钟就搞定了。从几小时到几分钟,是什么样的服务器支撑了春运抢票时上千万次甚至上亿次的汹涌而至的访问请求呢? 


2018 年,某明星的恋爱消息一经发布,立刻引爆国内某著名微博网站的话题, 短时间内被转发46 万多次、评论99 万多条、点赞256 万个,导致微博的服务器迅速过载。当时正在举行婚礼的微博搜索Web 工程师不得不取出笔记本电脑为微博的服务器紧急扩容。微博CEO 在回应网友的服务不可用报告中称:已经扩至1000 台服务器来应对流量高峰。那么问题来了:应该扩容多少?从哪里扩容? 


2020 年,新冠肺炎疫情爆发之初,全球健康药物研发中心GHDDI(Global Health Drug Discovery Institute)启动对新冠肺炎病毒的研究,这家由比尔及梅琳达·盖茨基金会、清华大学及北京市*三方联合发起成立的非营利机构,曾在阿里云超算平台上将药物研发提升8 到20 倍。2020 年1 月29 日阿里云宣布对全球公共科研机构免费开放一切AI 算力。GHDDI 将自研的药物研发平台、药研资源和研究成果全部上线阿里云,借助阿里云超算EHPC、存储OSS 和阿里云全球加速网络,支持了数以百计的海内外新冠药物科研需求,充分借助“云计算”的弹性、高性能、快速获取优势,实现“云”抗疫。这些成果的背后使用的是什么技术呢? 


是的,答案都是同一个:弹性计算! 

1.1 弹性计算是什么

弹性计算是云计算提供的基础服务之一。顾名思义,弹性计算是一种为用户提供计算力的服务,并且用户可以根据实际需要灵活、动态地调整要购买的容量,即所谓的“弹性”。

人们常把弹性计算与水、电和燃气等公共能源的基础设施做类比,因为它们都具有以下共同特点:

按需付费:用户可以按照实际消费的资源容量进行事后结算。

无限索取:用户需要多少,就使用多少。当然,事实上,每个用户能够使用的资源量是有上限的,只不过这个上限大到大部分用户感受不到。

普惠大众:所有人都可以很方便地购买和使用,而且价格亲民。

关乎民生:它们已经成为整个社会运转的重要基石,一旦停转会给人们的生产和生活带来极大的影响。


下面,我们就从“计算力”出发,介绍弹性计算的形态、构成、业务模式、使用方式、地位及演进过程。

1.1.1 弹性计算的形态

弹性计算提供的“计算力”到底是什么呢?从本质上讲,计算力用于完成用户特定的计算任务。这些计算任务既可以是在线商店、动画渲染任务和互联网服务,也可以是企业办公应用、科学计算任务、数据库系统……为了能够处理这些千差万别的计算任务,弹性计算提供了一种产品形态,即“云服务器”。

云服务器的能力与一台传统的物理服务器相当,并且提供与物理服务器一样的标准接口。用户在拿到一台这样的云服务器后,即可在上面安装、运行自己需要的操作系统和各种软件,从而将原来运行在自家物理服务器上的计算任务搬到云上来运行, 获得“计算力”。

云服务器是弹性计算最早的产品形态,很原始,也很直接;同时,也最通用、最方便移植,因此至今,它依然是弹性计算最主流、市场份额称霸的产品。本书大部分内容都是围绕云服务器展开的。


1.1.2 弹性计算的构成

“计算”一词的含义可大可小。从广义上看,任何IT 能力都离不开计算,因此云也被称为“云计算”,涵盖了IaaS、PaaS、SaaS 等各种服务。狭义一点看,弹性计算中的“计算”可以理解为计算任务的运行,换句话说,就是指执行计算机代码。

要运行一个计算任务,弹性计算不光要提供执行代码的狭义计算能力,还需要配套的存储能力和网络能力。存储为计算任务实现数据持久化,而网络让计算任务可以与外界通信、协作。计算、存储和网络加在一起,形成“计算力”的三要素。

从“云服务器”这一产品形态来看,计算主要体现为CPU 和内存等资源,存储主要体现为块存储(相当于物理服务器的硬盘),而网络则主要体现为网卡和其接入的网络,它们组合在一起构成了一台真正可用的云服务器。

衡量一台云服务器的计算力要从计算、存储和网络三个指标来看。

计算:CPU 的型号和主频、虚拟CPU 的个数、内存的大小等。

存储:块存储的个数、容量、读写吞吐量(BPS,即每秒读写的字节数)、处理读写操作的能力(IOPS,即每秒处理的I/O 数)等。

网络:网卡的个数、带宽能力、收发数据包能力(PPS,即每秒收发数据包的数量)等。

这些指标通常会在云服务器及其附带产品的规格说明中给出,帮助用户选型。当然,这些计算力指标只是一个参考,很难穷尽。想要看一台云服务器的计算力是否能满足特定应用的需求,建议直接在云服务器上运行该应用并评估其性能。


1.1.3 弹性计算的业务模式

弹性计算的业务模式本质上是计算力的租赁业务。用户购买一台云服务器后,并不拥有这台云服务器的物理所有权,而只有使用权。与传统的自购物理服务器相比, 云服务器可以让用户按需购买、按实际用量付费,使用更加灵活。

弹性计算一般按计算力使用时长进行计费。对于云服务器,计算力通常反映在云服务器的不同规格中,每种规格有不同的计算、存储和网络指标,定价也相应地各有差异。

主流云服务提供商提供了丰富的售卖方式,以满足不同用户的需求。常见的售卖方式有四种。

按量付费:类似于手机话费的后付费方式,按实际使用时长付费,这是最灵活的一种购买方式,随来随走,但价格通常也是最高的。

包年包月:类似于手机话费的预付费套餐,绑定了具体的云服务器实例,承诺了使用时长,在时间上灵活性稍差一些,但价格比较优惠。

预留实例券:与包年包月类似,但是不绑定具体的云服务器实例,用户可以灵活地创建和替换云服务器实例,同时也承诺了使用时长,在时间上灵活性稍差一些,但价格比较优惠。

抢占式:这是一种非常独特的售卖方式,云服务提供商把暂时富余的资源以极低的价格让用户采取类似于竞价的方式来购买,但当供给情况发生变化时, 这些云服务器可能被云服务提供商“抢占”回去,因此比较适合那些随时可以中断、之后再继续的计算任务。

可以看到,这些售卖方式各有优、缺点,适用不同的场景,用户可以将它们组合起来使用,以达到成本和灵活性之间的平衡。


1.1.4 弹性计算的使用方式

用户在购买了一台云服务器后,可以把它当作一台物理服务器来使用。首先,用户需要为它安装一个操作系统。通常云服务提供商会提供现成的主流操作系统的镜像,这些镜像包含了必要的适配云环境的组件;当然,用户也可以制作自己的操作系统镜像来启动云服务器。然后,用户就可以通过SSH、VNC 等方式远程登录这台云服务器进行各种操作了。同时,云服务提供商也会提供Web 控制台、Open API、客户端SDK 等多种方式让用户能够对它进行日常的管理,包括启动、关机、重启等生命周期的管理,添加或减少“硬盘”(块存储)和网卡,设置安全组等配置操作,以及监控、诊断等运维任务,等等。

以上都是对单台云服务器进行的简单操作。要充分享受云计算带来的自动化能力,用户还可以使用一系列强大的配套工具,包括: 

自动化迁移工具:帮助用户将线下的应用搬迁到云上,通常的做法是把线下物理服务器或虚拟机的整个操作系统同步到云上制作成一个操作系统镜像, 以启动云服务器。

自动化部署工具:让用户以基础设施即代码(Infrastructure as Code)的方式来描述云上的云服务器、网络、存储等资源的拓扑,然后进行自动化的部署, 提升部署效率。

自动化运维工具:让用户以运维即代码(Operation as Code)的方式进行云服务器的大规模自动化运维,提升运维操作的效率和安全性。

自动化扩缩容工具:协助用户进行自动化、智能化的云服务器容量管理,通过动态地调整云服务器的规格、数量和购买方式,在满足用户的业务需求的同时尽可能地减少浪费,享受优惠。

云服务器绝对不是一个人在战斗,它是集云服务器(计算、存储和网络等计算力)的制造、商品化的运营(售卖)和工具化的服务(整条配套工具链)三位一体的新物种,与线下的物理服务器形似但神不似,可以给用户带来更多惊喜! 


1.1.5 弹性计算的地位

弹性计算在云计算中拥有举足轻重的地位。

首先,弹性计算是所有云计算产品中用户最多、使用最广泛的产品家族,在主流云服务提供商的营收中占据比例最大。因为计算本来就是云计算要解决的主要问题,

而弹性计算提供的云服务器等产品又能满足最广泛的计算需求,同时用户将线下的应用搬到云服务器上的迁移成本也较低。这很大程度上得益于云服务器遵循业界主流的x86 服务器标准接口,能兼容大部分的操作系统。

其次,弹性计算是云计算自身的基石。作为最基础的产品,弹性计算可谓是“一人之上、万人之下”。“一人”指的是底层的物理设施,如数据中心、物理网络、服务器等;而“万人”指的是其他云产品,它们中的绝大部分都可以依托弹性计算来构建和运行。打一个形象的比喻,弹性计算就好像把物理的IT 基础设施虚拟化成了一台超级计算机,让其他云产品及应用可以在它上面运行,而不用再跟物理设备打交道。


1.1.6 弹性计算的演进过程

弹性计算的鼻祖诞生于2006 年,同年8 月25 日亚马逊推出了云服务器EC2 (Elastic Compute Cloud)的Beta 版,并在2008 年10 月23 日正式投入生产上线。而在国内,创立云计算服务较早的阿里云也在2009 年率先推出了ECS 的Beta 版。

早期的云服务器品类比较单一,但随着市场的成熟,为各种不同的场景设计的云服务器类型不断涌现,例如计算型、内存型、本地盘型、大数据型、高主频型等。近年来,还出现了支持异构芯片的产品,包括GPU、FPGA 和各种崭露头角的AI 芯片, 以及更接近物理机形态的“弹性裸金属”云服务器。


云服务器最大的优点之一就是很容易将云下的计算任务搬到云上,快速云化。但对于用户新构建的应用,是否有更适合云上环境的方法来构建和运行呢?在这种想法的驱动下,云原生的概念开始生根发芽,以更好地利用云的各种特点,发挥云的优势。相应地,新的弹性计算产品形态也出现了,其中最重要的就是容器服务和函数计算。


容器服务通过更轻量的操作系统打包和分发方式、更轻巧的运行环境,极大地提升了计算的敏捷性,使得不可更改性(Immutability)这种充分利用云的高效自动化优势的计算范式开始流行起来。在这种计算范式下,用户将软件固化在容器的镜像中,然后使用该镜像快速拉起计算任务,出现问题时丢掉有问题的实例,再用原镜像重新拉起新的实例。如果要修改软件,则重新制作镜像,保证开发环境和生产环境的高度一致性,结合大量的自动化,让DevOps 交付、线上部署和运维的效率倍增。同时,容器的标准化加上现在已成为事实标准的Kubernetes 容器管理平台,让应用的可移植性得到一定的保障,减轻了用户被某个云服务提供商锁定的担忧。这些因素叠加在一起,使得容器服务成为弹性计算的“未来之星”。


而无服务器计算(Serverless Computing)则将云原生推到极致。无服务器计算使得用户可以彻底不再管理和运维底层的计算资源,只需将要运行的软件以特定的打包方式托管给云平台来运行,云平台负责计算力资源的获取、伸缩甚至容灾。例如,无服务器的容器服务使得用户无须事先购买运行容器的云服务器,也无须管理其“生老病死”,大大减轻了用户的负担。


函数计算则把无服务器计算推到了极致。函数计算将用户可以托管的计算任务缩小到一个函数的粒度,使得用户甚至不用关心该函数所需要的运行环境,启动时间以毫秒计算,扩容和缩容对用户透明,费用以调用次数计算,诸多特点让函数计算在一些“黏合剂”类的场景中如鱼得水,特别是事件驱动的异步计算任务、Web 服务等主流场景。

随着云计算技术日新月异的发展和普及,新的弹性计算产品形态将不断涌现。

上一篇:带你读《弹性计算—无处不在的算力》推荐序三


下一篇:带你读《弹性计算—无处不在的算力》前言