【弹性计算】弹性计算的技术架构
弹性计算的技术架构
- 1.工作原理
- 2.总体架构
- 3.控制面
- 4.数据面
- 5.物理设施层
虽然弹性计算的产品种类越来越多,但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例,探查其背后的技术秘密。
1.工作原理
云服务器通常以虚拟机的方式提供给用户,在创建后被称为 “实例”(Instance)。每个实例至少需要一个块存储设备作为 系统盘,用来安装操作系统镜像,同时也可以搭载更多的块存储设备作为数据盘。弹性计算一般推荐使用 “云盘” 形态的虚拟块存储设备,因为它更加可靠和灵活。实例还需要通过虚拟的 “弹性网卡” 连接到虚拟网络交换机上,从而加入用户的 VPC(Virtual Private Cloud,虚拟专有网络)中与外部通信。下图描绘了云服务器的基本构成。

云服务器中包括虚拟机、虚拟的 “云盘” 和虚拟的 “弹性网卡” 等。很显然,“虚拟化” 是云服务器的基础技术,包括 计算虚拟化、存储虚拟化 和 网络虚拟化。虚拟化的基本原理是用软件将物理设备分隔成多个逻辑分片,这些分片提供与物理设备相同的接口和能力,相互不感知,从而实现 “虚拟” 的设备。这些虚拟设备与物理设备之间是多对一、多对多甚至一对多的关系。正是依靠虚拟化技术,弹性计算才能将物理资源池化,然后按照用户的需求动态地虚拟出大小不一的设备,灵活地提供给用户使用。
- 计算虚拟化 技术的核心部件被称为 虚拟机管理器(
Hypervisor),它实现了对物理服务器的 CPU、内存等资源的分片,即把这些资源切分成多份,并将每一份模拟成标准的 CPU、内存等设备,变成一台虚拟的服务器,即虚拟机,如下图所示。每一台虚拟机可以运行自己的操作系统,并在逻辑上与运行在同一台物理服务器上的其他虚拟机完全隔离,不能互相访问彼此的数据。Hypervisor 还可以控制每台虚拟机能够使用的物理资源的性能容量,例如 CPU 时钟周期、内存大小等,从而实现虚拟机之间的性能隔离。主流的 Hypervisor 包括Xen、KVM等。

- 存储虚拟化 采用当前最流行的计算和存储分离的架构,如下图所示,用池化的存储服务器提供虚拟的云盘,而计算服务器上的虚拟机则通过网络来访问这些云盘。存储虚拟化首先利用软件把多个存储服务器上的存储介质(例如 SATA 硬盘或者 SSD 盘)联合起来,形成一个巨大的存储资源池;然后把每个云盘需要存储的数据切分成一个个小块,并按照一定的映射规则分散存储到资源池的存储介质中,提升访问性能;最后将每个小块冗余存储在多个独立的物理介质中,实现极高的可靠性。

- 网络虚拟化 一般采用
SDN(Software Defined Network,软件定义网络)的方式实现,解决云数据中心网络支持多租户同时使用的问题。用户可以在云上创建 VPC,相当于传统的自建数据中心网络,但是其中的网卡、交换机、路由器等网络设备变成了逻辑设备,一般通过软件技术来实现。不同的 VPC 之间是完全隔离的,除非经过特殊的互联授权,否则无法互相访问。一个 VPC 可以包含一台或多台虚拟网络交换机,每台虚拟网络交换机对应一个网络地址段资源,这些交换机之间通过路由器实现互联互通。而云服务器的网卡在创建时需要指定连接到某台虚拟交换机上,从中分配相应的地址资源,这样该云服务器就可以与同一个 VPC 中的其他云服务器进行通信了。网络虚拟化的多租户隔离逻辑可以通过网络的覆盖(Overlay)技术实现,就像在物理网络中构建出了一个个互相隔离的隧道:虚拟机使用虚拟网卡发出的数据包会被重新封装并加上虚拟网络的信息,然后根据虚拟网络的拓扑发送到目标物理服务器上;目标物理服务器在解包后,根据其携带的虚拟网络信息转发给相应的虚拟机。
2.总体架构
计算、存储和网络的虚拟化技术只是弹性计算整体技术栈的冰山一角。我们可以从一台云服务器的创建过程来探讨一下弹性计算背后的技术,如下图所示。
- 请求创建示例:用户创建实例的请求会被 Open API 层接收。
- 分配服务器:该请求被传递给管控系统。管控系统相当于弹性计算的神经系统,需要执行大量的业务逻辑,比如售卖逻辑、约束校验、库存检查等;并在计算服务器的资源池中挑选一台合适的服务器来 “安顿” 新的虚拟机实例,这个决策是由一个高度复杂的调度子系统来完成的。
- 创建实例:管控系统正式发起新实例的创建,将命令发送给计算虚拟化、存储虚拟化和网络虚拟化的管控子系统。
- 资源虚拟化:网络资源和云盘创建就绪后,被选中的服务器上的 Hypervisor 创建虚拟机,挂载云盘,同时创建一张弹性网卡将该虚拟机接入指定的 VPC 中。至此,这台云服务器实例就创建好了。

创建 只是虚拟机生命周期中的一小步,之后的 运行、重启、迁移、变配、运维 等数十种操作,无不依赖弹性计算背后所集成的大量技术。下图描绘了弹性计算的整体技术架构。下面就以 控制面 和 数据面 两个切面来展开介绍,引出其中的关键技术。

3.控制面
弹性计算的控制面管理着每个实例的生命周期,它暴露给用户的接触面通常包含 Open API 及基于 API 构建的 Web 控制台 和 CLI 命令行 工具,除简单的管控操作外,还支持实例的迁移、部署、运维和伸缩等。用户可以通过直接使用这些工具或者第三方生态包装过的工具来管理其所购买的实例。
在用户可见的管理界面和工具的背后,是弹性计算的核心管控技术,实现了实例生命周期管理、资源调度、库存闭环和主动运维等,对弹性计算的性能提升至关重要,特别是弹性、成本和稳定性。
下面列举弹性计算在控制面上的关键技术。
- 弹性伸缩技术。弹性伸缩技术允许用户配置触发的伸或者缩的规则,例如基于时间的规则、基于性能指标的规则等。预测式伸缩技术是利用机器学习来发现用户应用的负载变化规律、预测未来走势,并根据这个走势提前调整计算资源的规模,从而将弹性伸缩技术从自动化演进到智能化。
- 库存闭环技术。弹性是一种供应能力,云服务提供商如何做到让用户无限索取的同时保证自身库存成本最优,是一件极具挑战的事情。库存闭环技术通过打通资源的售卖、跟踪、分析、预测、下单、生产、提货、上架、部署、上线等整条链路的闭环,以及自动化的产品转换、跨 IDC 产品平衡等库存调配,建立数据化、可视化、自动化、智能化和精细化的库存管理体系,从而提升资源利用率和弹性保障能力。
- 资源调度技术。资源调度技术旨在分配合适的服务器给用户提供所需的计算或存储资源,而且这种分配可以随着变化来动态调整,以保障用户应用的高可用性和稳定性。弹性计算的服务器资源池通常包含很多版本和种类均不同的服务器,而产品规格也多达上百种,再加上用户的实际工作负载特征各异,如重 CPU、重存储 I/O、重网络等,有些负载持续稳定,而有些负载规律波动。资源调度技术通过一次在线调度和二次离线调度,可达到避免争抢、减少闲置、缩小宕机影响面的目的,让整个系统在性能、成本和稳定性上达到平衡。
- 异常检测和预测技术。硬件的故障和软件的缺陷是不可避免的,通过对异常的检测和预测,实现及时补救,可以大大降低甚至避免故障带来的影响,从而提高弹性计算产品的稳定性,特别是可用性。异常检测,首先需要识别故障相关的关键指标,然后依托于精细、实时的监控和分析技术,及时发现异常,从而触发系统快速做出反应。而异常预测,则通过启发式规则、机器学习等技术,基于监控数据提前预知和规避可能的故障。阿里云弹性计算云服务器产品的单实例可用性能达到 99.975%,异常检测和预测技术功不可没。
- 热迁移技术。热迁移技术能把一台运行中的实例或云盘从一个物理位置转移到另一个物理位置,同时不影响其运行,是支持库存优化、故障规避、轮转升级等场景的关键技术。它的难度堪比给飞行中的飞机更换引擎。热迁移实现的基本原理是把实例的状态从源服务器拷贝到目标服务器,由于在拷贝过程中实例的状态还在不断变化,所以在做最后的切换时需要暂停实例,并把新产生的变化再同步一次,然后完成切换,唤醒实例继续运行。热迁移云盘的做法与之类似,
Post-copy这种方式更好。无论哪种方式,降低对运行中的实例的性能影响,甚至做到 “无感” 都是重大挑战。
4.数据面
弹性计算的数据面直接支撑着用户应用的运行,它暴露给用户的标准接口是 x86 服务器及其上运行的客户机操作系统(Guest OS)。这里有弹性裸金属服务器、虚拟机和弹性容器三种产品形态上的选择,而专有宿主机则给了用户独占物理服务器来运行虚拟机或容器实例的选项。
实现这些产品形态的核心技术是虚拟化技术;随着云原生应用的蓬勃发展,更轻量的安全沙箱技术也正变得日益重要。
下面列举弹性计算在数据面上的关键技术。
- 客户机操作系统。客户机操作系统是弹性计算数据面上的主要接口,为用户的应用提供标准化的运行环境。弹性计算一般提供主流操作系统的镜像,其中包含适配底层的虚拟化和物理硬件所做的定制和优化。为了让这些定制和优化更加极致地为用户提供卓越的性能和体验,领先的云服务提供商都会推出自己的操作系统发行版,例如阿里云就推出了 Aliyun Linux。通过剪裁不必要的功能、模块和软件,针对自身的物理硬件和虚拟化技术做定向的优化,再搭载其特有的增值能力,例如安全加固和可服务性提升工具,Aliyun Linux 已成为阿里云弹性计算技术栈上重要的一环。
- 软硬一体的虚拟化平台。虚拟化是弹性计算数据面上的核心技术,经历了几代技术变迁,最新一代已经演进到了软硬一体的虚拟化平台,例如阿里云的 神龙计算平台。该技术通过专用的硬件将原来在物理机上运行的网络、存储、管控等负载,完全下沉到定制的计算节点上并进行硬件加速,性能更好;而主机侧运行高度定制和 “瘦身” 的 QEMU 及 KVM 的虚拟机管理程序,使得物理机上的资源可以最大限度地被释放并用于售卖。
- 异构资源虚拟化。异构计算加速是近年来的热点技术之一,被认为是处理多媒体、大数据和机器学习的利器,目前主要形态包括 GPU、FPGA 和 NPU 等。早期的异构计算走硬件直通的路线,随着 GPU SR-IOV 虚拟化和分片虚拟化技术的支持,vGPU 已经成为现实。FPGA 虚拟化技术更加复杂,不仅依赖 CPU 和系统软件虚拟化,还依赖 FPGA 的逻辑编程硬件抽象接口 Shell 实现硬件虚拟化的能力。而实现这些异构计算能力的池化是未来的重要技术发展方向,可进一步提高异构资源部署的灵活性和利用率。
- 超高速云盘。云盘是云服务器常用的块存储设备形态,具备高可用、高持久、易运维、使用灵活等诸多优点。如何让云盘具备可以与本地盘媲美的高吞吐和低延时,则颇具挑战。例如阿里云的 ESSD 云盘基于计算和存储分离架构,存储端使用自研的分布式文件存储系统,而计算端采用多线程多队列轮询(Polling),VHost-User 新一代 I/O 虚拟化,软硬一体化的高性能用户态网络协议栈服务等机制,实现了超高 IOPS 、超低时延的云盘,为 I/O 密集型应用提供了一个更好的选择。
- VPC 网络虚拟化。VPC 相当于一套虚拟的数据中心网络。如何实现同时具备强隔离、高性能、高可用和可扩展的虚拟网络,是一项巨大的技术挑战。以阿里云自研的 洛神系统(注:虚拟网络管理系统)为例,其控制面具备超大规模虚拟网络管理能力,用户通过 API 能够进行网络实时变配,秒级响应业务流量的弹性伸缩;洛神系统的数据面基于软硬件协同技术,具备高吞吐、低延迟的特点,使得云服务器的网络性能能够与物理机相媲美。另外,洛神系统基于数据驱动的管理平面能够自动分析和定位链路故障,通过冗余链路实施秒级容灾切换,在网络可用性指标上相比物理机具有更大优势。
- 轻量级安全沙箱。轻量级安全沙箱为云原生应用而生,启动快、资源占用少,且安全隔离性好,是运行在容器上的应用的最佳选择。目前社区中存在多种技术路线,例如基于 Kata Containers 的 Micro VM 方案、基于进程虚拟化的 gVisor 方案,以及基于 Unikernel 的方案。阿里云的弹性容器实例就是运行在自研安全沙箱中的。这项技术充分利用了虚拟化层的技术和能力,并可对垂直业务场景实现端到端优化,是阿里云面向云原生时代的关键基础技术。
5.物理设施层
弹性计算依赖大量物理设施和硬件,包括物理网络、数据中心、芯片和服务器等,每一个领域都涉及众多关键技术,例如物理网络中的自研交换机和网络协议,数据中心的选址、整机柜设计、弹性功耗调度、液冷,芯片中的厂商定制、自研芯片,服务器中的自研 L6 设计等,此处不再展开。
相关文章:
【弹性计算】弹性计算的技术架构
弹性计算的技术架构 1.工作原理2.总体架构3.控制面4.数据面5.物理设施层 虽然弹性计算的产品种类越来越多,但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例,探查其背后的技术秘密。 1.工作原理 云服务器通常以虚拟机的方…...
python-leetcode 31.K个一组翻转链表
题目: 给定链表的头节点head,每K个节点一组进行翻转,返回修改后的链表。 K是正整数,它的值小于等于链表的长度,如果节点总数不是K的整数组,那么将最后剩余的节点保持原有顺序。不能只改变节点内容的值,需…...
算法08-递归调用转为循环的通用方法
前导:问题引入 在Python中,递归调用过多会导致“递归深度过深”的错误,通常是因为递归没有正确终止条件或者递归层次太深。 这种错误通常会导致程序抛出 RecursionError 异常。 Python默认的递归深度限制大约是1000层(可以通过sys.getrecursionlimit()查看)。 修正方式…...
[创业之路-300]:进一步理解货币与金钱, 货币与货币政策
目录 一、货币 1.1 概述 1、货币的定义 2、货币的形态演变 3、货币的职能 4、货币的价值衡量 1.2 货币的分层 1、货币分层的目的与意义 2、货币分层的划分标准与层次 3、各国货币分层的实践 4、货币分层的影响与应用 1.3、M0、M1、M2变化对股市的影响 1、M0变化对…...
达梦:跟踪日志诊断
目录标题 参考连接**性能诊断:跟踪日志诊断****总结** 参考连接 性能诊断 -> 跟踪日志诊断 性能诊断:跟踪日志诊断 备份现有的日志配置文件 在修改文件之前,建议先备份原始文件,以防万一需要恢复。 cp /opt/dmdbms/dmdata/DA…...
Qwen2-VL 的重大省级,Qwen 发布新旗舰视觉语言模型 Qwen2.5-VL
Qwen2.5-VL 是 Qwen 的新旗舰视觉语言模型,也是上一代 Qwen2-VL 的重大飞跃。 Qwen2.5-VL主要特点 视觉理解事物:Qwen2.5-VL不仅能够熟练识别花、鸟、鱼、昆虫等常见物体,而且还能够分析图像中的文本、图表、图标、图形和布局。 代理性&…...
js考核第三题
题三:随机点名 要求: 分为上下两个部分,上方为显示区域,下方为控制区域。显示区域显示五十位群成员的学号和姓名,控制区域由开始和结束两个按钮 组成。点击开始按钮,显示区域里的内容开始滚动,…...
LabVIEW袜品压力测试系统
开发了一种基于LabVIEW开发的袜品压力测试系统。该系统利用LabVIEW并结合灵敏的传感器和高精度的处理模块,实现了对袜品压力的精确测量和分析。系统不同于传统的服装压力测试方法,为研究和评价袜子的舒适性提供了新的测试手段。 项目背景 该系统的…...
jsp页面跳转失败
今天解决一下jsp页面跳转失败的问题 在JavaWeb的学习过程中,编写了这样一段代码: <html> <body> <h2>Hello World!</h2><%--这里提交的路径,需要寻找到项目的路径--%> <%--${pageContext.request.context…...
1.推荐算法基本概念
推荐算法是一个非常重要且广泛应用的领域,特别是在电子商务、社交媒体、内容推荐等领域。第一课我们将介绍推荐算法的基本概念和分类,并简单讲解两种常见的推荐算法:协同过滤和基于内容的推荐。 推荐算法的基本概念 推荐系统的目标是根据用…...
Java 大视界 -- 大数据伦理与法律:Java 技术在合规中的作用与挑战(87)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十五节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(RoutineControl_0x31服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x31服务、例程控制、ISO 14229-1:2023、ECU测试 一、服务功能概述 0x31服…...
【深度强化学习】策略梯度算法:REINFORCE
策略梯度 强化学习算法进阶 Q-learning、DQN 及 DQN 改进算法都是基于价值(value-based)的方法,其中 Q-learning 是处理有限状态的算法,而 DQN 可以用来解决连续状态的问题。在强化学习中,除了基于值函数的方法&#…...
手机用流量怎样设置代理ip?
互联网各领域资料分享专区(不定期更新): Sheet...
CI/CD部署打包方法
项目目前部署方式: 各地区服务器打包同一个runner(需要互相排队,不并发)各地区客户端可以并发打包,同个地区客户端打多个包需要排队 部署方法 下载gitlab-runner: https://docs.gitlab.com/runner/insta…...
LabVIEW 中dde.llbDDE 通信功能
在 LabVIEW 功能体系中,位于 C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform\dde.llb 的 dde.llb 库占据着重要的地位。作为一个与动态数据交换(DDE)紧密相关的库文件,它为 LabVIEW 用户提供了与其他…...
探索后端开发中的异步API:基于Resilience4j与Reactive Programming的高性能设计
引言 随着微服务架构的普及,后端系统面临的挑战愈发严峻,尤其是在高并发和高可用性方面。传统的同步调用模式虽然简单,但在处理大量并发请求时可能会成为瓶颈。为了应对这一问题,异步编程逐渐成为后端开发的热门话题。 在本文中…...
leetcode 2915. 和为目标值的最长子序列的长度
题目如下 数据范围 本题就是典型的背包问题target就是容量,nums[i]就是第i个物品的重量。其实就是选最多的物品使得背包刚好装满。 令f(i,j)为当考虑到i - 1物品时刚好装到j重量的物品数。 当j > nums[j]时 有f(i,j) max(f(i - 1,j - nums[i - 1]) 1,f(i -…...
【Vue】打包vue3+vite项目发布到github page的完整过程
文章目录 第一步:打包第二步:github仓库设置第三步:安装插件gh-pages第四步:两个配置第五步:上传github其他问题1. 路由2.待补充 参考文章: 环境: vue3vite windows11(使用终端即可&…...
Flutter编译问题记录
问题: 运行出现以下报错 Launching lib/main.dart on macOS in debug mode... Warning: CocoaPods not installed. Skipping pod install. CocoaPods is a package manager for iOS or macOS platform code. Without CocoaPods, plugins will not work on iOS or …...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...
