目录
云计算的概念
弹性计算
容错、高可用、容灾
云计算的服务模式
虚拟化
虚拟机
虚拟机编排OpenStack
虚拟机迁移
容器
容器编排Kubernetes
云计算中的存储
SOA面向服务架构
有状态和无状态
FaaS
云计算是通过互联网提供计算服务(包括服务器、存储器、数据库、网络、软件......)
为什么云计算的成本更低?
(1)大规模采购,价格更低(2)由于数据中心的利用率只有10%~20%,当引入更多客户时,利用率能达到50%以上(3)由于大部分服务器不会同时处于峰值状态,可以超额配置服务器数量
弹性计算可快速扩展或缩减计算机的处理、内存和存储资源,以满足不断变化的需求,从而无需担忧用量高峰的容量计划和工程设计。
容错是当系统中一个或多个组件出现故障时业务能够继续运行的能力(性能可能会下降但业务不会中断);
高可用是系统维护业务保持一定的性能的能力(允许业务中断但不停止,不中断时性能不降低,高可用性的高低一般用可用性来衡量)
容灾指的是发生一些灾难后业务恢复的能力。
IaaS、PaaS、SaaS
IaaS:将基础设施作为服务,包括一切物理级别的硬件资源,如计算核心、存储、网络等。
PaaS:在IaaS基础上,将OS、中间件、DB等基础软件也作为服务,直接为你提供一个完整的运行时环境PaaS。
SaaS:将应用程序通过网络提供,例如--云办公、云游戏、ERP。
虚拟化能做什么:分区、隔离、封装、独立于硬件
虚拟化技术的分类:计算虚拟化、存储虚拟化、网络虚拟化(从资源类型上);虚拟机、容器(根据虚拟化程度上)
虚拟机就是通过在宿主机上模拟物理硬件来作为客户机,从而提供一个虚拟化的软件运行环境。
虚拟机的核心部件是hypervisor。
Hypervisor是虚拟机的引擎,负责硬件资源的分配等重要工作。
根据hypervisor将虚拟机分两类:(1)裸金属--hypervisor直接运行在物理硬件上(2)托管--hypervisor完全运行在宿主操作系统上。
现代CPU划分了特权等级(Ring0~3)。虚拟机作为应用程序往往运行在用户态(>Ring0),但其上的客户操作系统却需要Ring0特权才能正常运行。
根据对上面这个问题的解决方式,将虚拟机技术分为两类:(1)全虚拟化--由Hypervisor将guest的特权指令捕获并进行处理(2)半虚拟化--修改guest操作系统,使其不使用特权指令。
实现全虚拟化的处理方式:(1)软件辅助--Hypervisor捕获客户机特权指令后,将其翻译为非特权指令(2)硬件辅助--由CPU提供支持,将ring0分为root和non-root,让guest OS直接运行在non-root的ring0上
OpenStack是一组为云基础设施提供通用服务的软件组件,可以在大型集群上对虚拟机进行管理。
虚拟机冷迁移:虚拟机的全部内容都封装为文件的形式存在于磁盘中,因此可以在虚拟机关机后将文件移动到其他宿主机再开启,这就是虚拟机的冷迁移。
虚拟机的热迁移:在开机的情况下将虚拟机的全部内容和当前的运行状态全部迁移到另一台宿主机的另一台虚拟机,并追求这一过程最小的时间延迟。
快照是什么?
虚拟机运行时,其内存、寄存器中的数据表示了其运行状态,把这些内容写进一个文件,这个文件就是一个快照。
容器操作系统级的虚拟化,把一部分操作系统和硬件共同打包并虚拟化。
Docker:用来在一个操作系统内核上提供多个运行环境的工具
Docker镜像:Docker的镜像就相当于一个应用程序及其所有相关软件环境(除操作系统内核)的打包,在复用内核的同时囊括了程序要运行所需的所有内容。(方便迁移,方便扩容)
支持容器在集群上部署的软件
文件存储、块存储、对象存储
文件存储:通过网络,以目录的组织形式提供对文件的存储。对网络文件存储的操作和在本地文件系统上对文件进行操作的方法几乎一样。
块存储:块存储直接通过网络(一般是SAN)对外提供“块设备”(硬盘),从而其他服务器可以直接挂载该网络硬盘并以操作块的形式使用它。
对象存储:以“对象”的形式提供对数据的访问,结构扁平,不存在目录式的层级结构,数据对象的唯一标识符是一个Key。
(1)将服务的思想引入到软件架构中(2)在SOA中,存在着许多独立的功能单元,被称为服务 (3)服务之间相互依赖,通过通信的方式互相调用.
SOA服务的定义:(1)它在逻辑上表示具有特定结果的可重复业务活动(2)它是独立的 (3)对于被服务者,它是黑盒(4)它可能由其他服务组成
无状态:程序的执行只和它当前的输入有关,和之前发生的事无关。(e.g.一个静态网站、IP协议)
有状态:程序的执行可能会对未来产生影响(e.g.一个需要认证的网站、TCP协议)
无状态的优点:(1)具有天然的线程安全性(2)易于扩展和收缩(3)容错性强、高可用
解决有状态无法扩展的问题:用户的信息保存在session中,将所有的session单独维护在一个Redis中,这样剩下的服务就成为无状态的,可以对剩下的服务进行扩展。
功能(函数)即服务是一种事件驱动型的云服务模式,即不用始终处于运行中,或者说,它是”招之即来,挥之即去“。