云计算基础技术

云计算基础技术概览

  • 计算类产品主要提供算力,支持业务运行,例如网站、办公软件、数据分析等计算能力,目前典型的产品主要是虚拟化和容器,在公有云上的云主机本质也是虚拟机。
  • 网络类产品主要满足资源的网络连通性和隔离,传统数据中心的网络,园区网络等场景,在云上的虚拟机也同样需要虚拟网络,例如虚拟私有云VPC,该逻辑拓扑与传统网络类似。

存储类产品一般分为三大类:

  • 块存储:具备高性能和低时延的特点,用各种高IO需求的场景。
  • 文件存储:能满足多服务器间的文件共享,或者企业团队部门的文件共享。
  • 对象存储:扁平化架构,横向扩展方便,适合做云存储池,用于海量数据存储、冷数据备份、软件仓库等场景。

虚拟化技术

虚拟化技术可将单台物理服务器虚拟为多台虚拟机使用,多台虚拟机共享该物理服务器的硬件资源。

  • 虚拟化本质上是由磁盘文件和描述文件组成,封装在同一个文件中。
  • 服务器上运行多个虚拟机,各自封装,互相隔离,即存在多个文件夹。
  • 这些文件夹又可以存放在底层存储提供的文件系统上,因此实现同一介质可以存放或运行多个虚拟机。

虚拟化的本质就是将原先的物理设备进行逻辑化,转化成一个文件夹或文件,实现软硬件解耦。

  • 在计算机技术中,虚拟化(技术)一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。
  • 从图中我们可以了解到,通过虚拟化,原本的硬件服务器被分割成一个个文件,而这一个个文件也代表着一个个虚拟机。
虚拟化与云计算

虚拟化是实现云计算的核心技术,但不等同于云计算。云计算的内容维度要比虚拟化大得多。

  • 虚拟化是云计算的关键技术,旨在将物理资源抽象为逻辑资源,进而能够二次分配,特点是支撑资源池的弹性敏捷,灵活调度,同时也具备的分布式调度、资源高可用的能力。
  • 云计算是一种服务,突出其按需的商业模式,使得用户能像用水用电一样地使用云资源。其敏捷的特点有依赖虚拟化技术实现。
虚拟化的特点

虚拟机的特点:

  • 分区:用一台物理服务器上可以运行多台虚拟机,也意味着虚拟化层拥有为虚拟机划分底层服务器资源的能力。我们把这个能力叫做分区。
  • 隔离:同一服务器上的虚拟机若有一台故障或者中病毒,不会影响到其他虚拟机的使用。这就要求虚拟机具备最基本的隔离能力。
  • 封装:虚拟机的本质是以文件的形式存在于虚拟化系统中,可以通过移动文件或者复制粘贴的形式对虚拟机进行迁移。
  • 独立:在迁移虚拟机后无需对服务器做任何修改即可运行虚拟机(相当于上层操作系统与硬件解耦合),所以这里的独立主要指的是独立于硬件。

计算虚拟化中的重要概念

  • Hypervisor:我们经常把它称为虚拟化软件层或者虚拟机监视器,通过Hypervisor,我们可以实现按需使用物理机硬件资源的目的。目前主流的几个开源的虚拟化技术有:Xen、KVM等。

计算资源种类

计算的本质是获得信息的一种过程。在ICT行业中,我们需要很多计算资源,来将数据做运算处理,从而得到对应的信息。

  • 计算机程序运行时所需的CPU资源、内存资源、硬盘资源和网络资源,指计算中所需的各种资源。一般地,计算资源包括CPU,GPU,内存。
  • CPU(Central Processing Unit,中央处理器)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
  • 内存(Memory)是计算机的重要部件之一,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据。
  • GPU(Graphics Processing Unit,图形处理器),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。

计算在云计算中的服务形态

  • 弹性云服务器(Elastic Cloud Server,ECS)是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后,用户就可以像使用自己的本地PC或物理服务器一样,在云上使用弹性云服务器。
  • 弹性伸缩(Auto Scaling)可根据用户的业务需求和预设策略,自动调整计算资源使云服务器数量自动随业务负载增长而增加,随业务负载降低而减少,保证业务平稳健康运行。
  • 镜像(lmage Service)是用于创建服务器或磁盘的模板。镜像服务提供镜像生命周期管理能力。可以通过服务器或外部文件创建系统盘镜像或数据盘镜像,也可以使用弹性云服务器或云服务器备份创建带数据盘的整机镜像。

容器的概述

容器是一个标准化的单元,是一个轻量级、可移植的软件打包技术。它将软件代码及其相关依赖打包,使应用程序可以在任何计算介质中运行。简单来讲,容器就像一个标准化的盒子,能够装很多不同类型的东西,并且装完后能够塞进不同类型的柜子里。

容器的特性:

  • 打包:将软件打包成标准化单元进行开发、迁移和部署。
  • 隔离性:计算、存储、网络等资源彼此隔离。
  • 高效性:轻量、快速启停、快速部署与迁移。
  • 职责分工明确:开发专心写代码,运维专注基础环境配置。
容器技术发展历史

容器发展全景图,容器虚拟化在推广应用中面临两大难题逐渐被攻破:

  • 统一平台
  • 易用性
  • 容器技术最早可以追溯到1979年UNIX系统中的chroot,最初是为了方便切换root日录,为每个进程提供了文件系统资源的隔离,这也是OS虚拟化思想的起源。
  • 2000年,BSD吸收并改进了chroot技术,发布了FreeBsD Jails。FreeBsD Jails除文件系统隔离外,还添加了用户和网络资源等的隔离,每个Jail还能分配一个独立IP,进行一些相对独立的软件安装和配置。
  • 2005年SWsoft公司发布了OpenVz,OpenVz和Solaris Containers非常类似,通过打了补丁的Linux内核来提供虚拟化、隔离、资源管理和检查点。OpenVz 标志着内核级别的虚拟化真正成为主流,之后不断有相关的技术被加入。
  • 2006年Google发布了Process Containers,Process Containers记录和隔离每个进程的资源使用(包括CPU、内存、硬盘I/0、网络等),后改名为Cgroups(Control Groups),并在2007年被加入Linux内核2.6.24版本中。
  • 2008年出现了第一个比较完善的LXC容器技术,基于已经被加入内核的Cgroups和Linux namespaces实现。不需要打补丁,LXC就能运行在任意vanila内核的Linux上。
  • 2013年Docker诞生,Docker最早是dotCloud(Docker公司的前身,是一家PaaS公司)内部的项目,和Warden类似,Docker最初也用了LXC,后来才自己写了libcontainer替换了LXC。和其它容器技术不同的是,Docker围绕容器构建了一套完整的生态,包括容器镜像标准、容器Registry、REST API、CLI、容器集群管理工具Docker Swarm等。
  • 2014年Core0s创建了rkt,为了改进Docker在安全方面的缺陷,重写的一个容器引擎,相关容器工具产品包括:服务发现工具etcd和网络工具flannel等。
  • 2016年微软公司发布基于Windows的容器技术Hyper-V Container,Hyper-V Container原理和Linux下的容器技术类似,可以保证在某个容器里运行的进程与外界是隔离的,兼顾虚拟机的安全性和容器的轻量级。
容器和虚拟化的架构对比
  • 容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟的是操作系统而不是硬件,容器更便携,更高效。
  • 从容器和虚拟化的架构图可以看出,容器是没有虚拟化层的,这也是为什么我们通常把容器称为轻量级虚拟化技术的原因。也正因为没有虚拟化层,使得运行在容器中的应用比运行在虚拟机中的应用性能更强。
  • 容器因具有许多优势而变得流行起来。下面列出的是容器的一些好处:
  1. 敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。
  2. 持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),支持可靠且频繁的容器镜像构建和部署
  3. 跨云和操作系统发行版本的可移植性:可在 Ubuntu、RHEL、CoreOs、本地、Google Kubernetes Engine和其他任何地方运行。
  4. 以应用程序为中心的管理:提高抽象级别,从在虚拟硬件上运行 OS 到使用逻辑资源在 OS 上运行应用程序。
  5. 松散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立部分并且可以动态部署和管理,而不是在一台大型单机上整体运行
  6. 资源隔离:可预测的应用程序性能
  7. 资源利用:高效率和高密度
容器和虚拟机的区别
  • 容器是应用层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器作为用户空间中的独立进程运行。容器占用的空间比虚拟机少,可以处理更多应用程序,并且需要更少的CPU和内存资源
  • 虚拟机(VM)是将一台服务器变成多台服务器的物理硬件的抽象。管理程序允许多个VM在一台机器上运行。每个VM都包含操作系统、应用程序、必要的二进制文件和库的完整副本,占用几十GB。VM的启动速度也可能很慢。
  • 容器镜像:专用于运行特定服务,通常只包含运行该服务所需的上下文内容,许多广泛使用的镜像都只有几十MB,甚至几MB大小。
  • 虚拟机镜像:需要提供包括内核在内的通用进程运行环境,它的镜像偏向于大而完整的全功能集合,即使一个最小的精镜像的体积也有几百MB。
容器在云计算的服务形态
  • 云容器引擎(Cloud Container Engine)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建,面向云原生2.0打造CCE Turbo容器集群,计算、网络、调度全面加速。
  • 云容器实例(Cloud Container Instance,CCl)服务提供 Serverless Container(无服务器容器)引擎,让用户无需创建和管理服务器集群即可直接运行容器。
  • 容器镜像服务(Software Repository for Container,简称SWR)是一种支持镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务。用户可以通过界面、社区CLI和原生API上传、下载和管理容器镜像。
  • 容器镜像服务可配合云容器引擎CCE、云容器实例CCI使用,也可单独作为容器镜像仓库使用。
相关推荐
天下·第二2 分钟前
使用【docker】简单部署打包构建好的镜像并运行python项目
python·docker·eureka
来自于狂人11 分钟前
ansible常用命令
linux·运维·ansible
念晚91713 分钟前
Linux各种命令——tac命令,more 命令, less命令,head命令,tail命令,file 命令, stat 命令
linux·运维·服务器·前端·网络·数据库·less
左手の明天17 分钟前
【Python网络爬虫案例】python爬虫之模拟登录
开发语言·爬虫·python·模拟登录
等风来不如迎风去19 分钟前
【ubuntu】切换shell并显示git分支名字
git·ubuntu·elasticsearch
文慧的科技江湖28 分钟前
物联网协议都包含哪些协议?
arm开发·物联网·开源·汽车·充电桩
2301_7811725329 分钟前
K8S基础简介
云原生·容器·kubernetes
crossoverJie31 分钟前
如何找到并快速上手一个开源项目
开源
铁蛋Q32 分钟前
Linux基础指令
linux·运维·服务器
CHNMSCS43 分钟前
Django项目 - 合并PDF文件
python·django·pdf