云计算也称为按需计算(On Demand Computing),它是提供对可配置的、共享的计算资源池的按需存取的一种计算模型,这里的资源包括计算、存储、网络等硬件资源。
云计算并不是一种全新的计算模型,它是并行计算(Parallel Computing)、分布式计算(Distributed Computing)、以及网格计算(Grid Computing)发展的新阶段
(1) 虚拟化(Virtualization)
(2) 弹性(Elasticity)
(3) 成本低廉(Cost)
(4) 高度容错性(Fault Tolerance)和高度可靠性(Reliability)
并行计算是相对于串行计算来讲的,可以分为时间上的并行、和空间上的并行
分布式计算通过把整个计算任务,分解成一系列的小任务,分布到各个节点(计算机)上分别执行,最后把结果合并,获得最终结果。分布式计算的侧重点,在于任务的划分
其任务划分的粒度比并行计算要粗,其节点一般指的是计算机,节点间的交互没有并行计算那么频繁。并行计算和分布式计算,都代表了“分而治之”的问题解决策略
集群计算,通过高速网络把一组本来松散联系的节点(计算机),通过软件紧密联系起来,协作完成计算工作。从外部来观察,从某种意义上来讲,这些计算节点可以看作一台计算机
网格计算作为集群计算的一种类型。而从另外一个角度看,网格计算也可以看作是一类分布式计算。网格计算把大量异构计算节点的资源(CPU计算资源、磁盘存储资源)组织起来,构成一台虚拟的、大的计算机,为解决大规模的计算(包括数据处理)问题,提供计算平台的支持
云计算是上述技术发展的新阶段,其底层的核心技术是虚拟化,即把计算、存储、网络等硬件都进行虚拟化。在硬件资源基础之上,利用虚拟化技术,提供不同层次的对外服务,包括基础设施作为服务(Infrastructure as a Service)、平台作为服务(Platform as a Service)、以及软件作为服务(Software as a Service)等
大数据具有数据规模大(Volume)、数据类型多样(Variety)、数据生成速度快(Velocity)等几个主要的特点
为了处理大数据,使用向上扩展(Scale Up)的办法提高系统处理能力,即单纯地靠扩展单个节点的计算能力,比如扩展CPU、内存、存储等,已经无能为力
把大数据分布到大量的节点上,通过各个节点的并行处理,才能实现大数据的快速有效处理。这是一种横向扩展(Scale Out)的方式
云计算以其动态扩展能力、高度的容错性能和可靠性,成为大数据处理的理想平台
按照服务类型,云计算可以分为三类,分别是基础设施作为服务(Infrastructure as a Service,简称IaaS)、平台作为服务(Platform as a Service,简称PaaS)、和软件作为服务(Software as a Service,简称SaaS)等
IaaS把硬件设备包括计算设备、存储设备,封装起来,以虚拟机的形式,提供用户使用。
对于用户来讲,他们使用的好像是一台台的物理裸机。在这些虚拟机上,用户可以安装不同的操作系统,以及开发工具,并且在上面开发和部署应用软件。
典型的系统包括亚马逊公司提供的弹性计算云EC2(Amazon Elastic Compute Cloud),和简单存储服务S3(Amazon Simple Storage Service)等
PaaS对资源的抽象提升了一个层次,它提供用户一个应用程序的运行环境。
PaaS可以认为是云计算提供商在虚拟节点(也可以是若干虚拟节点构成的虚拟集群)上安装了操作系统,并且安装了程序开发环境和运行环境。用户只需按照特定的编程模型,编写程序,然后就可以部署到PaaS系统上运行。PaaS负责资源的动态扩展和容错保证,用户不需要操心。
典型的系统为Google的App Engine,用户可以使用Java语言、或者Python语言,调用Google App Engine 软件开发包(Software Develop Kit,SDK)来开发应用程序,就可以部署到PaaS云平台上运行,向外提供服务
SaaS把特定应用软件封装成服务,提供给用户使用。
从用户的角度来看,可以认为云计算提供商已经在虚拟节点(或者虚拟集群)上,安装了操作系统、以及具有特定应用功能的应用软件。
典型的系统是Salesforce公司提供的在线客户关系管理系统CRM(Customer Relationship Management)服务。SaaS把专用的应用软件功能提供出来,供用户付费使用,用户无需自己再开发一套专用的系统
服务器虚拟化,指的是把一台物理服务器虚拟成若干个独立的逻辑服务器,各个逻辑服务器拥有自己的CPU、内存、以及I/O设备。服务器虚拟化可以采用两种形式,分别是寄居虚拟化、以及裸机虚拟化。
寄居虚拟化,首先在服务器上安装一个主机操作系统,然后安装虚拟机管理器(Virtual Machine Manager,VMM),通过它创建、销毁、启动和停止虚拟机(称为客户虚拟机)。
而在裸机虚拟化中,物理服务器上无需安装宿主操作系统,而是在裸机上直接安装VMM(也称为Hypervisor),它是一个轻量级的操作系统,为创建、运行和管理虚拟机进行了优化
服务器虚拟化,必须为每台虚拟机虚拟出其CPU、内存、以及I/O设备。CPU虚拟化,需要解决各个虚拟机的正确调度和运行问题
存储虚拟化,其目的是把分散的、异构的存储设备,想办法映射成一个统一的、连续编址的逻辑存储空间。这个存储空间也称为虚拟存储池,虚拟化软件把设备的差异性屏蔽掉,上层应用程序(运行在计算节点上,节点可以是虚拟机,也可以是物理机),通过分配给它们的逻辑卷进行操作。为了保证虚拟设备的可靠性,可以采用包括数据镜像、数据校验等技术。
存储虚拟化有三种不同的实现方式,分别是基于主机的存储虚拟化、基于存储设备的存储虚拟化、以及基于网络的存储虚拟化
网络虚拟化,在不改变数据中心网络的物理拓扑和布线的情况下,可以虚拟出各层网络,并且实现互联,形成统一的交换架构。网络虚拟化,包括核心层、接入层、以及虚拟机网络虚拟化三个层次。
核心层网络虚拟化,指的是数据中心核心交换机的虚拟化,需要考虑大规模的数据交换能力、资源利用率、以及冗余备份能力。
接入层网络虚拟化,需要考虑数据中心接入交换机能够支持不同的网络部署方式,以及支持各种新的网络技术。
虚拟机网络虚拟化,主要是指物理网卡的虚拟化,为每台虚拟机创建虚拟网卡。此外,为了实现各个虚拟网卡之间的互联和信息交换,需要实现虚拟的网络交换机
数据中心首先由Google、Facebook、Amazon等大型互联网公司,为适应其业务发展的需要而建设。大型的数据中心,可以集中超过10万台服务器。
数据中心的主要特点和优势是,通过服务器虚拟化、存储虚拟化、网络虚拟化、应用虚拟化等技术,数据中心把各种硬件资源进行整合,对外提供服务,提高设备的利用率。
数据中心一般采取了冗余、容错、容灾的设计,提供不间断的服务,满足业务连续性的要求
有些数据中心为了获得廉价的电力,靠近水电站建设。Google甚至考虑在海上建设数据中心,利用潮汐发电以提供能源,并利用海水进行设备的制冷。
、容灾的设计,提供不间断的服务,满足业务连续性的要求
有些数据中心为了获得廉价的电力,靠近水电站建设。Google甚至考虑在海上建设数据中心,利用潮汐发电以提供能源,并利用海水进行设备的制冷。