当前位置:   article > 正文

云计算期末复习(2024HENU)

云计算期末复习(2024HENU)

题型分值

选择15×2 30
填空5×2 10
名词解释5×4 20
简答3×5 15
综合应用1×25 25
 

第一章:云计算概述

1云计算的定义

云计算是一种模型,这个模型可以方便地通过网络访问一个可配置的计算资源(例如网络、服务器、存储设备、应用程序以及服务等)的公共集。这些资源可以被快速提供并发布,同时最小化管理成本以及服务供应商的干预。

2、云计算的优势

按需供应的无限计算资源;无须事先花钱就能使用的IT架构;基于短期的按需付费的资源使用;单机难以提供的事务处理环境。

3、云计算的公共特征

①弹性伸缩②快速部署③资源抽象④按用量收费⑤宽带访问

4、云计算的分类

按照部署方式分为:①公共云②私有云③社区云④混合云⑤行业云⑥其他云类型。

按照服务类型分为:①基础设施即服务②平台即服务③软件即服务

5、虚拟化

虚拟化(Virtualization)是为某些事物创造的虚拟版本,例如硬件平台、计算机系统、存储设备和网络资源等。其目的是为了摆脱现实情况下物理资源所具有的各种限制,即“虚拟化是资源的逻辑表示,它不受物理限制的约束。”

云计算所涉及的虚拟化,是经过发展之后的更高层次的虚拟化,是指所有的资源——计算、存储、应用和网络设备等连接在一起,由云计算平台进行管理调度。

第二章:分布式计算

1分布式计算的定义及优势

中科院定义:分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。

分布式计算比起其它算法具有以下几个优点

①稀有资源可以共享。

②通过分布式计算可以在多台计算机上平衡计算负载。

③可以把程序放在最适合运行它的计算机上。

其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。

2、ACID原则

ACDI是数据库事务正常执行的四个原则,分别指原子性、一致性、独立性及持久性。

原子性:原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

一致性:一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

独立性:独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

持久性:持久性是指一旦事务提交后,它所做的修改将会永久保存在数据库上,即使出现宕机也不会丢失。

ACID原则解决了数据的一致性、系统的可靠性等关键问题,为关系数据库技术的成熟以及在不同领域的大规模应用创造了必要的条件。

3、CAP理论

CAP理论是指一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

一致性:更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致

可用性:服务一直可用,而且是在正常的响应时间内。

分区容错性:指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

CA without P以及CP without A可以,AP without C不可以。

4、BASE理论

BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性。BASE是指基本可用(Basically Available)、软状态(Soft State)、最终一致性(Eventual Consistency)。

基本可用:指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

软状态:指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。

最终一致性:指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。

最终一致性的变体:Causal consistency(因果一致性)、Read-your-writes consistency、Session consistency、Monotonic read consistency、Monotonic write consistency。

5、如何理解最终一致性?

最终一致性可概括为:过程松,结果紧,最终结果必须保持一致性即可。最终一致性就是“等会儿就一致”,早晚会一致的。使用最终一致性的关键就是想方设法让用户“等会儿”。

6、分布式系统的特性

容错性、高可扩展性、开放性、并发处理能力、透明性。

7、分布式存储系统

分布式存储系统大致可分为5个子方向:结构化存储、非结构化存储、半结构化存储、In-memory 存储及NewSQL。

结构化存储强调:结构化的数据(例如关系表);强一致性(例如银行系统,电商系统等场景);随机访问(索引、增删查改、SQL)

非结构化存储强调:高可扩展性,典型的系统就是分布式文件系统

半结构化存储为了解决结非结构化存储系统随机访问性能差的问题

8、并行计算和分布式计算的比较

几种典型的分布式计算系统:传统基于消息的系统、 MapReduce家族系统、图计算系统、基于状态的系统、实时流处理系统

9、分布式资源管理系统

资源统一管理和调度平台具有以下特点:支持多种计算框架、扩展性、容错性、高资源利用率、细粒度的资源分配。

10、典型的分布式系统

网格系统、P2P系统、透明计算、区块链系统。

第三章:云计算架构

1云数据中心的两种模式

传统模式、基于集装箱的数据中心。

2、云的工作负载模式

模式1:时开时停模式。模式2:用量迅速增长模式。模式3:瞬时暴涨模式。模式4:周期性增减模式。

3、云计算的架构

中央集权架构、客户机/服务器(C/S)架构、中间层架构、浏览器/服务器(B/S)架构、C/S与B/S混合架构、面向服务的架构。

4、云栈和云体

云栈:云栈又称云平台,是在云上面建造的运行环境。它能够支持应用程序的发布、运行、监控、调度、伸缩,并为应用程序提供辅助服务的机制,如访问控制和权限管理等。

三层云栈架构:IaaS、PaaS、SaaS,分别对应基础设施即服务、平台服务、软件服务。其中基础设施即服务可以称为效用计算,平台即服务可称为弹性计算,软件即服务可称为随需应用。

四层、五层云栈架构:

云体:云体是云计算的物质基础,是云计算所用到的资源集合。云体就是数据中心。

如果用一个短语来描述云计算,那就是:IT即服务。云计算的本质就是IT作为服务涵盖了基础设施即服务、平台即服务、软件即服务或任何X即服务。

5、软件定义的数据中心

数据中心(Data Center)是数据集中存储、计算、交换的中心。

传统模式的数据中心存在的问题:过多的机器、机器的利用率过低、应用迁移太困难、存储需求增长得太快。

软件定义计算,软件定义存储,软件定义网络。

6、OpenStack

*OpenStack提供了一个通用的平台来控制云计算里面的计算(服务器)、存储和网络,甚至应用资源。

*openstack作用:①充分利用物理服务器、虚拟服务器、网络和存储系统资源;②通过租户、配额和用户角色高效管理云资源;③提供一个对底层实现透明的通用的资源控制接口。

*OpenStack组件功能

①计算(Compute):Nova。管理虚拟机资源,包括CPU、内存、磁盘和网络接口。

②网络:Neutron。提供虚拟机网络接口资源,包括IP寻址、路由和软件定义网络(SDN)。

③对象存储(Object Storage):Swift。提供可通过RESTful API访问的对象存储。

④块存储(Block Storage):Cinder。为虚拟机提供块(传统磁盘)存储。

⑤身份认证服务:Keystone。为OpenStack组件提供基于角色的访问控制,提供授权服务。

⑥镜像服务:Glance。管理虚拟机磁盘镜像,为虚拟机和快照(备份)服务提供镜像。

⑦仪表盘(Dashboard):Horizon。为OpenStack提供基于Web的图形界面。

⑧计量服务(Telemetry):Ceilometer。集中为OpenStack各个组件收集计量和监控数据。

⑨编排服务(Orchestration):Heat。为OpenStack环境提供基于模板的云应用编排服务。

第四章:虚拟化技术

1、虚拟化

*定义:在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。

*分类:服务器虚拟化、网络虚拟化、桌面虚拟化、软件定义的存储

2、服务器虚拟化

*服务器虚拟化需具有的特性:多实例、隔离性、封装性、高性能

*分类:全虚拟化、半虚拟化、硬件辅助虚拟化。

*需要虚拟化的物理资源可以分为三大类:计算资源(CPU、内存)、存储资源和网络资源。

*全虚拟化:虚拟化软件层将操作系统的指令翻译并将结果缓存供之后使用,而用户级指令无须修改就可以运行,具有和物理机一样的执行速度。

*半虚拟化:半虚拟化指的是虚拟机系统和虚拟化软件层通过交互来改善性能和效率。

半虚拟化涉及修改操作系统内核来将不可虚拟化的指令替换为可直接与虚拟化层交互的超级调用(hypercalls)。

*全虚拟化和半虚拟化的比较:①全虚拟化时未经修改的虚拟机系统不知道自身被虚拟化,系统敏感的调用陷入虚拟化层后再进行二进制翻译。

②半虚拟化的价值在于更低的虚拟化代价,但是性能优势根据不同的工作负载有很大差别。

③半虚拟化不支持未经修改的操作系统(如Windows),因此它的兼容性和可移植性较差。由于半虚拟化需要系统内核的深度修改,在生产环境中,技术支持和维护上会有很大的问题。

*硬件辅助虚拟化:使用CPU相应状态位捕获客户操作系统的请求。第一代技术包括Intel的VT-x和AMD的AMD-V,两者都针对特权指令为CPU添加了一个执行模式,即VMM运行在一个新增的根模式下。

3、商用虚拟机技术(KVM:内核虚拟机)

Xen虚拟机技术、KVM虚拟机技术、Hyper-V虚拟化技术、VMware Workstation

第五章:分布式存储

1、分布式存储

*分布式存储系统定义:分布式存储系统是将为数众多的普通计算机或服务器通过网络进行连接,同时对外提供一个整体的存储服务。

*分布式存储系统的特性:高性能、可扩展、低成本、易用性

*数据类型的分类:非结构化数据、结构化数据、半结构化数据。

*分布式存储系统的分类分布式文件系统(存储非结构化数据)、分布式键值系统(简单的半结构化数据)、分布式表系统(半结构化数据)、分布式数据库(大规模的结构化数据)。

*分布式存储20世纪末的代表: SAN(Storage Area Network)、NAS(Network Attached Storage)、GPFS (General Parallel File System)、GFS (Google File System)、HDFS

2、SAN和NAS的区别

①SAN存储设备通过光纤连接,而NAS存储设备通过TCP/IP连接。

②SAN存储设备访问数据块,而NAS存储设备访问单个文件。

③SAN存储设备连接多个存储设备,而NAS存储设备作为单个专用设备运行。

3、ChunckServer如何应对热点?(补充)

4、文件存储

单机文件系统、网络文件系统、并行文件系统、分布式文件系统、高通量文件系统

5、单机存储系统

存储系统的数据模型:文件、关系以及键值模型

6、分布式存储系统

*基本概念:异常,超时,一致性,衡量指标:性能、可用性、一致性、可扩展性

*性能分析,数据分布,复制,容错,可扩展性,分布式协议

第六章:云计算网络

1、基本概念

*计算机网络:通俗地讲,计算机网络指的是为多个计算设备提供信息交换支持的系统。

*覆盖网络:覆盖网络是一种在原有网络基础上构建网络连接抽象及管理的技术。覆盖网络中的节点可以被认为是通过虚拟或逻辑链接相连,其中每个链接对应一条路径(Path)。

*大二层网络:在原有数据中心网络互连的基础上,构建一张可以允许二层协议通信的覆盖网络。这样的覆盖网络称为大二层网络。

*租户网络:租户向云服务供应商租用的虚拟化资源除了包括计算和存储资源外,通常也会包括虚拟化的网络系统,被称为租户网络。

2、隧道技术(覆盖网络部分)

隧道技术是一种通过互联网络基础设施在网络之间传递数据的方式。使用隧道传递的数据可以是不同协议的数据帧或包,隧道协议将这些其它协议的数据帧或包重新封装在新的包头中发送,被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由,一旦到达网络终点,数据将被解包并转发到最终目的地。整个传递过程中,被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。简言之,隧道技术是指包括数据封装,传输和解包在内的全过程

在物理世界中,隧道是一种跨越通常无法跨越的地形或边界的方法。同样,在网络中,隧道是一种使用网络不支持的协议在该网络中传输数据的方法。隧道的工作原理是对数据包进行封装:将数据包包装在其他数据包内。(数据包是小块的数据,可以在目的地重新组合成一个大文件)。

隧道技术经常用于虚拟专用网络 (VPN)。它还可以在网络之间建立高效和安全的连接,从而使用本不受支持的网络协议,并在某些情况下允许用户绕过防火墙。

3、GRE(覆盖网络部分)

通用路由封装协议(GRE)是一种对不同网络层协议数据包进行封装,通过IP路由的隧道协议,其标准定义于RFC 2784中。

GRE的实质是创建一个类似于虚拟专用网络(VPN)的专用点对点网络连接,通过在外部IP数据包内封装有效载荷(即需要传递到目标网络的内部数据包)来工作。

报文在GRE隧道中传输包括封装和解封装两个过程。

4、GRE报文格式

乘客协议:封装前的报文称为净荷,封装前的报文协议称为乘客协议。

封装协议:GRE Header是由封装协议完成并填充的,封装协议也称为运载协议。

传输协议:负责对封装后的报文进行转发的协议称为传输协议。

5、对称加密和非对称加密的优缺点

6、软件定义网络SDN的特点

①控制平面与数据平面分离 ②开放的可编程接口 ③集中化的网络控制 ④网络业务的自动化应用程序控制。

7、网络功能虚拟化NFV

*定义:是一种通过IT虚拟化技术将网络节点功能虚拟为软件模块的网络架构,这些软件模块可以按照业务流连接起来,共同为企业提供通信服务。

8、SDN和NFV的区别

①SDN跟NFV最明显的区别是,SDN处理的是OSI模型中的2-3层,NFV处理的是4-7。

②SDN主要是优化网络基础设施架构,比如以太网交换机,路由器和无线网络等。

③NFV主要是优化网络的功能,比如负载均衡,防火墙,WAN网优化控制器等。

第七章:轻量级虚拟化

1、容器的本质

Docker容器本质上是宿主机上的一个进程,通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过写时复制技术实现了高效的文件操作。

2、容器技术分析

*容器

是轻量级的操作系统级虚拟化,可以在一个资源隔离的进程中运行应用及其依赖项。

运行应用程序所必需的组件都将打包成一个镜像并可以复用,运行在一个隔离环境中,并且不会共享宿主机的内存、CPU 以及磁盘,这就保证了容器内进程不能监控容器外的任何进程。

在Linux中,容器技术是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中,与虚拟机相同的是,可以为这些容器设置计算资源限制,挂载存储,连接网络,而与虚拟机不同的是,这些应用运行时共用着一个Kernel。

*容器与传统虚拟机的对比

虚拟机是“重量级”的:通常包含整个操作系统及其应用程序,同时也需要运行一个 hypervisor 来控制虚拟机,镜像大小在10G量级,部署和启动需要较长时间。

容器是“轻量级”的,镜像大小在100M 量级,可以在秒级启动。

容器技术与虚拟机技术并不互斥,云计算环境中容器一般运行在虚拟机中。

*容器技术优势

简化部署:应用打包成单一地址访问、Registry存储、通过单一命令就可以部署完成的组件。

快速启动:容器技术对操作系统的资源进行抽象而非对硬件资源进虚拟化,打包好的服务可以快速启动。

服务组合:采用容器的方式进行部署,整个系统会变得易于组合。

易于迁移:允许用户对工作负载进行迁移,避免局限于单一的平台提供商。

3、Docker基本概念

*镜像(image):就是一堆只读层(read-only layer)的统一视角。

*仓库(repository):是集中存放镜像文件的场所,官方仓库 hub.docker.com

*容器(container):容器是从镜像创建的运行实例,它可以被启动、开始、停止、删除。

每个容器都是相互隔离的、保证安全的平台,可以把容器看做是一个独立的 Linux 环境和运行在其中的应用程序。

4、Docker的使用

docker pull从仓库获取所需要的镜像

使用示例:docker pull centos:7

docker images列出了所有镜像

docker create <image-id> 创建容器

docker start <container-id> 启动容器

docker run <image-id> 创建容器,是docker create和docker start两个命令的组合

docker ps查看容器列表

docker exec <container-id> <cmd> 在容器中执行新命令

docker stop <container-id> 停止容器

docker rm <container-id> 删除容器

docker rmi <image-id> 删除镜像

Docker 进程相关命令

l 启动docker服务:

systemctl start docker

l 停止docker服务:

systemctl stop docker

l 重启docker服务:

systemctl restart docker

l 查看docker服务状态:

systemctl status docker

l 设置开机启动docker服务:

systemctl enable docker

第八章:云原生应用的概念及发展

1、云原生简介

云原生的主旨是构建运行在云端的应用程序,致力于使应用程序能够最大限度地利用云计算技术特性的优势,提供更加优质的应用服务。云原生也是一种构建和运行应用程序的方法,它充分利用了云计算的优势,重点关注如何在云计算交付模式下创建和部署应用程序。

云原生应用应该具备以下几个关键词:敏捷,可靠,高弹性,易扩展,故障隔离保护,不中断业务持续更新。

2、云原生的内容

云原生是面向“云”设计的应用,因此技术部分依赖于传统云计算的三层概念,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。

包括的内容:①敏捷基础设施 ②持续交付 ③DevOps ④微服务

3、什么是持续集成与持续交付?

持续集成是指每当开发人员提交了一次改动,就立刻进行构建、自动化测试,确保业务应用和服务能符合预期。

持续交付是软件发布的能力,在持续集成完成之后,能够提供到预发布之类系统上,达到生产环境的条件。

4、云原生归纳

DevOps、持续交付对应更快的上线速度,即敏捷性;

微服务对应可扩展性及故障可恢复性;

敏捷基础设施实现了扩展能力的资源层支持。

5、云原生12要素

①一份代码库与多份部署

②显式声明依赖关系

③在环境中存储配置

④把后端服务当作附加资源

⑤严格分离构建和运行

⑥以一个或多个无状态进程运行应用

⑦通过端口绑定提供服务

⑧通过进程模型进行扩展

⑨快速启动和优雅终止可最大化健壮性

⑩尽可能保持开发与预发布线上环境相同

⑪把日志当作事件流

⑫后台管理任务当作一次性进程运行

6、云原生应用开发原则

*原则1:云服务优先策略

描述:在评估技术解决方案中的服务或组件时,首先要考察目前市面上是否有可用的云服务功能,并优先考虑使用最适合用户需求的云服务。

理由:将需要自己负责全新开发的软件模块数量降到最低、最合理水平。

*原则2:基础设施即代码

描述:以处理应用程序代码相同的方式来管理基础设施配置以及工作流的定义。

理由:通过API的方式来构建环境,提供管理和执行运行环境工作流的工具,这使得环境配置可以视为软件功能的一部分。

*原则3:敏捷交付

描述:在交付过程的各个阶段争取敏捷,包括开发前的项目启动和计划阶段,以及开发后发布管理和运维管理阶段。

理由:敏捷软件开发过程通常能使产品更快地投入生产,但如果开发过程控制过于死板,项目开发就无法敏捷,只有力争各个阶段保持敏捷,才可以最大限度地提高效益。

*原则4:自动化交付原则

描述:力求在开发运维过程中做到从构建到发布的全自动化。

理由:实现软件构建、环境准备、测试和部署的自动化能力可以使得产品在加速市场化的过程中占据绝对的优势。

*原则5:基于服务架构

描述:必须按照既定的项目目标和期望的特点来遵循各种形式的基于服务的体系结构(SBA)。

理由:所有形式的基于服务的体系结构都有其优点,应该加以利用。虽然在选择一种具体的形式时需要权衡,但应该考虑和评估各种服务形式,为给定的解决方案确定最合适的架构方法。

*原则6:12要素应用

描述:遵循最佳实践(如12要素应用原则),开发云原生应用程序。

理由:一些组织多年来一直致力于开发云原生应用程序,并开始记录最佳实践,需要吸取别人的教训,并在适当的时候采取最佳作法。

7、Kubernetes的基本概念

*Cluster:Kubernetes维护一个集群,Docker的容器运行于其上。这个集群可以运维在任何云和Bare Metal物理机上。

*Master:Master节点包含apiserver、controller-manager、sheduler等核心组件(常常也将etcd部署于其中)。

*Node:Kubernetes采用Master-Slaves方式部署,单独一台Slave机器称为一个Node(以前叫Minion)。

*Pod:Kubernetes的最小管理单位,用于控制创建、重启、伸缩一组功能相近、共享磁盘的Docker容器。

*Replication Controller(RC):管理其下控制的Pod的生命周期,保证指定数量(replicas)的Pod正常运行。

*Service:可用作服务发现,类似于LoadBalancer,通过Selectors为一组Pod提供对外的接口。

*Label:K/V键值对,用来标记Kubernetes组件的类别(例如标记一组Pod是frontServices,另一组是backServices)。Label对于Kubernete的伸缩调度非常重要。

Kubernetes目前已经成为容器编排调度的实际标准,Kubernetes 是云原生哲学的体现,通过容器技术和抽象的IaaS接口,屏蔽了底层基础设施的细节和差异,可实现多环境部署并在多环境之间灵活迁移。

Kubernetes推出以来,它已被移植到Azure、DC/OS以及几乎所有公共云平台(AWS例外)。

Kubernetes提供高度的互操作性,以及自我修复、自动升级回滚以及存储编排。

Kubernetes擅长自动修复问题,这方面做得很好,以至于用户可能都没发现容器崩溃过。

8、容器编排

*什么是容器编排(Container Orchestration)

现代应用(云应用)一般由容器化的单独组件(通常称为微服务)组成,且须按调用关系在网络级别进行组织,以使其能够按照设计结构运行。以这种方法对多个容器进行组织的流程即称为容器编排。

*容器编排的主要任务

让用户控制容器启动和停止的时间、将其组合到集群中,以及协调应用组合的流程。

允许用户指导容器部署与自动更新、运行状况监控以及故障转移等。

*常见的开源容器编排引擎

Docker swarm mode、Kubernetes、Mesosphere Marathon

9、Kubernetes工作原理

*Pod

Pod 是一组容器和卷的集合,同一个Pod里的容器共享同一个网络命名空间,可以使用 localhost 互相通信。

k8s 会为每一个 pod 分配一个 IP 地址,称之为 Pod IP 。k8s 要求底层网络支持集群内任意两个 Pod 之间的网络通信。

Pod 有两种类类型:普通的 Pod 和静态 Pod(Static Pod):

普通的 Pod:创建后会放入 etcd中存储,随后会被 Master 调度到某个具体的 Node 上面运行。

静态 Pod:不会存放到 etcd 中,而是存放在某个具体的 Node 上的一个具体文件中,并且只在此 Node 上面启动运行。

*Deployment

Deployment 的引入更好的解决了 Pod 的编排问题,Deployment 内部使用 RS 来实现,可以把 Deployment 理解为 RC 的升级版本。

Pod 的创建、调度、绑定到节点及在目标节点上面启动都需要一定的时间,是一个连续变化的“部署过程”,使用 Deployment 来描述这个过程非常合适。

*Service

Service 是定义一系列 Pod 以及访问这些 Pod 的策略的一层抽象。Service 通过 Label 找到 Pod 组。k8s 里的每个 Service 可以理解为我们微服务架构中的一个“微服务”,每个 Service 都有唯一的 Cluster IP 及名字,名字由开发者定义,服务间的调用可以直接调用 Cluster IP+端口 或者服务名+端口的方式调用。

ServiceTypes 允许指定一个需要的类型的 Service,默认是 ClusterIP 类型。

说明:基于老师所画重点整理,部分地方加入了个人理解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/441857
推荐阅读
相关标签
  

闽ICP备14008679号