ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

云计算体系结构解析:从虚拟化到IaaS/PaaS/SaaS的服务模式

云计算体系结构解析:从虚拟化到IaaS/PaaS/SaaS的服务模式 简介这份PPT是「云计算概述」的完整讲义适合初入云计算领域的开发者、IT运维人员及高校师生用作概念入门与知识梳理。内容从数据爆炸式增长、能耗与利用率问题切入系统讲解云计算产生的背景、机遇与技术支撑并覆盖NIST与伯克利定义、云体系结构、虚拟机原理以及IaaS/PaaS/SaaS三种服务模式结构清晰、图文并茂。压缩包共1个文件为单个PPT演示文稿大小约3.05MB轻量易用可直接打开学习或作为培训课件参考。目前已有113人在线学习对于希望快速建立云计算整体认知、理解服务模式与虚拟化基础的读者是一份高效直观的入门资料。1. 数据爆炸与算力焦虑云计算为什么非出现不可2006年全球一年的数据产量是161EB到2011年已经涨到1800EB年增长率超过60%。另一边大部分企业IT基础设施的利用率只有35%一半以上的企业连15%都不到。一边是数据以指数级膨胀一边是大量服务器在低负载空转这种结构性的错配就是云计算出现的根本动力。这份《云计算概述》PPT把云计算的产生背景、技术支撑、体系结构和目标串成了一条完整的逻辑链。我把它拆开讲同时补充一些实际部署中会用到的命令和参数让刚接触云计算的开发者和运维人员能真正把纸面概念对应到可操作的工程实践上。2. 四根支柱虚拟化、网格计算、效用计算与SaaS如何撑起云计算2.1 虚拟化把一台物理机拆成多台“电脑”PPT里给虚拟机的定义很准确通过虚拟化软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。这句话包含两个核心点一是“完整硬件”二是“完全隔离”。前者让虚拟机里的操作系统以为自己跑在真实硬件上后者保证了多个虚拟机互不干扰。PPT还提到在单个服务器上有可能同时运行数百个虚拟机这说明虚拟化的密度可以做到很高但实际受CPU核数和内存容量限制。虚拟化带来的直接好处不是单一维度的。首先是资源利用率多个操作系统共存于一台物理机闲置窗口被互相填补。其次是故障隔离某个虚拟机崩溃后可以快速恢复不会影响同宿主机上的其他实例。第三是运维灵活性快照、数据重放和回滚让系统管理从“物理维修”变成“文件操作”。虚拟化实现层常见分两种。桌面场景下的VirtualBox、VMware Workstation属于宿主型Hypervisor底层依赖桌面操作系统数据中心生产环境更常用裸机型Hypervisor比如KVM、Xen直接管理硬件性能和隔离性更好。PPT里提到的三款虚拟机软件是VMware Workstation、Oracle VM VirtualBox和Windows Virtual PC其中前两个在今天依然活跃Windows Virtual PC已经很少见到。在Linux服务器上做虚拟化KVM是绝对主流。第一步先确认CPU支持# 检查CPU是否支持硬件虚拟化输出大于0表示支持 egrep -c (vmx|svm) /proc/cpuinfo这个命令会在Intel机器上匹配vmx标志在AMD机器上匹配svm标志。如果输出是0先检查BIOS是否关闭了虚拟化或者CPU本身不支持否则后面创建KVM虚拟机一定会报错。确认支持后用virt-install创建虚拟机。我一般会这样写# 用virt-install创建一台名为cloud-test的虚拟机 virt-install \ --name cloud-test \ # 虚拟机名称后续管理都用这个名字 --ram 2048 \ # 分配2GB内存 --vcpus 2 \ # 分配2个vCPU --disk path/var/lib/libvirt/images/cloud-test.qcow2,size20 \ # 磁盘镜像路径容量20GB --cdrom /iso/ubuntu-22.04.iso \ # 挂载Ubuntu 22.04安装镜像 --os-variant ubuntu22.04 # 让virt-install应用匹配的系统优化参数注意--ram和--vcpus是给虚拟机分配的资源不要超过宿主机可用范围--disk里的path路径要保证目录存在且有写权限--cdrom安装完成后可以再移除。--os-variant并不是必须的但填了可以让虚拟机使用更合适的virtio驱动和CPU模型开机速度和质量都更好。这个命令是交互式安装后面会进入系统安装界面和物理机装系统没有区别。2.2 网格计算把分散资源拼接成超级计算机网格计算的概念比云计算更早PPT将其定位为“云计算的技术基础”核心贡献是资源共享和资源整合。网格计算的思想是把分布在不同机构、不同地域的计算机连接起来共同处理同一个大规模计算任务对外表现得像一台超级计算机。典型的例子是很多科研项目利用普通PC的闲置算力做分布式计算例如SETIhome个人用户下载一个客户端系统在后台下载数据包并计算算完再传回服务器。虚拟化和网格计算看起来都在讲“资源”但方向正好相反。虚拟化是把一台大机器切成很多小虚拟机强调的是隔离和切分网格计算是把很多小机器并成一台大机器强调的是聚合和共享。切分是为了提高单机利用率和灵活性聚合是为了获得单靠一台机器无法达到的算力。云计算的资源池继承了网格计算的聚合思路但用更工程化的方式实现资源池通常集中在同一个数据中心通过网络虚拟化进行统一调度而不是依赖跨地域的松散协议。今天的Hadoop、Spark分布式计算框架也能看到网格计算的思想痕迹。数据切分到多个计算节点各节点并行处理再汇总结果。区别在于云计算资源池里的节点是动态分配和回收的而网格计算至少在设计初期需要固定的资源加入。动态性这一点正是云计算相对传统网格计算的重要演进。2.3 效用计算与SaaS让云计算变成像水电一样的基础服务效用计算把计算能力当作一种可计量的商品用多少付多少SaaS则把软件变成一种可通过网络订阅的服务用户通过Web使用不再为一次性购买版权付费。PPT里明确提到用户不需要因为短时间使用某个软件而购买版权这句话点出了SaaS的商业价值。效用计算解决的是“计价”问题SaaS解决的是“交付”问题。没有效用计算用户会觉得按需付费不透明没有SaaS软件依然需要通过本地安装和许可证授权交付成本高且弹性差。两者结合起来云服务才真正做到了“像水电气一样”按表计费。云厂商计算的维度一般包括vCPU小时数、存储容量月租、网络流量、API调用次数等每个维度都可以在控制台查到明细。2.4 四者如何配合虚拟化、网格计算、效用计算和SaaS分别回答云计算的四个关键问题资源怎么切资源怎么聚服务怎么计价产品怎么交付。虚拟化让资源变成可以随时创建和销毁的虚拟机网格计算证明了聚合规模资源是可行的效用计算把成本分摊到每一次使用SaaS把复杂的技术栈封装成用户可感知的功能。缺少任何一个云计算都无法形成今天这样的规模和接受度。没有虚拟化多租户隔离做不到没有网格计算超大规模调度缺乏理论支持没有效用计算用户不敢把工作负载迁移到云端没有SaaS云平台很难从工具变成商业生态。Google文件系统和MapReduce则提供了大规模工程实践的样本证明这套组合在真实业务中能跑得通。理解这四者的关系比记住一堆云计算名词更有价值。3. 云计算的体系结构从物理资源到服务编排的分层模型3.1 PPT中的云架构四层PPT把云计算体系结构分成四层最底层是物理资源包含计算机、存储器、网络设施、数据库和软件资源往上是资源池包含计算资源池、存储资源池、网络资源池、数据资源池和软件资源池再往上是管理中间件承担用户管理、任务管理、资源管理和安全管理最上层是SOA构建层包含服务注册、服务查找、服务访问和工作流。如果用一张表来看会更清晰。层次包含内容核心职责SOA构建层服务注册、服务查找、服务访问、工作流把云能力封装成标准服务接口管理中间件用户管理、任务管理、资源管理、安全管理调度、计费、监控、身份安全资源池计算、存储、网络、数据、软件资源池将物理资源池化形成可分配单元物理资源计算机、存储器、网络设施、数据库、软件提供原始算力、存储和网络能力注意PPT中的“软件资源池”和“数据资源池”不是所有云平台都会单独划出来很多实现里它们被归类到存储和计算资源池中用镜像模板和数据库服务的形式出现。但分层的思想是统一的资源池必须对上层屏蔽底层异构硬件上层只需要关心资源和服务的逻辑属性。3.2 资源池化与管理中间件的内部逻辑资源池化是整个架构的关键。物理资源通过虚拟化变成了计算资源池和存储资源池。计算资源池里的单元是虚拟机或容器存储资源池里的单元则是块设备或对象存储。网络资源池通过SDN技术将物理交换机抽象为逻辑网络按需创建VPC、子网和安全组。管理中间件是云平台的“操作系统”。服务接口模块负责服务的注册、查找和访问这是用户能通过API调用云服务的前提。用户管理模块包含身份认证、访问授权和计费这里的身份认证通常对接统一认证体系比如OpenStack里的Keystone。任务管理模块负责任务调度、任务执行和生命周期管理还要处理负载均衡、故障检测和故障恢复。资源管理模块则负责监视统计、映像部署和管理资源池。PPT中还提到云架构的一个显著特点是“将地理上分布、大规模、异构的资源虚拟化并对用户提供按需服务”。这意味着管理中间件必须能容忍硬件差异。比如同一资源池里可能有不同代际的CPU调度器需要按照内存和CPU的可用量来打分排序而不是简单看物理机数量。日常运维中我们更常接触的是这些模块对外暴露的接口。比如用户管理对应登录和访问控制任务管理对应创建/删除虚拟机实例资源管理对应查看监控指标。因此当你在云控制台点击“创建实例”时背后实际发生了这样一条链路认证鉴权通过后任务调度读取资源池的可用量选择合适的物理宿主机调用虚拟化层创建虚拟机然后给虚拟机分配网络和安全组最后把结果反馈给控制台。3.3 把架构对应到实际开源工具如果要在开源社区找这套架构的实现OpenStack是最接近的。物理资源对应服务器、存储阵列和网络交换机资源池对应Nova计算节点、Cinder块存储、Neutron网络服务管理中间件对应Keystone认证、Nova Scheduler调度、Ceilometer计量SOA构建层则对应REST API和Horizon仪表盘。可以用几个命令感受一下# 申请一个临时token用于后续API调用 openstack token issue # 查看当前云平台注册了哪些服务 openstack service list # 查看项目demo下面的虚拟机实例 openstack server list --project demo第一行命令输出的token相当于一个临时通行证调用其他API时需要在请求头里带上第二行命令会列出计算、存储、网络等服务的名称和类型你可以对照看它对应PPT里的服务注册机制第三行命令把管理中间件的“任务管理”落到具体结果显示虚拟机名称、状态、IP和所在宿主机的具体信息。实际生产环境里OpenStack的部署和维护成本较高很多中小团队转而使用Kubernetes作为“云计算管理中间件”的简化版。Kubernetes把容器当作资源池里的最小单元用控制面里的Scheduler、Controller Manager、ETCD等组件完成了PPT里任务调度、资源管理和生命周期管理的工作。理解PPT里的分层模型后再看Kubernetes你会发现它的许多组件其实都能在传统云架构里找到对应位置。4. IaaS、PaaS、SaaS服务模式的选择与交付边界4.1 三种模式的定义与用户边界PPT对三种服务模式的定义很清晰基础设施服务提供计算、存储、网络资源平台服务提供开发与运行环境软件服务提供办公应用、信息化应用、通讯应用和互联网应用。用户从底层到上层控制范围越来越小需要负责的事情也越来越少。模式提供内容用户负责典型使用方式IaaS虚拟机、存储、网络、负载均衡操作系统、中间件、数据、应用创建云主机自建集群PaaS运行时、数据库、消息队列应用代码和配置直接部署代码不用管服务器SaaS完整软件功能数据录入和业务操作浏览器访问按账号订阅这里有一个容易混淆的边界IaaS和PaaS的差异不在于“有没有数据库”而在于用户能不能控制操作系统。如果云平台给你一台虚拟机让你自己装Nginx和MySQL那就是IaaS如果平台直接提供MySQL实例你只负责建表导入数据不用关心实例跑在哪里那就是PaaS。SaaS的边界更彻底用户连数据库结构都看不到只能通过界面操作记录数据。4.2 从PPT到实际选型PPT中给出了IaaS、PaaS、SaaS对企业不同层面的好处IaaS低成本、大规模、高效率PaaS统一平台架构引入外部开发者形成生态SaaS增强业务性能、降低终端要求。落到实际选型时可以按这个优先级来考虑。个人开发者或小团队做产品验证优先用PaaS比如直接用云数据库、弹性容器服务把精力集中在代码上。业务模型成熟、需要精细控制底层操作系统配置时再切到IaaS。对于企业内外部协同场景比如CRM、企业邮箱、视频会议直接采购SaaS产品比自建划算得多PPT里提到的“降低终端要求”在今天依然有现实意义浏览器即终端让员工不需要高性能办公电脑。自建机房的成本不只是设备投入还有电力、带宽、机柜租金和专职运维人员。PPT给出的数据是英国单个数据中心2010年每年能源费用约740万英镑这还是不算设备折旧的数据。所以很多企业把“上云”作为IT成本从资本开支转为运营开支的第一步。4.3 用命令体验IaaS与PaaS先看IaaS体验。以AWS CLI为例创建一台EC2实例的命令# 创建一台t3.micro实例指定镜像、密钥对、安全组和子网 aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ # EC2镜像ID相当于模板 --instance-type t3.micro \ # 实例规格2核1GB --key-name my-key \ # 用于SSH登录的密钥对 --security-group-ids sg-12345678 \ # 安全组控制流量放行 --subnet-id subnet-12345678 # 子网ID决定实例所在的VPC网段run-instances是AWS创建虚拟机的主命令。--image-id指定操作系统模板不同的系统、地域对应不同的ID--instance-type决定vCPU和内存--key-name是登录凭证Linux实例默认不允许密码登录--security-group-ids是防火墙规则组只放行常用端口--subnet-id把实例放进指定子网。这条命令执行完会返回一个实例ID稍等半分钟实例就进入running状态。再看PaaS体验。如果本机有Kubernetes环境下面的命令可以近似模拟PaaS的交付方式# 创建一个nginx部署镜像为1.25版本 kubectl create deployment nginx --imagenginx:1.25 # 把该部署暴露到公网使用负载均衡器 kubectl expose deployment nginx --port80 --target-port80 --typeLoadBalancer第一条命令声明“我要一个nginx服务”Kubernetes控制器会自动创建Pod副本、分配IP第二条命令声明“让这个服务可以从外网访问”。这个过程中用户完全没有操作虚拟机、操作系统和网络设备只需要描述最终状态和PaaS的核心语义一致。如果换成传统IaaS你需要先创建虚拟机再安装nginx再配防火墙再挂公网IP链路会长得多。5. 用数字说话规模、能耗与资源利用率以及云资源规划技巧5.1 数据中心的能耗账本PPT里引用的几个数字到今天仍提醒我们基础设施成本有多高2005年美国新建数据中心能耗约等于加州的10%约5GW对应40亿美金英国1500个数据中心年能耗相当于一座城市2010年英国单个数据中心能源成本约740万英镑。在芯片性能还没有大幅突破的背景下能耗成为限制数据中心规模的关键因素。能耗账本可以用PUE来衡量。PUE是数据中心总能耗与IT设备能耗的比值普通机房的PUE通常在1.8到2.5意味着空调、供配电等辅助设备消耗比IT设备本身还多。大型云厂商通过自然冷却、液冷和智能调度把PUE降到1.1到1.3。PPT中提到Google的圣吉兰数据中心完全依靠外部空气冷却这是降低PUE的一种常见手段。5.2 利用率是用好云的关键PPT给出的另一组数据同样关键大部分企业IT基础设施利用率只有35%许多企业不到15%Google服务器的利用率在10%到50%之间。低利用率意味着采购了大量设备却只跑了一小部分负载这在自建机房时代很难避免因为容量必须按业务峰值规划而峰值一年可能只出现几天。云平台通过多租户和动态调度让资源在不同用户之间共享。一方面不同业务的峰值时间错开填充了资源空闲窗口另一方面虚拟化层允许超配比如一个32核的物理机逻辑上可以分配出48个vCPU只要实际运行负载不会同时打满全部核这种超配就是安全的。但超配比例需要谨慎评估CPU超配1.5到2倍是常见做法内存超配倍数要更低因为内存不像CPU可以压缩时间片内存不足直接触发OOM。5.3 一个可复用的资源估算方法把PPT里的利用率公式落到具体场景可以用下面的脚本来估算物理机数量。假设你需要在私有云环境承载500台2核4GB的虚拟机单台物理机是32核256GB内存。from math import ceil # 单台物理机配置 node_cpu_cores 32 node_mem_gb 256 # 单台虚拟机规格 vm_vcpu 2 vm_mem_gb 4 # 预期虚拟机数量 vm_count 500 # 超配比CPU 1.7内存 1.2 cpu_overcommit 1.7 mem_overcommit 1.2 # 按维度计算需要的物理机数量 nodes_by_cpu ceil(vm_count * vm_vcpu / (node_cpu_cores * cpu_overcommit)) nodes_by_mem ceil(vm_count * vm_mem_gb / (node_mem_gb * mem_overcommit)) print(f按CPU估算需要的物理机数: {nodes_by_cpu}) print(f按内存估算需要的物理机数: {nodes_by_mem}) print(f最终建议取较大值: {max(nodes_by_cpu, nodes_by_mem)})这个脚本的核心逻辑是每台物理机可提供的vCPU总量等于核数乘以超配比虚拟机总vCPU数量除以单台可提供量向上取整得到CPU维度的节点数内存维度同理。最终节点数取两者较大值。如果你计划承载的负载是CPU密集型的可以把CPU超配比调低到1.3左右如果是内存密集型则按内存维度计算并保留20%到30%的余量给宿主机的自身开销。本文还有配套的精品资源点击获取
返回列表