专业支持:(0512) 63016160 / 销售热线:(0512)63016068
当前在线: 288 今日上线: 1384 今日新增: 3

基于Windows Azure的云计算应用设计

文章来源:  中国云计算 发布时间: 2010年12月03日   浏览: 1282   作者:中国云计算
云计算应用的特点

  从前面的描述我们可以看到云计算给应用程序带来的一些挑战,那就是应用程序如何在云计算环境下充分利用云计算平台的一些特点来更好的满足用户需求。云计算应用要能够利用云计算环境中可动态扩展的资源,构建一个具有弹性的高可用应用程序。下面我们分别讨论一下云计算环境下的应用特点和要求。

  自动化要求

  自动化是人类的梦想,而计算机对自动化领域的发展有着巨大的影响,它极大的提高了工作和生产效率。在云计算环境下,自动化要求实际上是对计算工作本身的一个自动化改变。云计算的自动化可以赋予用户对平台基础架构的资源配置任务进行全面统筹的能力,并实现对资源的动态分配以提高管理效率、减少人为错误并加快用户对资源请求的响应速度。应用程序在设计的时候要能充分利用云计算环境的自动化特性,从而使得应用程序可以在很少或没有人工干预的情况下,自动适应需求的变化。

  分布式计算

  大部分云计算平台都是用廉价和标准的计算机硬件构成,然后通过云计算软件的方式在计算能力、可靠性等方面来达到传统的大型计算机的水准。也就是说在云计算环境下,资源池通常是通过分布式软硬件方式来实现。因此云计算应用程序的运行往往涉及到多个计算资源。无论是计算还是存储需求,应用程序一般都会涉及到多个节点,这样在设计的时候要考虑并行设计的思想或采用分布计算的方式。比如,有些云计算应用可以根据计算的要求,采用类似MapReduce的编程模型。

  松耦合

  无论是功能上还是性能上云计算对应用的灵活性提出了更高的要求。这就要求应用程序在设计的时候要考虑松耦合的架构。耦合度与灵活性一般是相反的,也即耦合度越高灵活性越低,而耦合度越低灵活性越高。因此,在做云计算应用架构设计的时候,一般要追求松耦合的设计。比如,在做Web应用设计的时候,对于用户状态的保持就需要尽量采用无状态的方式来设计,这样应用程序的水平扩展能力比较好。

  数据存储方式

  在传统的应用设计中,我们一般采用关系型数据库来存储数据。但是在云计算环境下,尤其是对于互联网应用,存在两个需要面对的问题。一是云计算环境下的数据量都比较大,传统的关系型数据库面临数据扩展能力的挑战。另一个是许多应用对于数据存储的要求更多体现在非结构化数据或者是半结构化数据的存储上面。因此,大多数云计算平台都会提供针对非结构化和半结构化的数据存储方式。这样应用程序的架构需要针对新的数据存储方式作出调整。

  上面描述的一些应用特点对我们开发和设计应用程序会带来许多影响。一个是应用程序在设计的过程中不仅仅需要考虑操作系统平台或中间件级别的编程接口,还要针对其运行的云平台的接口来对应用程序进行设计。另外一个比较大的影响是有一些工作量从平台产品转移到了应用程序的开发设计人员。比如说,在采用半结构化数据存储的时候,开发设计人员需要处理数据的一致性问题。还有,在云计算平台上如果想要得到比较好的性能,开发设计人员往往还需要对数据的分区进行特别设计,或需要采用一些并行设计的算法等。

  具有自我感知能力的应用

  传统的基础架构或系统平台中的资源都不能动态配置,因此应用程序在设计的时候主要考虑自身的业务逻辑的实现。应用程序本身的监控和管理都是通过其他系统管理软件如System Center,Tivoli等来实现。有一些管理得比较好应用程序,可以通过这些系统管理软件实现部分资源动态调整。但是,这些传统的应用程序本身对底层平台的运行情况是没有任何感知的。随着云计算的出现,应用程序本身的自动化逐渐成为可能。我把这些具有运行环境感知功能的应用程序称之为“自我感知应用”(Self-Sensing Application)。

  自我感知应用的出现是应用程序发展的一种趋势,是自动化在应用程序运行过程中的一种体现。在做传统应用程序设计的时候,我们把主要的精力都放在功能性的需求方面,但是对于一些非功能性的需求往往采用手工配置的方式来实现。云计算平台的出现使得计算平台的资源具有可编程的特性,因此我们在应用程序的架构设计中可以通过基础架构平台的一些接口来感知应用程序的实际运行情况,并可以结合访问情况对应用程序的运行资源进行动态调整,以实现完善的自动化程序运行。

  云计算平台具有可编程的资源分配,因此我们还可以设定自动化的部署过程,也就是让应用程序的可以自动化的完成应用程序的部署,升级等工作。自动化部署也是应用程序动态扩展的一个前提。这样当需要更多计算实例来处理更多的用户请求的时候,新的计算实例可以动态的生成出来并自动启用。

  自我感知应用是应用程序朝着成为具有独立、自治单元的方式发展的一种体现。应用架构师在做设计的时候,面对的是底层抽象的、几乎无限的计算资源,而不是传统意义上的物理资源。从另外一个角度看这种设计方式也是应用程序与底层计算平台松耦合的一种体现,从而使得应用程序不绑定具体物理硬件。云计算平台从底层提供几乎无限的计算、存储和网络资源,其上的应用程序就像一个个具有人工智能的独立单元,他们在完成自身业务工作之外,还能够具有自我管理和自我修复的功能。


一键分享:

在线客服