云计算
1 云计算概述
1.1 云计算定义
云计算是各种虚拟化、效用计算、服务计算、网格计算、自动计算等概念的混合演进并集大成之结果。
1.2 三元认知论角度理解云计算
云计算既是一种商业模式,也是一种计算范式,还是一种实现方式
1.3 云计算作为计算范式分为两种结构
- 横向云体逻辑结构
- 从横向云体的角度看,云计算分为两个部分:云运行时环境( CIoud runtime environment )和云应用( CIoud application )
- 纵向云栈逻辑结构
- 由 SaaS 、 PaaS 和 IaaS 三部分构成
Infrastructure as a Service(基础设施即服务)
Platform as a Service(平台即服务)
Software as a Service(软件即服务)
2 分布式计算
2.1 ACID 原则
ACID 是数据库事务正常执行的四个原则,分别指原子性、一致性、独立性及持久性
- 原子性(Atomicity): 事务中的所有操作要么全部成功,要么全部失败。不会出现部分成功的情况
- 一致性(Consistency): 事务只能将数据库从一种有效状态转换到另一种有效状态
- 隔离性(Isolation): 同时执行的事务彼此隔离,就像它们是单独执行的一样。一个事务的更改对其他事务不可见,直到该事务提交
- 持久性(Durability): 一旦事务提交,其对数据库所做的更改将永久保存,即使系统发生故障也是如此
2.2 CAP 理论
一个分布式系统最多只能同时满足一致性( Consistency )、可用性( Availability )和分区容错性( Partition tolerance )这三项中的两项
CAP 定理(也称为布鲁尔定理)是计算机科学中的一项基本定理,它指出在分布式计算系统中,不可能同时满足以下三个属性:
- 一致性(Consistency): 所有节点在任何时候都必须看到相同的数据
- 可用性(Availability): 系统必须始终可用,即使某些节点发生故障
- 分区容错性(Partition Tolerance): 系统必须能够在网络分区的情况下继续运行,即使某些节点彼此无法通信
换句话说,分布式系统只能同时满足其中两个属性,而不能同时满足三个属性
CA 系统: CA 系统提供一致性和可用性,但不能容忍分区。这意味着如果网络分区,系统将变得不可用
CP 系统: CP 系统提供一致性和分区容错性,但不能保证可用性。这意味着系统可能在某些情况下不可用,例如当网络分区时
AP 系统: AP 系统提供可用性和分区容错性,但不能保证一致性。这意味着系统在网络分区时仍然可用,但不同节点上的数据可能不一致在实践中,大多数分布式系统都必须权衡 CAP 定理中的三个属性。例如,像 Amazon DynamoDB 这样的数据库系统优先考虑可用性和分区容错性,而像 Apache Cassandra 这样的数据库系统则优先考虑一致性和分区容错性
CAP 定理对于理解分布式系统的设计和局限性至关重要。它有助于系统设计人员做出明智的权衡,以满足特定应用程序的需求
2.3 BASE 理论
BASE 是指基本可用( Basically Available )、软状态( Soft state )、最终一致性( Eventual consistency )
BASE 理论(基本可用、软状态、最终一致性)是分布式计算系统设计的一种替代方法,它放松了 ACID 原则中的一些严格要求,以提高可用性和可扩展性。BASE 是以下三个属性的缩写:
- 基本可用(Basically Available): 系统在大多数情况下都可用,即使某些组件发生故障
- 软状态(Soft State): 系统的状态可以随着时间的推移而改变,并且不同节点上的状态可能不完全一致
- 最终一致性(Eventual Consistency): 系统中的所有副本最终将收敛到相同的状态,但可能需要一些时间
与 ACID 原则不同,BASE 理论允许系统在某些情况下出现数据不一致。但是,它保证最终一致性,这意味着随着时间的推移,系统中的所有副本将最终保持一致
BASE 理论特别适用于大规模分布式系统,其中实现强一致性(如 ACID 原则所要求的)可能非常困难或昂贵。例如,像 Amazon DynamoDB 和 Apache Cassandra 这样的 NoSQL 数据库系统遵循 BASE 理论,以提供高可用性和可扩展性
需要注意的是,BASE 理论并不是要取代 ACID 原则。对于需要强一致性和数据完整性的应用程序,ACID 原则仍然是重要的考虑因素。但是,对于那些可用性和可扩展性比强一致性更重要的应用程序,BASE 理论提供了一种有价值的替代方案
3 云计算架构
3.1 云计算中工作负载模式分类&特征
- 时开时停模式
- 用户使用 IT 资源的方式不是连续的
- 用量迅速增长模式
- 用户使用 IT 资源随着时间的推移,用量不断增长
- 瞬间暴涨模式
- 用户一般时段使用资源用量都相对稳定和平均,但会在特定时间点上出现用量的暴涨和暴跌
- 周期性增减模式
- 用户的 IT 资产用量呈现周期性的增长和消减
3.2 "云体"&"云栈"概念
- 云体是云计算的物质基础,是云计算所用到的资源集合。它是构成云计算的软硬件环境,如网络、服务器、存储器、交换机等,通过网络连接在一起
- 云栈又称云平台,是在云上面建造的运行环境。它能够支持应用程序的发布、运行、监控、调度、伸缩,并为应用程序提供辅助服务的机制,如访问控制和权限管理等
4 虚拟化技术
4.1 OpenStack中负责对象存储的项目代码名称
- Nova
- 负责管理虚拟机实例的生命周期,包括创建、启动、停止、销毁等操作。
- Neutron
- 负责管理网络资源,例如虚拟网络、防火墙、路由器等。
- Swift
- 是一个分布式对象存储系统,它将数据分割成多个对象并存储在多个节点上。这使得 Swift 能够提供高可用性和可扩展性。负责提供可扩展、可复制、可持续的对象存储服务。它可以用于存储大量非结构化数据,例如图像、视频、文档等。此外,Swift 还支持多种数据格式和访问协议,例如 HTTP、REST、WebDAV 等。
- Cinder
- 负责管理块存储资源,例如虚拟机硬盘。
4.2 关于容器化应用程序的数据持久化,不正确的说法
尽可能使用卷存储应用程序的数据。
生产环境中使用机密数据存储服务中所有的敏感应用程序数据。
将应用程序配置文件存储在容器的可写层中。
开发环境中可以绑定挂载源代码目录。
4.3 虚拟化技术概念&类型
- 概念
- 在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念
- 类型
- 服务器虚拟化
- 网络虚拟化
- 桌面虚拟化
- 软件定义的存储
4.4 硬件虚拟化技术代表
- GPU 虚拟化
- FPGA 虚拟化
- RDMA 虚拟化
- NVM 虚拟化