大家好,又见面了,我是你们的朋友全栈君。
代码语言:javascript复制# 写于2021.04.10
# 本文为学习笔记,用的ppt是陈羽中教授版,侵删
# 笔记只为交流,入门小白,有错望留言纠正
# 总结不易 望赞鼓励
一. 大数据和云计算
1 大数据时代数据特点?
2 云计算七个特点?
- 超大规模
- 虚拟化
- 高可靠性
- 通用性
- 高可伸缩性
- 按需服务
- 极其廉价
3 云计算你找服务类型可分为哪几类?
- 软件即服务(Software as a Service,缩写SaaS) 软件即服务是普通消费者可以感知到的云计算,它的代表有Dropbox,还有国内用户熟悉的百度云、腾讯微云等。这种云计算最大的特征就是消费者并不购买任何实体的产品,而是购买具有与实体产品同等功能的服务。 以前,我们是花钱购买的是服务器上的存储空间。现在,我们花钱购买的是Dropbox的存储服务。表面上看,两者没有实际的区别。但是换一个角度来看,两者却完全不同。以前,我们花钱购买服务器上的存储空间,假设是空间容量是10G,我们是真正的买到了服务器上的10G空间。如果我们不上传文件的话,那么服务器上的这10G空间就是空的。现在,我们购买Dropbox的存储服务,假设空间容量还是10G,我们却并没有真正的买到Dropbox服务器上10G的空间,我们买到的是10G空间的服务。也就是说,如果我们上传文件,Dropbox会将文件分开放在任何地方的任何服务器上,如果我们不上传文件,Dropbox的服务器上就根本没有属于我们的任何空间。
- 平台即服务(Platform as a Service,缩写PaaS) 与软件即服务不同,平台即服务是面向开发者的云计算。这种云计算最大的特征是它自带开发环境,并向开发者提供开发工具包。它的代表有Google的GAE(Google App Engine),还有国内的百度的BAE、新浪的SAE等。 平台即服务与软件即服务之间可以相互转换。如果是消费者,购买Dropbox的服务,那Dropbox就是软件即服务。如果是开发者,利用Dropbox提供的开发包借助Dropbox的服务开发自己的服务,那么Dropbox本身就是平台即服务,构筑在Dropbox之上的开发者的服务就是软件即服务。 以前,开发者如果要搭建一个网站,需要做很多准备工作,比如购买服务器,安装操作系统,搭建开发环境等等。现在,开发者如果购买平台即服务云计算,就可以省去上面费时费力的准备工作,直接进行网站的开发。不仅如此,开发者还可以使用各种现成的服务,比如GAE会向开发者提供Google内部使用的先进的开发工具和领先的大数据技术。这一切都使得网站开发变得比以前轻松很多,这也是云计算时代互联网更加繁荣的原因之一。
- 基础架构即服务(Infrastructure as a Service,缩写IaaS) 基础架构即服务一般面向的是企业用户,它的代表有Amazon的AWS(Amazon Web Service),还有国内的PPPCloud等。 这种云计算最大的特征在于,它并不像传统的服务器租赁商一样出租具体的服务器实体,它出租的是服务器的计算能力和存储能力。AWS将Amazon计算中心的所有的服务器的计算能力和存储能力整合成一个整体,然后将其划分为一个个虚拟的实例,每一个实例代表着一定的计算能力和存储能力。购买AWS云计算服务的公司就以这些实例就作为计量单位。 基础架构即服务与平台即服务有显著的区别,基础架构即服务提供的只有计算能力和存储能力的服务,平台即服务提供的除了计算能力和存储能力的服务,还提供给开发者的完备的开发工具包和配套的开发环境。也就是说,开发者使用平台即服务时,可以直接开始进行开发工作。而使用基础架构即服务时,则必须先进行如安装操作系统、搭建开发环境等准备工作。 基础架构即服务是云计算的基石,平台即服务和软件即服务构建在它的上面,分别为开发者和消费者提供服务,而它本身则为大数据服务。
4 云计算技术体系结构可分为哪几层?
资源池和管理中间件层为云计算技术的重要部分 其实虚拟化的就是资源池层,然后管理中间件层负责管理。SOA层应该类似于外部接口。
5 在性价比上云计算相比传统技术为什么又压倒性的优势?
二. 虚拟化技术
虚拟相对于真实,虚拟化就是将原本运行在真实环境上的计算机系统或组件运行在虚拟出来的环境中。 核心理念:以透明的方式提供抽象的底层资源
【分类】:
- 服务器虚拟化;
- 存储虚拟化
- 网络虚拟化
- 桌面虚拟化
【虚拟化的三层含义】:
- 虚拟化的对象是各种各样的资源
- 经过虚拟化后的逻辑资源对用户隐藏了不必要的细节
- 用户可以在虚拟环境中实现其在真实环境中的部分或者全部功能
【虚拟化的目标】:
- 逻辑简化,提供接口:对包括基础设施、系统和软件等IT资源的表示、访问和管理进行简化,并为这些资源提供标准*接口来接收输入和提供输出。
- 降低耦合:降低了资源使用者和资源具体实现之间的耦合程度,让使用者不再依赖于资源的某种特定实现
1 虚拟数据优势
随着云计算的发展,传统的数据中心逐渐过渡到虚拟化数据中心,即采用虚拟化技术将原来数据中心的物理资源进行抽象整合。
2 服务器虚拟化
【两个方向】:
- 一个物理的服务器虚拟成若干个独立的逻辑服务器,比如分区;
- 把若干分散的物理服务器虚拟为一个大的逻辑服务器,比如网格技术;
2.1 服务器虚拟化的层次
- 寄居虚拟化 有点类似于os平台上 装个win虚拟软件
- 寄居虚拟化的虚拟化层一般称为虚拟机监控器(VMM),负责对虚拟机提供硬件资源抽象,为客户操作系统提供运行时环境
- 由主机操作系统负责在多个虚拟机之间分配硬件资源,这类虚拟化架构系统损耗比较大
- 原生虚拟化 类似于在mac上装双系统
- 称为Hypervisor(虚拟化平台),负责虚拟机的托管和管理,直接运行在硬件上,实现受底层体系结构的约束,可以认为是一个操作系统,
- Hypervisor实现从虚拟资源到物理资源的映射
- Hypervisor实现了不同虚拟机的运行上下文保护与切换,保证了各个客户虚拟系统的有效隔离
2.2 服务器虚拟化的底层实现
2.2.1 cpu虚拟化
杨鸽理解:
- 可以虚拟成很多cpu,但是实际就一个,任何时刻 都只能运行一个虚拟CPU的指令
- ring0是最高权限,也就是cpu虚拟同时可以调度物理等资源,拥有最高权限
- 但这个最高权限的敏感指令,不是真正作用在真是硬件之上,而是需要被虚拟机监视器接管和模拟
- 把物理CPU抽象成虚拟CPU,任何时刻一个物理CPU只能运行一个虚拟CPU的指令
- 在x86体系中实现虚拟化,需要在客户操作系统以下加入虚拟化,来实现物理资源的共享,虚拟化层运行在Ring0级,客户操作系统运行在Ring0以上级别。
- 虚拟化x86体系结构问题的关键在于虚拟机里执行的敏感指令不能直接作用于真实硬件之上,需要被虚拟机监视器接管和模拟。
【实现cpu虚拟化的方式】
杨鸽理解: 纯虚拟化: 多用于个人计算机上,性能损失较大。 ①敏感指令在二进制上修饰,让计算机知道知道这是敏感指令 ②或者通过虚拟机监视器执行的具有相同功能的指令序列后执行 半纯虚拟化:多用在服务器,性能损失较小 就是系统层面开发一套指令来实现敏感指令 新技术:通过硬件或者第三方指令集实现
① 纯虚拟化
- 采用二进制代码动态翻译技术(敏感指令前插入陷入指令)
- 将敏感指令转换成可以通过虚拟机监视器执行的具有相同功能的指令序列后执行
- 非敏感指令可以直接在物理处理器上执行
② 半虚拟化
- 修改客户操作系统来解决虚拟机执行特权指令的问题
- 客户操作系统将敏感指令转换为对底层虚拟化平台的超级调用
- 虚拟化平台不需要做耗费资源的指令翻译工作
③ 硬件辅助虚拟化
- 在CPU中加入新的指令集和处理器运行模式来完成与CPU虚拟化的相关功能
- 客户操作系统可直接在CPU上运行虚拟化相关指令,无需进行二进制翻译或超级调用
④ INTEL VT技术
- 增加一套名为虚拟机扩展VMX的指令集,支持与虚拟化相关的操作
- 定义根模式和非根模式,虚拟化平台运行在根模式,客户操作系统运行在非根模式
【调度问题】 指VMM决定当前哪个虚拟CPU在物理CPU上运行,要保证隔离性、公平性和性能。这个地方没讲
2.2.2 内存虚拟化
内存虚拟化技术把物理内存统一管理,包装成多个虚拟的物理内存提供给若干虚拟机使用,每个虚拟机拥有各自独立的内存空间。
杨鸽理解:
- 虚拟内存要保证各个虚拟间内存数据不能受影响
- 虚拟内存要解决的问题就是虚拟地址到服务器上真正的物理地址.方法有两种,影子页表法和页表输入法
- 影子页表发: 虚拟地址,能通过续集你的操作系统页表查到操作系统上物理地址(虚拟的),那么这个操作系统上物理地址(虚假的)实际和服务器真正的物理地址有个对应关系,通过服务器端影子页表来实现。
- 页表写入法: 虚拟机上的操作系统页表直接就是虚拟地址和服务器真实的物理地址对应。
- 管理物理机器上的内存,并按每个虚拟机的需要分配内存,并保持每个虚拟机对内存访问的相互隔离
- 需要维护物理机里的内存地址块和虚拟机内部的连续内存块的映射关系,具备管理虚拟机内存的机制
- 虚拟机监视器必须具备管理虚拟机内存的机制,即虚拟机内存管理单元
【映射关系】
- ①影子页表法
- ② 页表写入法
2.2.3 IO设备虚拟化
杨鸽理解:
- 设备统一管理起来,包装成多个虚拟设备给若干个虚拟机使用,响应每个虚拟机的设备访问请求和I/O请求。
- 通过软件来实现。
- 使不同标准的设备,在虚拟层面标准化,实现大家都通用。
2.3 虚拟机迁移
云计算和虚拟化分析
https://www.bilibili.com/video/BV1PB4y1c78j?p=1
虚拟机迁移是将虚拟机实例从源宿主机迁移到目标宿主机,并且在目标宿主机上能够将虚拟机运行状态恢复到其在迁移之前相同的状态,以便能够继续完成应用程序的任务。
2.4 隔离技术
虚拟机隔离是指虚拟机之间在没有授权许可的情况下,互相之间不可通信、不可联系的一种技术。
https://www.bilibili.com/video/BV1PB4y1c78j?p=2
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215551.html原文链接:https://javaforall.cn