phpboy 2015-06-05
1.什么是云计算
云计算是云计算(Grid Computing )、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的完美系统,并借助 SaaS、PaaS、IaaS等先进的商业模式把这强大的计算能力分布到终端用户手中。从狭义上说,云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源。从广义上说,云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的服务。总的来说,云计算具有以下特点:
资源池:服务提供商的资源被池化,并通过多租户模式为客户提供各种服务,并根据客户的需求动态提供物理或虚拟化的资源。这些资源是位置独立的,因为用户并不确切的知道服务提供商的资源在那里,但是客户可以指定较高层次的位置,例如国家、州或数据中心。这些资源包括存储、处理能力、内存、网络带宽和虚拟机。
按需自助服务:客户可以按需、自动地获取计算能力,例如服务器计算时间和网络存储,而不需要和服务提供商进行人为交互。
快速弹性:服务可以快速、弹性的获得,某种情况下是自动化的,规模可以快速扩大或缩小。对于客户来说,供应能力似乎是无限的,可以任意购买,随时购买。
广泛的网络接入:计算能力可通过网络,并通过标准机制进行访问,使得各种瘦(或胖)客户端(例如移动电话、便携式电脑或PDA)平台均可以使用。
按使用量计费的服务:云系统对服务(存储、处理能力、带宽、活动用户帐户)进行适当的抽象,并提供服务计量能力,以自动控制和优化资源使用情况。资源的使用可以检测、控制、统计,为客户和服务商提供透明的服务使用量。
2.云计算典型系统
1)Google云计算平台
Google公司有一套专属的云计算平台,这个平台先是为Google最重要的搜索应用提供服务,现在已经扩展到其他应用程序。Google云计算基础平台主要包括3个部分:Google File System 文件系统、Map/Reduce编程模式、大规模分布式数据库BigTable。
Google File System 文件系统
为了满足Google迅速增长的数据处理需求,Google设计并实现了Google文件系统(GFS,Google File System),它是开发的基于Linux的专有分布式文件系统。GFS专门为Google的核心数据即页面搜索的存储进行了优化。
MapReduce分布式编程环境
为了让内部非分布式系统方向背景的员工能够有机会将应用程序建立在大规模的集群基础之上,Google还设计并实现了一套大规模数据处理的编程规范Map/Reduce系统。这样,非分布式专业的程序编写人员也能够为大规模的集群编写应用程序而不用去顾虑集群的可靠性、可扩展性等问题。
分布式大规模数据库管理系统BigTable
由于在Google的数据中心存储PB级以上的非关系型数据时候,比如网页和地理数据等,为了更好地存储和利用这些数据,Google构建了弱一致性要求的大规模数据库系统 BigTable。BigTable不是一个关系型的数据库,它也不支持关联(join)等高级SQL操作,取而代之的是多级映射的数据结构,并是一种面向大规模处理、容错性强的自我管理系统,拥有TB级的内存和PB级的存储能力,使用结构化的文件来存储数据,并每秒可以处理数百万的读写操作。
2)亚马逊弹性云EC2
亚马逊(Amazon)将他们的云计算平台称为弹性计算云(elastic compute cloud,简称EC2),是最早提供远程云计算平台服务的公司。Amazon将自己的弹性计算云建立在公司内部的大规模集群计算的平台上,而用户可以通过弹性计算云的网络界面去操作在云计算平台上运行的各个实例(instance)。用户使用实例的付费方式由用户的使用状况决定,即用户只需为自己所使用的计算平台实例付费,运行结束后计费也随之结束。这里所说的实例即是由用户控制的完整的虚拟机运行实例。通过这种方式,用户不必自己去建立云计算平台,节省了设备与维护费用。
3) 微软Azure 平台
Windows Azure Platform 是一个运行在微软数据中心的云计算平台。它包括一个云计算操作系统和一个为开发者提供的服务集合。开发人员创建的应用既可以直接在该平台中运行,也可以使用该云计算平台提供的服务。相比较而言,Windows Azure platform延续了微软传统软件平台的特点,能够为客户提供熟悉的开发体验,用户已有的许多应用程序都可以相对平滑地迁移到该平台上运行。另外 Windows Azure Platform还可以按照云计算的方式按需扩展,在商业开发时可以节省开发部署的时间和费用。Windows Azure platform包括Windows Azure、SQL Azure和Windows Azure platform AppFabric。Windows Azure可看成一个云计算服务的操作系统;SQL Azure是云中的数据库;AppFabric是一个基于Web的开发服务,它可以把现有应用和服务与云平台的连接和互操作变得更为简单。 AppFabric让开发人员可以把精力放在他们的应用逻辑上而不是在部署和管理云服务的基础架构上。
4) IBM“蓝云”计算平台
IBM的“蓝云”计算平台是一套软、硬件平台,将Internet上使用的技术扩展到企业平台上,使得数据中心使用类似于互联网的计算环境。“蓝云”大量使用了IBM先进的大规模计算技术,结合了IBM自身的软、硬件系统以及服务技术,支持开放标准与开放源代码软件。“蓝云”基于IBM Almaden研究中心的云基础架构,采用了Xen和PowerVM虚拟化软件,Linux操作系统映像以及Hadoop软件(Google File System以及MapReduce的开源实现)。“蓝云”计算平台由一个数据中心、IBM Tivoli部署管理软件(Tivoli provisioning manage)、IBM Tivoli监控软件(IBM Tivoli monitoring)、IBM WebSphere应用服务器、IBM DB2数据库以及一些开源信息处理软件和开源虚拟化软件共同组成。“蓝云”的硬件平台环境与一般的x86服务器集群类似,使用刀片的方式增加了计算密度。
3.云计算系统故障事件
云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。它为用户提供了一个高性能计算环境,高可伸缩的弹性的可计算平台,准确、安全、可靠而稳定的计算资源和存储资源。然而,近年来国际主流的云计算系统和应用均暴露出不同程度的可靠性和安全性问题,例如:
1)Google应用引擎平台宕机
2009年7月3 日,Google App Engine遭遇“数据仓库操作延迟增加、错误率上升等故障。” 这次故障持续了约6小时更糟糕的是,在Google更新Google Groups上的消息时,App Engine Status网页却因这次故障而完全无法访问。据悉,这次Google App Engine故障不仅造成用户的经济损失,甚至影响到了Mac版Chrome浏览器的开发。2010年02月25日,Google支持第三方网络应用的 App Engine平台再次发生宕机故障,所有存放的第三方应用陷入瘫痪,殃及绝大部分网络应用。整个平台瘫痪时间超过两小时。
2)Google Gmail和日历服务中断
2010年2月23 日,Google Gmail出现故障,持续时间长达两个半小时,这次故障导致全球数以百万计的用户在几小时内无法访问账户,经济损失无法估量,由于此次服务器故障,Google将针对企业的Google Apps高级版订户的付费时间延长十五天。2010年10月12日到2010年10月19日,Google的日历服务中断了8天。这起事故让0.2%的 Google日历用户中断了多天的访问。
3)Google Voice服务宕机
2010年11月23日,Google Voice网络电话服务再发生宕机事故,部分Google Voice用户无法拨出或接听电话。这次宕机事故只是近期Google Voice多个问题中的一个。2010年11月2日和5日都发生了类似的宕机事故。
4)亚马逊S3服务故障
Amazon的云存储平台Simple Storage Service(S3)在2008年7月出现了服务故障,故障持续了8个小时之久,依赖S3进行文件存储的在线公司因此蒙受了损失。S3在2月份的时候也出现过一次类似的故障,当时该故障持续了两个小时。
5)亚马逊EC2云计算服务遭到僵尸网络攻击
2010年4月,亚马逊基于云计算的EC2(弹性计算云)服务在一个星期内接连发生了两起故障,一起是僵尸网络引起的内部服务故障,另一起是在弗吉尼亚州的一个数据中心发生的电源故障。
云计算代表IT 领域向集约化、规模化与专业化道路发展的趋势,是一种面向Internet的IT资源交付和试用模式,但它在整合IT资源、提高资源利用率的同时,其性能、安全可靠性问题备受关注。这些问题都很大程度上制约了云计算产业的发展,成为实现大规模云计算的障碍。因此,专业性的云计算系统测试是解决目前云计算故障问题的一个重要手段之一。但云计算系统的复杂性和对于用户的不透明性也决定了第三方测试的难度,那么如何来对云计算系统进行测试呢?将在下节谈谈我对云计算测试的看法。
4.云计算系统测试
云计算系统中大量融入了面向服务的体系结构,用户可以通过该体系结构来实施、部署、执行和管理自己所提交的作业,可以说云服务是构成云计算系统的基本功能单元。云服务测试也成为云计算系统测试的基础部分。同时,云计算的目的是提供实现高性能计算、可靠、稳定而安全的计算环境,云计算的性能测试和安全可靠性测试也是云计算软件测试的重要内容。
1)云计算系统功能和标准符合性测试
云计算系统软件的发展与应用与其相应的技术标准或规范是分不开的,衡量一种云系统是否能够符合用户需求,从很大意义上讲就是在衡量它们所提供的服务的正确性以及是否符合技术标准或规范。然而,目前云计算相关标准不是很统一,各有说法百家争鸣,但就云计算特征和主要功能来说,各家还是比较统一的,如分为三个层次:SaaS、PaaS和 IaaS,要实现资源池及其调度管理、任务的分解、调度和执行、按需自助服务、服务计费、工作流管理、虚拟化平台以及门户应用等一些主要功能。如果就 SaaS来说,可以测试的是Web服务测试,一个很重要的方面就是测试其是否符合规范,包括UDDI,XML,SOAP,WSDL等,只有符合这些规范, 才能向用户提供正确的Web服务,因此Web服务测试所使用的方法和技术可以被云服务测试所借鉴和引用。云计算服务测试的目标是确保云服务为给定的请求传递期望的应答.然而对于大多数云计算服务,准确预测客户端将会发送什么类型的请求、列举所有可能的请求是不可行的,因为请求输入的范围空间可能非常大。因此,验证云计算服务是否可以处理范围广泛的请求类型和参数非常重要。
2)云计算系统性能测试
云计算性能测试的目标是验证在各种负载情况下云计算服务的性能。进行性能测试的最佳方式是使得多个测试客户运行完整的云服务测试,包括请求提交和应答验证。性能测试不仅通过指定的并发请求数目来监视服务器的响应速率,还要测试各类负载是否导致云服务功能性故障。因此,要求云服务性能测试工具能够设置或者定制性能测试场景(主要是指定负载等级、负载分布等)来执行云性能测试套件。根据高性能计算系统常见的应用场景,云计算系统性能测试可设置的场景主要包括bell曲线、缓冲区测试、线性增加和稳定负载。这样,通过使用不同的测试场景来使用不同的测试用例,同时还应支持跨越远端的云服务器分布虚拟用户,从而模拟极限测试与压力测试。
3)云计算系统安全可靠性测试