当前位置:文档之家› 云计算案例

云计算案例

云计算应用的特点从前面的描述我们可以看到云计算给应用程序带来的一些挑战,那就是应用程序如何在云计算环境下充分利用云计算平台的一些特点来更好的满足用户需求。

云计算应用要能够利用云计算环境中可动态扩展的资源,构建一个具有弹性的高可用应用程序。

下面我们分别讨论一下云计算环境下的应用特点和要求。

自动化要求自动化是人类的梦想,而计算机对自动化领域的发展有着巨大的影响,它极大的提高了工作和生产效率。

在云计算环境下,自动化要求实际上是对计算工作本身的一个自动化改变。

云计算的自动化可以赋予用户对平台基础架构的资源配置任务进行全面统筹的能力,并实现对资源的动态分配以提高管理效率、减少人为错误并加快用户对资源请求的响应速度。

应用程序在设计的时候要能充分利用云计算环境的自动化特性,从而使得应用程序可以在很少或没有人工干预的情况下,自动适应需求的变化。

分布式计算大部分云计算平台都是用廉价和标准的计算机硬件构成,然后通过云计算软件的方式在计算能力、可靠性等方面来达到传统的大型计算机的水准。

也就是说在云计算环境下,资源池通常是通过分布式软硬件方式来实现。

因此云计算应用程序的运行往往涉及到多个计算资源。

无论是计算还是存储需求,应用程序一般都会涉及到多个节点,这样在设计的时候要考虑并行设计的思想或采用分布计算的方式。

比如,有些云计算应用可以根据计算的要求,采用类似MapReduce的编程模型。

松耦合无论是功能上还是性能上云计算对应用的灵活性提出了更高的要求。

这就要求应用程序在设计的时候要考虑松耦合的架构。

耦合度与灵活性一般是相反的,也即耦合度越高灵活性越低,而耦合度越低灵活性越高。

因此,在做云计算应用架构设计的时候,一般要追求松耦合的设计。

比如,在做Web应用设计的时候,对于用户状态的保持就需要尽量采用无状态的方式来设计,这样应用程序的水平扩展能力比较好。

数据存储方式在传统的应用设计中,我们一般采用关系型数据库来存储数据。

但是在云计算环境下,尤其是对于互联网应用,存在两个需要面对的问题。

一是云计算环境下的数据量都比较大,传统的关系型数据库面临数据扩展能力的挑战。

另一个是许多应用对于数据存储的要求更多体现在非结构化数据或者是半结构化数据的存储上面。

因此,大多数云计算平台都会提供针对非结构化和半结构化的数据存储方式。

这样应用程序的架构需要针对新的数据存储方式作出调整。

上面描述的一些应用特点对我们开发和设计应用程序会带来许多影响。

一个是应用程序在设计的过程中不仅仅需要考虑操作系统平台或中间件级别的编程接口,还要针对其运行的云平台的接口来对应用程序进行设计。

另外一个比较大的影响是有一些工作量从平台产品转移到了应用程序的开发设计人员。

比如说,在采用半结构化数据存储的时候,开发设计人员需要处理数据的一致性问题。

还有,在云计算平台上如果想要得到比较好的性能,开发设计人员往往还需要对数据的分区进行特别设计,或需要采用一些并行设计的算法等。

具有自我感知能力的应用传统的基础架构或系统平台中的资源都不能动态配置,因此应用程序在设计的时候主要考虑自身的业务逻辑的实现。

应用程序本身的监控和管理都是通过其他系统管理软件如System Center,Tivoli等来实现。

有一些管理得比较好应用程序,可以通过这些系统管理软件实现部分资源动态调整。

但是,这些传统的应用程序本身对底层平台的运行情况是没有任何感知的。

随着云计算的出现,应用程序本身的自动化逐渐成为可能。

我把这些具有运行环境感知功能的应用程序称之为“自我感知应用”(Self-Sensing Application)。

自我感知应用的出现是应用程序发展的一种趋势,是自动化在应用程序运行过程中的一种体现。

在做传统应用程序设计的时候,我们把主要的精力都放在功能性的需求方面,但是对于一些非功能性的需求往往采用手工配置的方式来实现。

云计算平台的出现使得计算平台的资源具有可编程的特性,因此我们在应用程序的架构设计中可以通过基础架构平台的一些接口来感知应用程序的实际运行情况,并可以结合访问情况对应用程序的运行资源进行动态调整,以实现完善的自动化程序运行。

云计算平台具有可编程的资源分配,因此我们还可以设定自动化的部署过程,也就是让应用程序的可以自动化的完成应用程序的部署,升级等工作。

自动化部署也是应用程序动态扩展的一个前提。

这样当需要更多计算实例来处理更多的用户请求的时候,新的计算实例可以动态的生成出来并自动启用。

自我感知应用是应用程序朝着成为具有独立、自治单元的方式发展的一种体现。

应用架构师在做设计的时候,面对的是底层抽象的、几乎无限的计算资源,而不是传统意义上的物理资源。

从另外一个角度看这种设计方式也是应用程序与底层计算平台松耦合的一种体现,从而使得应用程序不绑定具体物理硬件。

云计算平台从底层提供几乎无限的计算、存储和网络资源,其上的应用程序就像一个个具有人工智能的独立单元,他们在完成自身业务工作之外,还能够具有自我管理和自我修复的功能。

Windows Azure的架构设计Windows Azure平台目前包含Windows Azure,SQL Azure和Windows Az ure Platform AppFabric三大部分,而其中Windows Azure是平台最为核心的组成部分,它被称为云计算操作系统,也是本文讨论的重点。

不过这个操作系统目前只运行在微软的数据中心当中,微软是通过销售云计算服务作为她的业务模式。

图1:Windows Azure平台实际上为了便于理解,我们也可以把Windows Azure看成是数据中心的操作系统。

当然,这里我们称之为操作系统实际上是一种类比,因为Windows Az ure不是传统意义上的操作系统。

但是它履行了资源管理的职责,只不过它管理的资源更为宏观,数据中心中的所有服务器、存储、交换机和负载均衡器等都接受它的管理。

因为未来的数据中心会越来越像一台超级计算机,因此Windows Azure也会越来越像一个超级操作系统。

Windows Azure的设计团队中就有许多微软技术重量级人物,其中包括Dave Cutler,他被称为是Windows NT和VMS 之父。

Windows Azure为开发者提供了托管的、可扩展的、按需应用的计算和存储资源,还为开发者提供了云平台管理和动态分配资源的控制手段。

Windows Az ure是一个开放的平台,支持微软和非微软的语言和环境。

开发人员在构建Win dows Azure应用程序和服务时,不仅可以使用熟悉的Microsoft Visual Studio,Eclipse等开发工具,同时Windows Azure还支持各种流行的标准与协议,包括SOAP、REST、XML、和HTTPS等。

Windows Azure的组成和架构从云计算SPI模型来看,Windows Azure主要处于平台即服务的层次。

按照微软目前公开的发展计划,其将在年内提供基础设施即服务层次的一些服务,比如VM Role。

Windows Azure作为基础平台的调度和管理软件,它是构建高效、可靠、可动态扩展应用的重要平台。

主要由四大部分组成:1.计算服务2.存储服务3.管理服务4.开发环境图2:Windows Azure的组成上述四个组成部分中只有开发环境是安装在用户的计算机上的,用于用户开发和测试Windows Azure的应用程序,其余三部分都是Windows Azure服务平台的一部分而安装在微软数据中心。

Windows Azure Fabric控制器被比作是Windows Azure的大脑,它负责平台中各种资源的统一管理和调配。

而Windows Azure Fabric则由其管理的大量I T设备组成。

开发人员通过Windows Azure开发工具(比如Visual Studio 201 0和相应的SDK)开发的应用程序一般分为两大部分。

一部分是应用程序代码,也称服务代码,另一部分是应用的配置文件也称服务模型。

每个应用包括两个配置文件:服务定义文件和服务配置文件。

这两个配置文件中会包含应用程序在W indows Azure上运行和发布的一些信息,如认证信息、服务端口、服务角色、需要的实例数和自定义变量等。

当用户通过开发者门户把应用程序上传到Window s Azure平台的时候,其中的配置文件则由Windows Azure Fabric控制器来读取,然后由其根据配置文件中指定的方式进行服务部署。

Windows Azure的计算资源目前是通过成为Web Role和Work Role的方式来分配的。

为了便于理解,我们可以认为Web Role和Worker Role是两种不同的虚拟机模版。

其中Web Role是为了方便运行Web应用程序而设计的,而Wo rk Role是为了其他应用类型,比如批处理而设计的。

一种比较常见的架构设计方式是使用Web Role来处理展示逻辑,而通过Worker Role来进行业务逻辑处理。

Web Role负责客户端的HTTP请求,为了支持应用的扩展,Web Role上的应用一般会设计为无状态的,从而使得系统可以方便的增加Web Role实例数量,提高应用的并发处理能力。

图3:Web Role与Work Role的分工当应用程序部署完后,Windows Azure Fabric控制器便开始监控应用的状态,以保证应用程序的正常运行。

为了使控制器能够实时获取应用和运行实例的状态,所有Role实例,也即虚拟机实例中都预先安装了代理程序,Fabric控制器就是通过这些代理来实时获取相应的状态信息。

当检测到实例故障的时候,F abric控制器就会启动新的包含同样服务的实例并添加到服务组中去。

按照微软的计划,Windows Azure将在今年晚些时候提供另外一种称为VM Role的计算服务,它将让用户对底层计算平台有更多的控制权,可以通过远程桌面服务(R DS)方式连接过去。

其主要目的是要已有的Windows应用程序可以相对平滑地迁移到Windows Azure上去。

Windows Azure 提供的存储不是一个关系型数据系统,并且它的查询语言也不是SQL,它主要被设计用来支持建于Windows Azure上的应用,它提供更简单容易扩展的存储。

当然,对于在Windows Azure之外的应用程序也可以通过标准的REST API来访问和使用这个存储服务。

Windows Azure主要提供了三种数据存储方式以满足应用程序的不同需求,这三种存储方式分别为Blob、Tab le和Queue。

Windows Azure为了提升兼容性而提供的Drive其底层实现实际上就是Blob的一种。

所有这三种存储服务都可以通过标准的REST(表述性状态转移)API来访问。

相关主题