云计算复习
文章目录
第一章 云计算概述
-
云计算的定义
云计算是一种计算模式,在这种模式下,动态可扩展而且通常是虚拟化的资源通过互联网以服务的形式提供出来。
-
NIST的概念
云计算是一种模型,这个模型可以方便地通过网络访问一个可配置的计算资源(例如网络、服务器、存储设备、应用程序以及服务等)的公共集。这些资源可以被快速提供并发布,同时最小化管理成本以及服务供应商的干预。
-
计算机的演进(给一个知道是哪种模式)(写的不太确定)
-
主机系统与集中计算
: 大型主机的一个特点就是资源集中,计算、存储集中,这是集中计算模式的典型代表。 -
效用计算
:目标是把服务器及存储系统打包给用户使用,按照用户实际使用的资源量对用户进行计费。 -
客户机/服务器模式
:泛指所有的能够区分某种服务提供者(服务器)和服务请求者(客户机)的分布式系统。 -
集群计算
:服务器集群计算是用紧密耦合的一组计算机来达到单个目的,而云计算是根据用户需要提供不同支持来达到不同的目的。 -
服务计算
:服务计算也称为面向服务的计算,其更为准确的名称是软件即服务(SaaS)。 -
个人计算机与桌面计算
:个人计算机可以完成绝大部分的个人计算需求,这种模式也叫桌面计算。 -
分布式计算
:分布式计算依赖于分布式系统。分布式系统由通过网络连接的多台计算机组成。 -
网格计算
:专门针对复杂科学计算的新型计算模式。 -
SaaS
:表达的也是一种计算模式,就是把软件作为服务 -
云计算的公共特征
弹性伸缩、快速部署、资源抽象、按用量收费、宽带访问。
-
云计算的分类
按照云的
部署模式
和云的使用范围
进行分类:
公共云、私有云、社区云、混合云、行业云、其他类型云。
针对云计算的服务层次
和服务类型
进行分类:
基础设施即服务(IaaS)、平台即服务(Paas)、软件即服务(SaaS)。 -
如何从三元认识论的角度理解云计算?
云计算既是一种商业模式,也是一种计算范式,还是一种实现方式。
-
云计算作为一种计算范式可以分成哪两种结构?
横向云体逻辑结构:云运行时环境和云应用。
纵向云栈逻辑结构:SaaS,PaaS,IaaS。
8. 开源软件、自由软件和免费软件的区别与联系是什么?-
开源软件是一种版权持有人为任何人和任何目的提供学习、修改和分发权力,并公布源代码的计算机软件。
-
自由软件是一种用户可以自由地运行、复制、分发、学习、修改并改进的软件。
-
免费软件是一种开发者拥有版权,保留控制发行、修改和销售权力的免费计算机软件,通常不发布源代码,以防用户修改源码。
-
自由软件是开源软件的一个子集,自由软件的定义比开源软件更严格。同时开源软件要求软件发行时附上源代码,并不一定免费;同样免费软件只是软件免费提供给用户使用,并不一定开源。
-
第二章 分布式计算
-
集中式计算
集中式计算完全依赖于一台大型的中心计算机的处理能力,这台中心计算机称为主机,与中心计算机相连的终端设备具有各不相同非常低的计算能力。
-
分布式计算
分布式计算中,多个通过网络互连的计算机都具有一定的计算能力,他们之间互相传递数据,实现信息共享,协作共同完成一个处理任务。
-
中科院对分布式计算的定义
分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接的多台计算机上运行。 -
ACID原则
ACID是数据库事务正常执行的四个原则,分别指原子性、一致性、独立性及持久性。
(1)原子性A(Atomicity):事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
(2)一致性C(Consistency):数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
(3)独立性I(Isolation):并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
(4)持久性D(Durability):一旦事务提交后,它所做的修改将会永久保存在数据库上,即使出现宕机也不会丢失。
- CAP理论
一个分布式系统最多只能同时满足一致性、可用性和分区容错性这三项中的两项。
(1) 一致性:更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。
(2) 可用性:服务一直可用而且是正常的相应时间内。
(3) 分区容错性:分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性服务。
- BASE理论
BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性。
(1)基本可用: 分布式系统在出现故障的时候允许损失部分可用性,即保证核心可用。
(2 )软状态:允许系统存在中间状态,而该中间状态不会影响系统整体可用性。
(3)最终一致性:系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。
-
最终一致性
是弱一致性的一种特例,过程松,结果紧,最终结果必须保持一致性即可。 -
一致性散列容错性扩展性特征
(1) 容错性: 在一致性散列算法中,如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器之间的数据,其他不会受到影响。
(2) 扩展性:如果增加一台服务器,则受影响的数据仅仅是新服务器到其环空间中前一台服务器之间的数据,其他数据也不会受到影响。
(3) 虚拟节点:一致性散列算法在服务节点太少时,容易因为节点分布不均匀而造成数据倾斜问题。 -
分布式存储子系统5个子方向
结构化存储、非结构化存储、半结构化存储、In-memory存储及NewSQL。
第三章 云计算架构
-
云的工作负载模式
时开时停模式、用量迅速增长模式、瞬时暴涨模式、周期性增减模式。
-
常用架构
中央集权架构
:对应的是中央集权计算范式。
客户机/服务器(C/S)架构
:对应的是同名计算范式。
中间层架构
:对应的是多层客户机/服务器计算范式。
浏览器/服务器(B/S)架构
:对应的是浏览器/服务器计算范式。
C/S与B/S混合架构
:对应的是混合计算范式。
面向服务的架构
-
OpenStack的核心项目有哪些?简要描述这些项目的功能?
第四章 虚拟化技术
-
虚拟化技术
虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
-
服务器虚拟化下面三种技术
全虚拟化
: 全虚拟化提供底层物理系统的全部抽象化,且
创建一个新的虚拟系统,客户机操作系统可以在里面运行。不需要对客户机操作系统或者应用程序进行修改(客户机操作系统或者应用程序像往常一样运行,意识不到虚拟环境的存在)。
半虚拟化
:虚拟机系统和虚拟化软件层通过交互来改善性
能和效率。半虚拟化涉及修改操作系统内核来将不可虚拟化的指令替换为可直接与虚拟化层交互的超级调用
硬件辅助虚拟化:
是独立的虚拟化技术,结合到全/半虚拟化技术中。通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能。 -
全虚拟化和半虚拟化的区别
全虚拟化时未经修改的虚拟机系统不知道自身被虚拟化,系统敏感的调用陷入虚拟化层后再进行二进制翻译。
半虚拟化的价值在于更低的虚拟化代价,但是相对于全虚拟化,半虚拟化的性能优势根据不同的工作负载有很大差别。 半虚拟化不支持未经修改的操作系统,因此他的兼容性和可移植性较差。由于半虚拟化需要系统内核的深度修改,在生产环境中,技术支持和维护上会有很大的问题。
第五章 分布式存储
-
分布式存储系统定义
分布式存储系统是将为数众多的普通计算机或服务器通过网络进行连接,同时对外提供一个整体的存储服务。
-
分布式存储特性
高性能、可扩展、低成本、易用性。
-
四类分布式存储系统
分布式文件系统、分布式键值系统、分布式表系统、分布式数据库。
-
文件存储五个系统
单机文件系统、网络文件系统、并行文件系统、分布式文件系统、高通量文件系统。
第六章 云计算网络
-
什么是覆盖网络?
覆盖网络是一种在原有网络基础上构建网络连接抽象及管理的技术。
-
覆盖网络的实现方式
覆盖网络的实现方式是在原有网络的基础上构建隧道。目前常用于构建隧道的网络协议有:GRE、VLAN、VXLAN、NVGRE、IPSEC。
-
什么是隧道技术?
隧道技术是一种通过互联网络基础设施在网络之间传递数据的方式。简言之,隧道技术是指包括数据封装,传输和解包在内的全过程。
-
GRE报文格式
乘客协议
:封装前的报文称为净荷,封装前的报文协议称为乘客协议。
封装协议
:GRE Header是由封装协议完成并填充的,封装协议也称为运载协议。
传输协议
:负责对封装后的报文进行转发的协议称为传输协议。 -
VLAN
虚拟局域网(VLAN)是一种对局域网(LAN)进行抽象隔离的隧道协议。
-
IPSEC
IPsec是用于网络或网络通信的分组处理层的一组安全协议的框架,通常和VPN等隧道技术结合进行报文的隐私保护。
IPsec提供了两种安全服务选择:允许数据发送者认证的认证报头(AH),支持发送者认证和数据加密的封装安全有效负载(ESP)。 -
SDN(软件定义网络)
是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供了良好的平台。主要功能是解决如何让网络的控制逻辑更好地控制网络中交换机和路由器的行为。
特点
: 控制平面与数据平面分离
开放的可编程接口
集中化的网络控制
网络业务的自动化应用程序控制SDN概念简记:转控分离,开放接口
-
网络功能虚拟化NFV
一种对于网络架构的概念,利用虚拟化技术,将网络节点阶层的功能,分割成几个功能区块,分别以软件方式实现,不再局限于硬件架构。通过使用x86等通用性硬件以及虚拟化技术,来承载很多功能的软件处理,从而降低网络昂贵的设备成本。
第七章 云计算安全
- 虚拟化软件栈面临的安全威胁
- 虚拟化 软件栈攻击方式
- 安全云系统的关键技术
第八章 云原生应用的开发
- 云原生是面向“云”设计的应用,因此技术部分依赖于传统云计算的三层概念,即基础设施及服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
2.持续集成
:是指每当开发人员提交了一次改动就立刻进行构建、自动化测试,确保业务应用和服务能够符合预期。
持续交付
:是指每当开发人员提交了一次活动,在持续集成完后之后,能够提供到预发布之类系统上,达到生产环境的条件。
持续部署
:使用完全的自动化过程来把每个变更自动提交到测试环境中。打通开发、测试、生产的各个环节,自动持续、增量地交付产品,也是大量产品追求的最终目标。
3. 云原生应用的关键技术
4. 云原生应用开发实践的12要素
(1)基准代码:一份代码库与多份部署
(2)依赖:显示声明依赖关系
(3)配置:在环境中存储配置
(4)后端服务:把后端服务当作配置
(5)构建、发布、运行:严格分离构建和运行
(6)进程:以一个或多个无状态进行运行应用
(7)端口绑定:通过端口绑定提供服务
(8)并发:通过进程模型进行扩展
(9)易处理:快速启动和优雅终止课最大化健壮性
(10)环境等价:尽可能保持开发与预发布线上环境相同
(11)日志:把日志当作事件流
(12)管理进程:后台管理任务当作一次性进程运行
5. 云原生应用开发原则
- 云服务优先策略
- 基础设施即代码
- 敏捷交付
- 自动化交付原则
- 基于服务架构
- 12要素应用
第九章 云端软件
1. 云件的概念
软件把软件主体放在云端,客户端可以通过互联网技术使用云端软件的服务,使得软件不再依赖于终端软硬件资源,这样的软件形态则称之为云件。
2. 云件形态的几个特性
(1) 云件主体在云端运行
(2) 按需资源分配
(3) 云端渲染,终端显示
(4) 无需安装,快速启动
(5) 通过网络交付
(6) 统一交互平台
(7) 文件透明传输
第十章 轻量级虚拟化
1. 虚拟机与容器的区别
容器和虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式。
虚拟机会将虚拟硬件、内核(即操作系统)以及用户空间打包在新虚拟机当中,虚拟机能够利用“虚拟机管理程序”运行在物理设备之上。简言之,虚拟机先需要虚拟一个物理环境,然后构建一个完整的操作系统,再搭建一层Runtime,然后供应用程序运行。
容器不需要安装主机操作系统,直接将容器层(比如LXC或libcontainer)安装在主机操作系统(通常是Linux变种)之上。在安装完容器层之后,就可以从系统可用计算资源当中分配容器实例了,并且企业应用可以被部署在容器当中。但是,每个容器化应用都会共享相同的操作系统(单个主机操作系统)。容器可以看成一个装好了一组特定应用的虚拟机,它直接利用了宿主机的内核,抽象层比虚拟机更少,更加轻量化,启动速度极快。
(来源:容器和虚拟机的区别)
2. 容器技术的优势
- 简化部署 : 应用打包成单一地址访问、Registry存储、通过单一命令就可以部署完成的组件。
- 快速启动:容器技术对操作系统的资源进行抽象而非对硬件资源虚拟化,打包好的服务可以快速启动
- 服务组合 : 采用 容器的方式进行部署,整个系统会变得易于组合。
- 易于迁移:允许用户对工作负载进行迁移,避免局限于单一的平台提供商。
3. 容器与虚拟机技术的对比
- 虚拟机是“重量级”的:通常包含整个操作系统及其应用程序,同时也需要运行一个hypervisor来控制虚拟机,镜像大小在10G量级,部署和启动需要较长时间
- 容器是轻量级的,镜像大小在100M量级,可以在秒级启动
- 容器技术与虚拟机技术并不互斥,云计算环境中容器一般运行在虚拟机中
4. 简述Docker的工作原理
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
Docker-Server接收到Docker-Client的指令,就会执行这个命令!
5. 6种namespace的系统调用
6. Docker基本概念:镜像、仓库、容器
镜像(image)-
- 一堆只读层的统一视角
- Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用
仓库(repository) –
- 是集中存放镜像文件的场所,官方仓库 docker.io –
- 用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有 或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只 需要从仓库上 pull 下来
容器(container) –
- 器是从镜像创建的运行实例,它可以被启动、开始、停止、删除
- 每个容器都是相互隔
- 离的、保证安全的平台,可以把容器看做是一 个独立的 Linux 环境和运行在其中的应用程序
- 一个镜像可以创建很多容器
7. Docker基本命令
-
systemctl start docker 启动docker服务 systemctl stop docker 停止docker服务
-
systemctl restart docker 重启docker服务
-
systemctl status docker 查看docker服务状态
-
systemctl enable docker 设置开机启动docker服务
-
docker images 查看镜像
-
docker pull 镜像名称 拉取镜像
-
docker rmi 镜像id 删除指定本地镜像
-
docker rmi 'docker images -q ’ 删除所有本地镜像
-
docker ps 查看容器
-
docker stop 容器名 停止容器 docker start 容器名 启动容器
-
docker rm 容器名 删除容器 如果容器是运行状态则删除失败,需要停止容器才能删除
-
docker inspact 容器名 查看容器信息
-
docker run 创建容器,是docker create和docker start两个命令的组合
-
docker build 利用 Dockerfile 来创建镜像,Dockerfile 中每条指令创建镜像的一层
第十四章 云操作系统
- 云操作系统是指构架于服务器、存储、网络等基础硬件资源和单机操作系统、中间件、数据库等基础软件之上,管理海量的基础硬件、软件资源的云平台综合管理系统。
- 资源调度是指在特定的资源环境下,根据一定的使用规则,在不同的资源使用者之间进行资源调整的过程。通常存在两种途径可以实现计算任务的资源调度:在计算任务所在的机器上调整分配给它的资源使用量,或者将计算任务转移到其他机器上。
- 资源调度策略及算法分类
第十五章 云服务的编排与管理:Kubernetes
1. 什么是容器编排?
现代应用(云应用)一般由容器化的单独组件(通常称为微服务组成),且需按照调用关系在网络级别进行组织,以使其能够按照设计结构运行。以这种方法对多个容器进行组织的流程即称为容器编排。
2. 容器编排的主要任务
- 让用户控制容器启动和停止时间、将其组合到集群中,以及协调应用组合的流程。
- 允许用户指导容器部署与自动更新、运行状况监控以及故障转移等。
3. 简单说明Kubernetes中pod、service、deployment的作用
- pod:Kubernetes的最小管理单位,用于控制创建、重启、伸缩一组功能相近、共享磁盘的Docker容器。
- service: 可用作服务发现,类似于LoadBalancer,通过Selecors为一组pod提供对外的接口。
- deployment: 定义Deployment来创建Pod和ReplicaSet, 滚动升级和回滚应用,扩容和缩容,暂停和继续Deployment
以上仅供参考,终于更完啦!