云计算编码阅读笔记¶
第一章 云计算概述¶
-
摩尔定理:集成电路上可容纳的晶体管数目,约每隔18个月便会增加1倍,性能也会提升1倍。
-
Web1.0 由网站编辑产生内容,用户单向获取信息。
-
Web2.0 由用户产生内容,信息双向互动。
-
Web3.0 互联网成为数字枢纽,形成多维度信息交互和语义网。
-
云计算的云指的是通过计算池提供资源。
-
计算池需满足:统一管理和调度、较大的规模、良好的可拓展性(针对计算池)、良好的可伸缩性(针对单一用户)、及时提供、更对的成本。
-
云计算:基于互联网将规模化资源池的计算、存储、开发平台和软件能力提供给用户,实现自动化、低成本、快速提供和灵活伸缩的IT服务。
-
效用计算:将主机资源基于网络出租给用户,并按用户的资源使用量进行收费。
-
传统分布式计算存在的主要问题是没有统一的编程模型,针对不容应用领域,需要相关专业的人员进行复杂的开发,限制了应用。
-
网格计算试图解决的是异构问题,由跨网络、跨组织(虚拟组织)、异构节点构成网络,统一提供计算和存储能力。
-
复本收费:按用户能用的全部内容收取固定费用。
-
云计算使得整个信息产业从传统的产品交付模式转变为服务交付模式,还原网络化信息的自然本质:让复本流动起来,然后按照每一次使用进行收费。
第二章 云计算产业分析¶
- 互联网的哲学:网络是中立和无控制的,任何人都没有决定权;网络是应用无关的,它的任务就是如何更好的传输数据包。
- 互联网的价值体现在使用外部性(Adoption Externality)。实现“胜者全得”的市场。
- 万维网>互联网
- 在信息经济中,信息流的方向就是金钱流动的方向。需要注意注意力经济和声誉经济。
- 互联网的信息经济市场是一个多方共存的生态系统,只在某些方面直接进行现金交易。整个市场是同分结合的双层结构:“统”的一层是基础业务平台,是免费生态系统;"分"的一层是多元增值业务,直接进行现金交易。参考免费游戏的运营方式。
- 私有云注重的是安全性,公有云侧重性价比。混合云的真正竞争力在于私有云和公有云的无缝集成和协同。
第三章 云计算技术体系架构¶
- 云计算系统架构的核心部分是操作系统及其拥有的资源管理功能。主要是分布式技术和虚拟化技术。
- 新一代的分布式主要特点是:节点同构且对对单节点可靠性要求不高、节点之间有高速网络互联、系统运行时信令流和数据流分离、针对大规模数据处理进行存储管理优化以及结合数据存储提出创新的计算模型等。
- 虚拟化体现了一种“分裂”的思想,分布式体现了“聚合”的思想。
- IaaS服务主要依托于云计算基础架构层,向外提供基础资源服务,如弹性计算、弹性存储等;PaaS服务主要依托于云计算应用开发与执行环境,向外提供应用开发与运行托管服务;SaaS服务主要通过云计算应用软件层向外提供应用软件服务。只是层次不同,没有必然的上下层关系。
- 分布式技术体系包括:分布式文件系统(位置透明性和性能透明性)、分布式数据库、并行计算模型(通过将计算到存储节点的方式完成数据处理任务)、分布式同步(确保系统一致性)等。
- CDN(Content Delivery Network,内容分发网络)位于IP网络与互联网应用之间,将网站内容推送到离用户最近的地方,从而实现用户就近访问,降低时延。关键技术为:用户访问制度、内容缓存管理。 采用同构节点,提供系统冗余,并将业务流与数据流分离,在设计思想上与分布式架构类似。
-
- 分布服务系统的作用是实现将内容从内容源中心向边缘推送和存储,承担实际的内容数据流的全网分发工作和面向最终用户的数据请求服务。最基本的工作单元是Cache设备(缓存服务器)。
- 负载均衡是CDN的神经中枢,主要功能是父子啊对所有发起服务请求的用户进行调度访问,确定提供给用户的实际访问地址。
- 运营管理系统负责整个系统的维护管理和业务计费等工作。
- IaaS核心:虚拟化和资源管理和资源调度
- PaaS核心:分布式系统
- SaaS核心:多租户和Web技术
- DaaS核心:桌面交付协议
- CDN核心:Cache缓存和内容分发调度
第四章 IaaS及关键实现技术¶
-
Guest OS:运行在虚拟机里的操作系统
-
VMM或者Hypervisor:负责管理虚拟机中的软件
-
裸金属架构无法说明VMM能够抛开Host OS运行在硬件之上。Xen的裸金属版本内部包含Domain0其中包含了一个剪裁过的Linux内核。即使是寄生架构的产品,在宿主系统中有一个运行在核心态的驱动程序,直接与物理设备打交道。
-
裸金属架构本身不会给Guest OS的性能带来任何提升。
CPU虚拟化¶
-
虚拟CPU分时复用物理CPU,由VMM为虚拟CPU分配时间片,并同时对虚拟CPU的状态进行管理。
-
CPU特权指令的虚拟化:模拟执行、操作系统辅助、硬件辅助(主流)
-
模拟执行适用于虚拟化CPU和本地物理CPU的指令集不同的应用场景。对特权指令的模拟执行需要较高的性能开销。是完全虚拟化。
-
基于操作系统辅助的CPU虚拟化直接在Guest OS进行修改,将其与特权指令执行相关的操作调用Hypercall(类似系统调用,但并不是针对操作系统进行操作的,而是直接与VMM通信,并在其管理下执行特权指令)的形式改写。提供的是与真实的物理设备有一定差异的CPU指令集接口,然后通过改写Guest OS调用该接口,使Guest OS的相关操作可以直接在底层硬件上实现。最大优点:有效的使Guest OS的运行获得与其在本地物理CPU上直接执行相接近的性能。最大缺点:需要对Guest OS进行改进,可移植性差。早期Xen所使用的技术。
-
上述两种方法都是因为传统的X86CPU不支持硬件虚拟化,只能采用软件层面的虚拟化。
-
基于硬件辅助的CPU虚拟化得益于现行的X86CPU支持硬件层面的虚拟化。
-
-
VMX root operation:专为VMM,行为与不带VT-x的技术的x86CPU相同
-
VMX non-root operation:提供了一个在VMM控制下用于支撑虚拟机运行的CPU环境。
-
都具有四个特权级
-
VMX root operation->VMX non-root operation:VM exit
-
VMX non-root operation->VMX root operation:VM entry
-
graph TD A[CPU正常模式启动]-->|vmxon指令|B[CPU进入VMX模式] B-->C[VMM执行VMX root operation] C-->D[VMM为虚拟机设置环境] D-->|vmlaunch指令|E[启动虚拟机] E-->F[CPU处于VMX non-root operation状态,并由虚拟机执行VMX non-root operation] F-->K{虚拟机管理相关操作} K-->G[虚拟机将CPU控制权让给VMM] G-->|vmcall指令|H[CPU进入VMX root operation] H-->|vmresume指令|I[重新唤起虚拟机] I-->F F-->L{退出VMX模式} L-->J[执行vmxoff指令] J-->A Z[VT-x应用过程]
-
VMM位于比第0级更高的特权级,且不会影响Guest OS对特权指令的执行。
优点:有效避免特权指令模拟执行产生的性能消耗,以及操作系统辅助虚拟化对所需的Guest OS的改写。
缺点:在VMX模式进行模式切换时会消耗大量的 CPU周期。
发展方向:减少每次切换消耗的周期数以及切换次数。
-
内存虚拟化¶
- 操作系统的内存管理单元(MMU)只能完成一次虚拟地址到物理地址的映射。
- 影子页表的缺陷:时间上,Guest OS构建页表时不会主动通知VMM,只能在Guest OS发生缺页中断时补全影子页表;在空间上,每台虚拟机的Guest OS通常都会在其上运行的每个进程创建一套页表系统,空间开销随着线程数量的增多而增大。
- 对于上述问题的解决方法是采用影子页表缓存技术。VMM在内存中维护部分最近使用的影子页表,只有当影子页表在缓存中无法命中的时候,才创建新的影子页表。
I/O虚拟化¶
网卡虚拟化¶
存储虚拟化¶
-
-
存储设备的虚拟化体现在磁盘固件将CHS地址信息转换成具有连续编号的逻辑块供上层使用,同时保证了磁盘的零缺陷。
-
DAS SAN 直接附加存储 存储区域网络 只能访问直接挂载的存储资源 访问存储网络的所有存储资源
IaaS云计算管理平台¶
- 将一台没有运行的虚拟机部署到一台物理机上并使其运行起来,称之为初次部署。
- 将一台正在运行的虚拟机迁移到另一台物理机上,称之为迁移。
- 服务器虚拟化本质上是一种纯软件的技术,VMM可以认为是服务器“操作系统”的程序,虚拟机可以认为是该“操作系统”上的一种特定“进程”。
- 选择合理物理服务器的因素
- 通常系统模板会自带一个软件,使其在操作系统第一次启东市从服务端动态获得IP和主机名。关机后释放IP,主机名保留。
- 要实现跨物理机的实施迁移,一般来说,需要虚拟机自身能够支持迁移功能且物理服务器之间有共享存储。
- 虚拟机实时迁移时产生内存中的“脏”读写,通过重复迁移来解决。直至最后一次迁移的脏数据非常少,停顿时间非常短,对于业务和应用来说基本可以忽略不计。
- 为实现弹性能力提供,需设定资源监控阈值(包括监控项目和阈值)、弹性资源提供策略(包括弹性资源提供模式、资源扩展规模等)。
- 云资源调度策略的方向1:对应用的资源分配进行分析和预测。在运行时动态的捕捉各个应用在不同时段的执行行为和资源需求,将这两方面的信息进行分析以发现它们各自内在以及彼此之间可能存在的逻辑关联,进而利用发掘出的关联关系进行应用的后续行为和资源需求的预测,并按照预测结果为其提前准备资源调度方案。
- 云资源调度策略的方向2:鉴于“云”是分布式计算和存储架构,所以网络因素也相当重要,需要采用位置相关的调度策略。考虑用户和资源之间的网络情况以及分配给同一应用的资源之间的网络情况。
- 云资源调度策略的方向3:注重负载均衡,可以体现在计算密集型和存储密集型应用上,通过合理的配比将其部署到特性不同的服务器上。扬长避短
- 云资源调度策略的方向4:基于能源的角度考虑,将多个运行在不同服务器上的应用在满足SLA的前提下,迁移至一台服务器上,进而减少不必要的能耗,降低运营成本。