随着信息和网络通信技术的快速发展,计算模式从最初的把任务交给大型处理机集中计算,逐渐发展为更有效率的基于网络的分布式任务处理模式。
云计算是分布式计算、效用计算、虚拟化技术、Web服务、网格计算等技术的融合和发展,其目标是用户通过网格能够在任何时间、任何地点最大限度地使用虚拟资源池,处理大规模计算问题。
2006年,27岁的Google高级工程师克里斯托夫·比希利亚第一次向Google董事长兼CEO施密特提出“云计算”的想法。在施密特的支持下,Google推出了“Google 101 计划”(该计划的目的是让高校的学生参与到云的开发),并正式提出“云”的概念。
对于专业人员而言,云计算是分布式处理、并行处理和网格计算的发展,或者说是这些计算机科学概念的商业实现,是指基于互联网的超级计算模式,即把原本存储与个人计算机、移动设备等个人设备上的大量信息集中在一起,使其在强大的服务器端协同工作。
目前比较权威的云计算定义是美国国家标准技术研究院NIST提出的:
Iaas是云计算的基础,为上层云计算服务提供必要的硬件资源,同时在虚拟化技术的支持下,IaaS层可以实现硬件资源的按需分配,创建虚拟的计算、存储中心,使其能够把计算单元、存储器、I/O设备、带宽等计算机基础设施集中起来,成为一个虚拟的资源池来对外提供服务。虚拟化技术是IaaS的关键技术。
一些大型电子商务企业为支持搜索引擎和电子邮件服务等需要海量数据处理能力的应用,开发了分布式并行技术的平台,在技术和经验有一定积累后,逐步将平台能力作为软件开发和支付的环境进行开放。PaaS层需要具备存储与处理海量数据的能力,用于支撑SaaS层提供的各种应用。因此PaaS的关键技术包括并行编程模型、海量数据库、资源调度与监控、超大型分布式文件系统等分布式并行计算平台技术。
云计算要求硬件资源和软件资源能够更好地被共享,具有良好的伸缩性,任何一个用户都能够按照自己的需求进行定制而不影响其他用户的使用。软件资源共享则是SaaS的服务目的,用户可以使用按需定制的软件服务,通过浏览器访问所需的服务,而不需要安装此类软件。SaaS层部署在PaaS和IaaS平台之上,同时用户可以在PaaS平台上开发并部署SaaS服务。
·
云计算可以按需提供弹性的服务,体系结构大致分为3个层次:核心服务层、服务管理层、用户访问接口层。
数据管理层为核心服务层的可用性、可靠性和安全性提供保障。服务管理包括服务质量保证和安全管理等。除了QoS保证、安全管理外,服务管理层还包括计费管理、资源监控等管理内容,这些管理措施对云计算的稳定运行同样起到重要作用。
用户访问结构层实现了云计算服务的泛在访问,通常包括命令行、Web服务、Web门户等形式。
云计算环境下的数据存储,通常称为海量数据存储或大数据存储。传统的关系数据库中强调事务的ACID特性,即原子性、一致性、隔离性和持久性,对数据的一致性的严格要求使其在很多分布式场景中无法应用。在这种情况下,出现了基于BASE特性的新型数据库,即只要满足basically available(基本可用)、soft state(柔性状态)和eventually consistent(最终一致性)。从分布式领域的著名CAP理论角度来看,ACID追求一致性,而BASE更加关注可用性。
云计算的计算模型是一种可编程的并行计算框架,需要高扩展性和容错性支持。由于PaaS平台部署于大规模硬件资源上,因此海量数据的分析处理需要抽象处理过程,并要求其编程模型支持规模扩展,屏蔽底层细节并且简单有效。
MapReduce是Google提出的并行程序编程模型,运行于GFS之上。MapReduce的设计思想在于将问题分而治之,首先将用户的原始数据源进行分块,然后分别交给不同的Map任务去处理。Map任务从输入中解析出键值对集合,然后对这些集合执行用户自行定义的Map函数得到中间结果,并将该结果写入本地硬盘。Reduce任务从硬盘上读取数据之后会根据键值进行排序,将具有相同键值的数据组织在一起。最后应用用户自定义的Reduce函数处理这些排好序的结果并输出最终结果。
海量数据处理平台的大规模性给资源管理与调度带来挑战。云计算平台的资源调度包括异构资源管理、资源合理调度与分配等。目前对于云计算资源管理方面进行的研究主要集中在减低数据中心能耗、提高系统资源利用率等方面。
云计算的发展离不开虚拟化技术。虚拟化技术可以将物理上的单台服务器虚拟成逻辑上的多台服务器环境,可以修改单台虚拟机的分配CPU、内存空间、硬盘等,每台虚拟机逻辑上可以被单独作为服务器使用。通过这种分科行为,将闲置或出于低峰的服务器使用起来,使数据中心为云计算提供大规模资源,通过虚拟化技术实现基础设施服务的按需分配。
·
Google公司有一套专属的云计算平台,这个平台最初是为Google公司的搜索应用提供服务,现在已经扩展到其他应用程序。Google的云计算基础架构模式包括4个相互独立又紧密结合在一起的系统:Google File System分布式文件系统(GFS)、分布式的锁机制Chubby、Google开发的模型简化的大规模分布式数据库BigTable以及针对Google应用程序的特点提出的MapReduce编程模式。
网页搜索业务需要海量的数据存储,同时还需要满足高可用性、高可靠性和经济性等要求。为此,Google基于一下假设开发了分布式文件系统——Google File System(GFS)
为了解决大规模并行计算的编程、数据分发和容错处理等问题,Google公司的Jeffery Dean设计了一个新的抽象模型MapReduce,只需执行简单的计算,同时可隐藏并行化、容错、数据分布、负载均衡等杂乱的细节。MapReduce是一个编程模型,也是处理和生成超大数据集的算法模型的相关实现。
由于Google的许多应用需要管理大量的格式化以及半格式化数据,它们的共同特点是需要支持海量的数据存储,读取后进行大量的分析,数据的读操作频率远大于数据的更新频率等,为此Google开发了满足弱一致性的大规模数据库系统——BigTable。
BigTable针对数据读操作进行了优化,采用基于列存储的分布式数据管理模式以提高数据读取效率。BigTable的基本元素是行、列、记录板和时间戳,行建和列建都是字节串,时间戳是64位整型,可以用(row: string, column: string, time: int64)-> string来表示一条键值对记录。其中,记录板Table就是一段行的集合体。