Hi~,感谢您阅读到本文,我是笠泱,本篇是“拥抱云计算”系列的第一篇章,主要想同大家分享下云计算这一概念和其诞生的背景,以及阿里云飞天操作系统,阅读本文大约需要30分钟,这是笔者精心打磨出的第一篇正式文章,值得一读,希望不负您宝贵的时间。
本章导语
在阅读正文前,笔者先简要说下云计算发展和演进过程中无论如何也绕不开的“虚拟化技术”,虚拟化技术诞生于 1974 年,当时就清楚地定义出 Hypervisor 的功能,以及高效的虚拟化计算体系架构的设计原则。虚拟化技术用通俗的话讲是将物理服务器过剩的性能进行更细的切分,将一份物理硬件虚拟出多份硬件或驱动,虚拟化后每台虚拟机相互隔离,可以拥有自己不同的操作系统、CPU核数、内存大小、网卡、磁盘等资源。
随着业务的发展,服务器集群的规模越来越大,基本都是千台起步,动辄上万台、甚至几十上百万台。如果去查一下BAT,包括微软、谷歌、亚马逊等等,服务器数目都大的吓人。这么多机器要靠人去选一个位置放这台虚拟化机并做相应的配置,几乎是不可能的事情,还是需要机器去做这个事情。人们发明了各种各样的算法来做这个事情,算法的名字叫做调度(Scheduler)。通俗一点说,就是有一个调度中心,几千台机器都在一个池子里面,无论用户需要多少CPU、内存、硬盘的虚拟电脑,调度中心会自动在大池子里面找一个能够满足用户需求的地方,把虚拟机启动起来做好配置,用户就直接能用了。这个阶段我们称为池化或者云化。到了这个阶段,才可以称为云计算,在这之前都只能叫虚拟化。
在 Intel 等芯片和系统厂商的产品中,虚拟化技术得到快速发展并不断演进。1998 年成立的 VMWare 公司在 20 多年的发展中成为赢利最好的以虚拟化技术为核心的公司。但是虚拟化技术成为云计算基础技术,还是在 2008 年之后的事。其根本原因是包括亚马逊 AWS(Amazon Web Services) 和阿里云在内的多个云服务提供商证明了云计算是可行并且赢利丰厚的业务。商业模式的成功反过来推动了虚拟化技术的快速发展,再加上要做到弹性资源管理、多租户弹性部署和安全隔离。开源软件虚拟化方案 Xen 和 KVM 相继成熟;近年更有神龙(阿里云)和 Nitro(AWS)等硬件虚拟化技术快速发展 ;在云原生计算方面基于 Kubernetes 的容器服务则成为主流。
什么是云计算?
目前业界共识,全球云计算领域的领导者是亚马逊的AWS,国内云计算领域的领导者是阿里云,所以采用这两家云厂商对云计算的定义描述具备权威性。
咱们先看AWS官网解释:“云计算是通过互联网通过云服务平台按需交付计算能力、数据库、存储、应用程序和其他 IT 资源,并附有 pay-as-you-go 定价。无论您是在运行与数百万移动用户共享照片的应用程序,还是支持业务的关键运营,云服务平台都能让您快速访问灵活、低成本的 IT 资源。使用云计算,您无需在硬件上进行大量的前期投资,也无需将大量时间花在管理硬件的繁重工作上。取而代之的是,您可以配置恰当的计算资源类型和大小,以支持您最新的创新想法或运营您的IT部门。您几乎可以立即访问任意数量的资源,并且只需为使用的资源付费。”
咱们再看阿里云官网解释:“云计算是一种通过互联网提供计算资源和服务的技术。它允许用户随时随地访问和使用云平台上的数据、软件和硬件资源。在数字化时代,互联网已经成为基础设施。云计算使得数据中心能够像一台计算机一样去工作。通过互联网将算力以按需使用、按量付费的形式提供给用户,包括:计算、存储、网络、数据库、大数据计算、大模型等算力形态。云计算一个明显的优势是弹性,能让您按需使用各类服务,灵活扩缩容,从容应对业务流量的不确定性。”
从上述定义描述,我们可以提取到云计算的关键词和标签:按需使用,按量付费、弹性
- 按需使用,按量付费通俗的讲只要用户掏钱就能购买到所需要的IT资源和服务,根据用户需要多少CPU、内存、硬盘、网络能力,云平台会自动在大池子里面调度一个能够满足用户需求的算力,把资源和服务准备好直接提供给用户使用。
- 弹性是对云计算的用户而言,云平台的算力资源几乎无限,资源细粒度可以切分到非常细,借助云计算,您无需为日后处理业务活动高峰而预先过度预置资源。相反,您可以根据实际需求预置资源量。您可以根据业务需求的变化立即扩展或缩减这些资源,以扩大或缩小容量。
云计算有哪些类型?
云计算可以根据不同的分类标准来进行分类。其中,根据服务模式的不同,从传统的通用视角看云计算主要分为IaaS、PaaS和SaaS三种模式:
- 基础设施即服务(IaaS)提供各类基础设施类能力的服务类别,包括计算、存储、网络等资源服务能力。您无需购买和部署服务器、存储、网络设备等硬件基础设施就可以灵活部署自己的业务系统。
- 平台即服务(PaaS)提供应用程序所需要的硬件和软件部署平台的服务类别。您无需管理和维护复杂的底层基础架构和操作系统,只需要关注自己的业务逻辑,加速开发效率。
- 模型即服务(MaaS)把 AI 模型当作生产的重要元素,从模型预训练到二次调优,最后到模型部署,围绕模型的生命周期来提供相应的服务。您可以通过低成本的方式访问、使用、集成模型,提升您的业务智能化能力。
- 软件即服务(SaaS)提供软件的服务类别,包括协同软件、客户关系管理、企业资源计划、人力资源系统等。您无需经过传统的研发流程,而是通过互联网即可使用软件服务,节约了管理基础设施和研发软件的工作。
随着IT技术的发展,大数据、区块链、Serverless、大模型得到空前发展和关注,还可以拓展到数据即服务(Daas),区块链即服务(Baas)、函数即服务(Faas)、模型即服务(MaaS)。
另外根据部署方式的不同,云计算可以分为公共云和专有云(私有云)以及混合云。
- 公共云是一种通过互联网的方式提供给公众计算资源的云计算环境。它是由第三方公司拥有和运营的,用户只要注册一个账号,就能在网页上点一下创建云资源或服务,用户然后可以通过互联网访问这些服务,无需购买物理基础设施,同时可以轻松扩展,并且用户只需为所使用的资源付费。例如国外知名的亚马逊的AWS、微软的Azure、谷歌云,国内的阿里云、腾讯云、华为云等。
- 专有云(私有云)是仅提供给单个或某类组织构建的云计算环境,采用和公共云相同的技术架构,可以与公共云互联,实现云上的弹性和敏捷。不同的是,专有云是独立部署的形式,它可以在组织内部网络中部署,也可以由第三方提供商托管部署。
- 混合云 把私有云和公有云连接结合起来使用我们称为混合云,因为一般而言企业自建专有云(私有云)成本投入非常大,混合云部署模式主要场景用于用户将重要数据的业务放在私有云纳管,保障数据的管控性,将非重要数据的业务放在公有云侧享受更为廉价、丰富的资源服务。
云计算诞生背景
亚马逊、阿里云这些知名的头部云计算厂商,为什么要做云计算呢?我们知道亚马逊和阿里最开始都是做电商,在做电商时会遇到黑色星期五或双十一这类大促场景,就特别需要IT资源的时间灵活性和空间灵活性。因为不能时刻准备好所有的资源,那样太浪费了。但也不能什么都不准备,看着双十一这么多用户想买东西登不上去系统。所以需要双十一时,就创建一大批虚拟机来支撑电商应用,过了双十一再把这些资源都释放掉去干别的。因此他们是需要一个云平台的。然而商用的服务器、数据库、存储设备以及虚拟化软件实在是太贵了,总不能把自己在电商赚的钱全部给了硬件厂商和虚拟化厂商,这也就当时阿里想做去IOE转向云计算的初衷(即去掉IBM小型机、Oracle数据库、EMC存储设备,代之以自己在开源软件基础上开发的系统,以解决IT基础设施的扩展性瓶颈和成本问题)。
于是他们基于通用x86服务器、开源的虚拟化技术(如上所述的Xen或者KVM)以及一系列其他开源技术开发了一套自己的云化软件,后来AWS 和阿里云在内的多个云服务提供商发现云计算市场前景巨大,越做越大,越做越强,证明了云计算是可行并且赢利丰厚的业务。商业模式的成功会反哺云计算的快速发展。AWS在全球云计算领域起步较早且成功的厂商,目前不管是技术成熟度还是全球云计算市场份额依然是领导者,阿里云是国内起步最早且自研云操作系统的厂商,根据Gartner在2024年5月发布的云计算市场追踪数据报告显示阿里云在亚太地区云计算IaaS市场排名第一,也是全球云计算领域的引领者。
OpenStack和ApsaraStack
上述篇幅在阐述云计算这一概念和其诞生的背景,笔者认为光讲到这里还不够,我们需要比较具象化的去理解云计算,最好能告诉我们云平台底层是怎么调度算力,如何运行以实现其丰富的上层应用。限于笔者技术能力和工作经历,对AWS未做研究,仅对OpenStack和阿里云稍有探究,所以笔者打算从这两者类比入手,尝试着解析下阿里云飞天架构的底层逻辑如何实现,需要特别说明的是阿里云飞天系统是阿里自研且闭源的商用云平台,市面上没有公开的文章阐述其背后具体实现原理和逻辑,但从开源的OpenStack技术栈中我们可以大概领略到一套基础的云计算调度系统有哪些模块,起着怎样的作用以及如何协同运行完成算力调度。
为什么选择openstack做类比?是因为在国内除了阿里云,95%的云厂商(比如华为云、腾讯云、天翼云等等)都是在openstack的基础之上进行了二次开发、图形界面化。openstack已然成为了开源云计算平台的规范,所以openstack很具有参考性。先为不熟悉OpenStack和阿里云飞天(ApsaraStack)的读者简要解释下这两个概念。
OpenStack是由Rackspace和NASA(美国航空航天局)在2010年共同发起的开源项目,是一系列软件开源项目的组合,主要聚焦于 IaaS云计算平台,起因是彼时的Rackspace看着AWS的云计算越做越大,干不过了选择借助开源力量,让任何人都可以自行建立和提供云端运算服务,主要用Python语言编写,每半年发布一次,截止目前最新版本为2024年10月2日发布的Dalmatian。
*上图来自于OpenStack官网,原图链接:https://www.openstack.org/software
OpenStack核心组件有:
身份服务( Identity Service ):Keystone
计算( Compute ): Nova
镜像服务( Image Service ): Glance
网络 & 地址管理( Network ): Neutron
对象存储( Object Storage ): Swift
块存储 (Block Storage) : Cinder
UI 界面 (Dashboard) : Horizon
计量 (Metering) : Ceilometer
部署编排 (Orchestration) : Heat
*上图来自于OpenStack官网,原图链接:https://www.openstack.org/software/project-navigator/openstack-components#openstack-services
飞天(ApsaraStack):是由阿里云自主研发拥有超大规模通用云计算操作系统,在2007年时开始构思飞天架构,2009年2月开始写下第一行代码,2013年8月15日,单集群规模5000台服务器的飞天集群正式开始生产运营,这是一个重要的节点标志。现如今阿里云飞天系统已具有单集群1万台物理服务器的调度能力,具有EB(10亿GB)级的大数据存储和分析能力,是一套涵盖Iaas、Paas、Saas能力的完整的商业化的云平台。
浅析阿里云飞天架构
先来看一张阿里云飞天架构简图
*上图来自于阿里云开发者社区,原图链接:https://developer.aliyun.com/ask/466239
飞天系统最底层是Linux集群,没有使用任何高端的存储及服务器,主要为X86、ARM、信创通用服务器,其上包含多个模块:分布式文件系统盘古(Pangu),任务调度和资源管理模块伏羲(Fuxi),分布式协同服务女娲(Nuwa),安全管理钟馗(Zhongkui),网络通信模块夸父(Kuafu),监控系统神农(Shennong),集群部署大禹(Dayu),自动化运维服务天基(Tianji)等等。
在飞天之上承载这阿里云的弹性计算服务(Elastic ComputeService,简称ECS)、开放存储服务(Open Storage Service,简称OSS)、关系型数据库服务(Relational Database Service,简称RDS)和开放数据处理服务(Open Data Processing Service,简称ODPS,即上图的MaxCompute)、开放结构化数据服务(Open Table Service,简称OTS,即上图的Table Store)等云计算产品,并通过服务的方式对外输出云计算能力。
虽然上图仅是一张飞天架构简图,图中还有飞天的许多模块组件并未被展示出,但仍有许多可圈可点的地方以及许多隐匿在架构背后的故事。
首先简图中有一个最关键的内核组件没有被提及,那就是洛神,云计算本身是分布式架构,分布式系统离不开网络,洛神是阿里云网络的核心平台,提供云计算中网络虚拟化的能力。一方面通过网络虚拟化,为用户提供超大规模、超高性能、超强弹性的网络产品和服务。另一方面,作为底层技术系统,提供基础网络设施,支撑阿里云几乎所有产品,包括ECS,RDS,OSS的对外服务。
其次,关于上图中飞天平台内核包含的几大模块详细解析笔者先推荐您阅读文末所列的参考资料。同时考虑到读者朋友们时间宝贵,也希望对您理解飞天架构有所帮助,笔者在此用自己的话简要概括如下:
- 盘古(Pangu)是一个分布式文件系统,盘古系统的设计目标是将大量通用机器的存储资源聚合在一起,为用户提供块存储、对象存储能力的存储服务,使用分布式算法Paxos协议来保证元数据的一致性和高可用性,其整体技术实现类似于开源的Ceph。
- 伏羲(Fuxi)是飞天平台内核中负责资源管理和任务调度的模块,同时也是为应用开发提供一套编程基础框架。好比于云计算的中央处理器,是飞天平台的“大脑”,伏羲对资源的调度是多维度的,可以根据CPU、内存等系统资源,以及应用自定义的虚拟资源对整个集群进行资源分配和调度,类似于Hadoop的job tracker。
- 女娲(Nuwa)为飞天提供高可用的协调服务(Coordination Service),是构建各类分布式应用的核心服务,它的作用是采用类似文件系统的树形命名空间来让分布式进程互相协同工作,类似于开源的ZooKeeper。
- 钟馗(Zhongkui)是飞天平台内核中负责安全管理的模块,它提供了以用户为单位的身份认证和授权,以及对集群数据资源和服务进行的访问控制,比如用户登录阿里云控制台认证、调用aksk时都会经由该服务来处理,类似于OpenStack的keystone。
- 夸父(Kuafu)是飞天平台内核中负责网络通信的模块,是一套RPC的具体实现,负责为飞天各个模块接口之间相互调用服务。
- 神农(Shennong)是飞天平台内核中负责信息收集、监控和诊断的模块。它通过在每台物理机器上部署轻量级的信息采集模块,获取各个机器的操作系统与应用软件运行状态,监控集群中的故障,并通过分析引擎对整个飞天的运行状态进行评估。
- 天基(Tianji)是阿里云的一套分布式、自动化、数据中心管理系统,采用CS架构,主要有TianjiMaster和TianjiClient组成,对硬件、产品软件、静态资源(程序、配置、数据等)提供全生命周期管理,包括部署、升级、扩缩容、监控报警、报表分析等功能,实现一站式运维管控,其最核心的理念是面向终态的运维。
阿里云飞天平台如何调度算力
读到这里,站在用户视角您可能还是无法具象化理解阿里云的飞天系统是如何调度算力的,举例个在阿里云控制台界面最常见的操作,用户想创建出一台自己需要的ECS。
在开始前需要读者了解如下前置知识:
- ECS对于用户界面是一个产品,但对于阿里云底层管理界面来说就是虚拟机,虚拟机最大特点是其封装性,通过虚拟化技术将虚拟机打包封装成了一个文件,这对其管理、迁移、快照、运维都极为便利。那在阿里云飞天平台中哪个模块组件负责调度虚拟机呢?答案是后羿(Houyi)模块(虽然在阿里云社区提供的飞天架构简图中并未画出),后羿用于对接管理KVM、VMWare这类虚拟化产品,调度虚拟机,类似于OpenStack的计算节点Nova。
- 值得一提的是阿里云在2015年以前用思杰公司(Citrix)的Xen虚拟化技术,2015年以后全面替换为红帽公司(Redhat)开源的KVM(全称Kernel-based Virtual Machine,意为基于内核的虚拟机),为什么要替换?因为Xen早期是基于软件模拟的半虚拟化(Para-Virtualization),KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化(Full-Virtualization),仅从文字描述上我们就可以得知KVM的性能要高于Xen,其次Xen本身有自己的进程调度器,存储管理模块等,需要单独的一套内核,也因为其没有完全融入到Linux的内核代码中,需要在服务器上维护两套内核,打两套补丁等等,增加了复杂性和维护成本。阿里云虚拟化技术发展历程如下图
*上图来源于《阿里云电子丛书——弹性计算:无处不在的算力》,原文链接:https://developer.aliyun.com/topic/download?id=7996
- 额外补充下虚拟化历史背景:Xen其实也是一个开源的虚拟化技术,最初由伦敦剑桥大学的Ian Pratt和Keir Fraser开发,并于2002年开源。XenSource公司成立于2003年,致力于开发基于Xen的商用产品。2007年XenSource被思杰公司以约5亿美元的价格收购,从而将Xen技术商业化,收购后,思杰继续开发和推广基于Xen的虚拟化产品,如XenServer、XenEnterprise,成为当时开源虚拟化技术领域中比较成熟的虚拟机监控器项目,在2014年以前的时期,亚马逊 AWS 的虚拟化架构使用的也是 Xen。然而,随着技术的迭代发展,在2005 年、2006 年,Intel 和 AMD 的 x86 CPU 硬件分别开始支持硬件虚拟化 (VT)技术,并在 2006 年诞生了 KVM 这个基于硬件虚拟化的开源虚拟化项目。红帽(RedHat)公司在 2008 年收购了开发 KVM 的以色列公司 Qumranet后,KVM 更是得到了大力的发展。2014 年左右,KVM 在功能完备性、稳定性、 社区支持等各个方面都超过了 Xen,在几年前有消息称思杰正在重塑其综合云产品,计划抛弃一些长期建立的品牌包括Xen,说明Xen已经淡出了历史舞台,这也是IT技术发展的一个小缩影。
好了,话不多说,直接上图解释:
首先用户登录阿里云ECS控制台(https://ecs.console.aliyun.com),登录过程钟馗会进行认证鉴权;然后假设用户在余额充足的情况下在ECS购买页面(https://ecs-buy.aliyun.com)点击创建1台4核8GB,SSD类型的系统盘40GB,高效云盘类型的数据盘100GB,操作系统镜像为Ubuntu24.04 64位的实例;当用户支付成功后会发送请求给钟馗,去拿创建对应ECS实例规格的授权令牌,钟馗认证成功返回给用户所需令牌,同时钟馗通过伏羲发送异步消息队列协调后羿和盘古用户的资源创建授权已通过;紧接着用户获得令牌会去调用后羿API请求创建出一台4C8G的ECS,调用盘古API请求创建40GB+100GB对应规格的云盘;后羿模块接收到已授权用户请求后,会去调度KVM虚拟化层让KVM启动对应规格的虚拟机,同时通过伏羲向盘古申请挂载所需云盘,通过伏羲去向洛神申请发放ECS的虚拟网卡,这个过程就会涉及到不同模块之间的RPC网络通信,需要注意的是不管是阿里云提供的公共镜像还是用户自定义的镜像实际都是存放在一个叫root用户管理的OSS空间下,盘古会将用户所需的镜像加载至40GB系统盘中,之后会将40GB+100GB的云盘通过洛神网络挂载到ECS实例,待用户创建的ECS实例所需资源全部完备后,后羿模块会返回创建成功给到用户,这个返回过程可能是异步的,至此用户所需的ECS就创建完成,后续用户可在ECS控制台查看并使用。
那像阿里云的SLB(负载均衡)产品是如何被调度创建出的呢?首先需要知道的是SLB的四层负载均衡基于LVS实现,七层负载均衡基于Tengine(Nginx的发行版之一)实现,那实际上当用户需要创建SLB时,阿里云飞天平台将封装好LVS或Tengine的镜像启动为虚拟机,其调度算力逻辑和ECS类似,再通过图形化界面让用户配置参数,其本质也是属于ECS虚拟机。
另外像近些年火了很久的容器服务ACK、Severless,当用户根据自定义参数点击创建实例时,其本质也是阿里云飞天调度出相应规格且封装好了k8s镜像的虚拟机集群以供用户使用。
还有读者可能对阿里云的RDS数据库产品感兴趣,好奇其是如何被调度创建出的,RDS的创建和ECS还不太一样,RDS这个产品比较特殊,不是封装在虚拟机镜像中,而是通过另一个飞天模块组件杜康(Dukang)去管理调度RDS物理机集群,一个RDS实例对应底层RDS物理机集群上不同的mysql进程+端口,通过一个叫Aurora服务的核心中间件保证高可用,此外利用SLB提供VIP( Virtual IP Address)、标准的3306端口对外服务等特性。
本章结语
读完此篇我想您会对云计算有了新的认知,所有的新事物都不是突然冒出来的,都有前世和今生。云计算也是IT技术不断发展的产物,云计算本身也在迭代发展,从最开始的云计算1.0时代,主要依靠分布式、虚拟化技术调度虚拟机聚焦于Iaas层,提供四大件服务(即计算、存储、网络、数据库)。发展到云计算2.0时代,借助容器化技术实现了秒级弹性,使得 PaaS层对于用户自身应用的自动部署变得快速而优雅,让SaaS层更加丰富多样化。再到现阶段的云计算3.0时代,借助Serverless+AI技术,一直在追求业务的极致弹性、高度解耦、让算力更加普惠,让企业更能聚焦于自己的核心业务。做架构老生常谈的一句话便是:“架构从来不是被指定或被设计出来的,而是结合具体业务需求、IT技术发展,演化、重构得来,笔者认为适合企业当下业务发展的架构亦是最优解!”
文末的参考资料是笔者精选的文章,希望对云计算、IT技术热爱的您参阅并启迪。最后,感谢您的阅读!您的点赞+关注+转发是我后续更新的动力!文章会同步在微信公众号@云上的喵酱、阿里云开发者社区@云上的喵酱、CSDN@笠泱 更新,您的点赞+关注+转发是我后续更新的动力!
参考资料
1、《阿里云官网云计算主题——什么是云计算?》
https://www.aliyun.com/getting-started/what-is/what-is-cloud-computing
2、《AWS官网概述——什么是云计算?》
https://docs.aws.amazon.com/zh_cn/whitepapers/latest/aws-overview/what-is-cloud-computing.html
3、《云计算、大数据、人工智能》*强烈推荐*
https://www.cnblogs.com/cloudhere/p/10768850.html
4、《云计算OpenStack系列文章 》 *强烈推荐*
https://www.cnblogs.com/cloudhere/category/1439151.html
5、《OpenStack及其构成简介》
https://www.cnblogs.com/jingtyu/p/6379490.html
6、《阿里云开发者社区——云计算演进问题》
https://developer.aliyun.com/article/1587321
7、《阿里云开发者社区——云计算网络基础架构的实践和演进——打造云计算网络基石》
https://developer.aliyun.com/article/74431
8、《阿里云开发者社区——阿里飞天云平台架构简介》
https://developer.aliyun.com/article/652388
9、《阿里云开发者社区——盘古:阿里云飞天分布式存储系统设计深度解析》
https://developer.aliyun.com/article/64374
10、《阿里云开发者社区——解析阿里云分布式调度系统伏羲》
https://developer.aliyun.com/article/72526
11、《阿里云开发者社区——一群阿里人如何用 10 年自研洛神云网络平台?技术架构演进全揭秘!》
https://developer.aliyun.com/article/753750
12、《阿里云电子丛书——弹性计算:无处不在的算力》 *强烈推荐*
https://developer.aliyun.com/topic/download?id=7996
13、《阿里云认证的解析与实战-关系型数据库ACP认证》