【弹性计算】弹性计算的技术架构

弹性计算的技术架构

  • 1.工作原理
  • 2.总体架构
  • 3.控制面
  • 4.数据面
  • 5.物理设施层

虽然弹性计算的产品种类越来越多,但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例,探查其背后的技术秘密。

1.工作原理

云服务器通常以虚拟机的方式提供给用户,在创建后被称为 “实例”(Instance)。每个实例至少需要一个块存储设备作为 系统盘,用来安装操作系统镜像,同时也可以搭载更多的块存储设备作为数据盘。弹性计算一般推荐使用 “云盘” 形态的虚拟块存储设备,因为它更加可靠和灵活。实例还需要通过虚拟的 “弹性网卡” 连接到虚拟网络交换机上,从而加入用户的 VPCVirtual Private Cloud虚拟专有网络)中与外部通信。下图描绘了云服务器的基本构成。

在这里插入图片描述
云服务器中包括虚拟机、虚拟的 “云盘” 和虚拟的 “弹性网卡” 等。很显然,“虚拟化” 是云服务器的基础技术,包括 计算虚拟化存储虚拟化网络虚拟化。虚拟化的基本原理是用软件将物理设备分隔成多个逻辑分片,这些分片提供与物理设备相同的接口和能力,相互不感知,从而实现 “虚拟” 的设备。这些虚拟设备与物理设备之间是多对一、多对多甚至一对多的关系。正是依靠虚拟化技术,弹性计算才能将物理资源池化,然后按照用户的需求动态地虚拟出大小不一的设备,灵活地提供给用户使用。

  • 计算虚拟化 技术的核心部件被称为 虚拟机管理器Hypervisor),它实现了对物理服务器的 CPU、内存等资源的分片,即把这些资源切分成多份,并将每一份模拟成标准的 CPU、内存等设备,变成一台虚拟的服务器,即虚拟机,如下图所示。每一台虚拟机可以运行自己的操作系统,并在逻辑上与运行在同一台物理服务器上的其他虚拟机完全隔离,不能互相访问彼此的数据。Hypervisor 还可以控制每台虚拟机能够使用的物理资源的性能容量,例如 CPU 时钟周期、内存大小等,从而实现虚拟机之间的性能隔离。主流的 Hypervisor 包括 XenKVM 等。

在这里插入图片描述

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

在这里插入图片描述

  • 网络虚拟化 一般采用 SDNSoftware 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 设计等,此处不再展开。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970051.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EasyRTC轻量级SDK:智能硬件音视频通信资源的高效利用方案

在智能硬件这片广袤天地里,每一份资源的精打细算都关乎产品的生死存亡。随着物联网技术的疾速演进,实时音视频通信功能已成为众多设备的标配。然而,硬件资源的捉襟见肘,让开发者们常常陷入两难境地。EasyRTC,以它的极致…

Linux | 进程相关概念(进程、进程状态、进程优先级、环境变量、进程地址空间)

文章目录 进程概念1、冯诺依曼体系结构2、进程2.1基本概念2.2描述进程-PCB2.3组织进程2.4查看进程2.5通过系统调用获取进程标识符2.6通过系统调用创建进程-fork初识fork の 头文件与返回值fork函数的调用逻辑和底层逻辑 3、进程状态3.1状态3.2进程状态查看命令3.2.1 ps命令3.2.…

【ESP32接入国产大模型之Deepseek】

【ESP32接入国产大模型之Deepseek】 1. Deepseek大模型1.1 了解Deepseek api1.2 Http接口鉴权1.3. 接口参数说明1.3.1 请求体(request)参数1.3.2 模型推理 2. 先决条件2.1 环境配置2.2 所需零件 3. 核心代码3.1 源码分享3.2 源码解析3.3 连续对话修改后的代码代码说明示例输出注…

OSI 参考模型和 TCP/IP 参考模型

数据通信是很复杂的,很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成,然后将这些协议按照一定的方式组织起来。最典型的是采用分层的方式来组织协议,每一层都有一套清晰明确的功能和…

C# CultureInfo 地区影响字符串

问题 线上遇到有玩家资源加载异常,发现资源路径出现异常字符: 发现是土耳其语下字符串转小写不符合预期: "I".ToLower() -> ı 解决方案 String.ToLower 改成 String.ToLowerInvariant 全局修改禁用文化差异:ht…

蓝桥与力扣刷题(108 将有序数组转换成二叉搜索树)

题目:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9]…

python学opencv|读取图像(六十二)使用cv2.morphologyEx()形态学函数实现图像梯度处理

【1】引言 前序已经学习了腐蚀和膨胀的单独作用函数,还研究了按照不同顺序调用腐蚀和膨胀函数调整图像效果,相关文章包括且不限于: python学opencv|读取图像(六十一)先后使用cv2.dilate()函数和cv2.erode()函数实现图…

(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念

目录 前言与导论 碎碎念 所以,我到底需要知道哪些东西呢 从一些基础的概念入手 常见的工具和说法 ST公司 MDK5 (Keil5) CubeMX 如何使用MDK5的一些常用功能 MDK5的一些常见的设置 前言与导论 非常感谢2301_77816627-CSDN博客的提问,他非常好奇…

线程池-抢票系统性能优化

文章目录 引言-购票系统线程池购票系统-线程池优化 池化 vs 未池化 引言-购票系统 public class App implements Runnable {private static int tickets 100;private static int users 10000;private final ReentrantLock lock new ReentrantLock(true);public void run() …

soular基础教程-使用指南

soular是TikLab DevOps工具链的统一帐号中心,今天来介绍如何使用 soular 配置你的组织、工作台,快速入门上手。  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责…

大数据SQL调优专题——Hive执行原理

引入 Apache Hive 是基于Hadoop的数据仓库工具,它可以使用SQL来读取、写入和管理存在分布式文件系统中的海量数据。在Hive中,HQL默认转换成MapReduce程序运行到Yarn集群中,大大降低了非Java开发者数据分析的门槛,并且Hive提供命令…

细胞计数专题 | LUNA-FX7™新自动对焦算法提高极低细胞浓度下的细胞计数准确性

现代细胞计数仪采用自动化方法,在特定浓度范围内进行细胞计数。其上限受限于在高浓度条件下准确区分细胞边界的能力,而相机视野等因素则决定了下限。在图像中仅包含少量可识别细胞或特征的情况下,自动对焦可能会失效,从而影响细胞…

JAVA生产环境(IDEA)排查死锁

使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤: 1. 编写并运行代码 首先,我们编写一个可能导致死锁的示例代码: public class DeadlockExample {private static final Obj…

leetcode 297. 二叉树的序列化与反序列化

题目如下 我们常常说单独先序遍历不能完整的表示一棵树是有前提条件的。 为什么?先序遍历是按 根节点 左子树 右子树的方向遍历树且遇到空子树直接返回,这样会造成我们并不知道某个节点的左右子树存在与否,故我们无法确定树的形状。但是如果…

pt->onnx->rknn(量化) step by step FAQ

文档修订中... 1.pt->onnx 这个转换是在yolov11的docker环境做的转换。非常简单。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 获取当前脚本文件所在目录的父目录,并构建相对路径 import os import sys current_dir os.path.dirname(os.path.abspath…

同为科技智能PDU助力Deepseek人工智能和数据交互的快速发展

1 2025开年,人工智能领域迎来了一场前所未有的变革。Deepseek成为代表“东方力量”的开年王炸,不仅在国内掀起了技术热潮,并且在全球范围内引起了高度关注。Deepseek以颠覆性技术突破和现象级应用场景席卷全球,这不仅重塑了产业格…

【css】width:100%;padding:20px;造成超出100%宽度的解决办法 - box-sizing的使用方法 - CSS布局

问题 修改效果 解决方法 .xx {width: 100%;padding: 0 20px;box-sizing: border-box; } 默认box-sizing: content-box下, width 内容的宽度 height 内容的高度 宽度和高度的计算值都不包含内容的边框(border)和内边距(padding&…

C++ Primer 函数基础

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

滤波总结 波形处理原理 如何对一个规律的波形进行滤波 显现出真正的波形 如何设计滤波

需要用到的软件:waveserialport vofa++ 1.波形想用MCU进行采集首先你要考虑到你的采集频率因为如果你的对象波形即你要采集的波形,他过于快速的话有一些MCU它是不能的比如说有一些它的主频才36兆72兆呢你如果遇到一个特别快的波形毫秒级别那他就检测不了 2.…

PyQt组态软件 拖拽设计界面测试

PyQt组态软件测试 最近在研究PyQt,尝试写个拖拽设计界面的组态软件,目前实现的功能如下: 支持拖入控件,鼠标拖动控件位置 拖动控件边缘修改控件大小支持属性编辑器,修改当前选中控件的属性 拖动框选控件,点选控件 控…