漫步云端

移动开发(Android、iPhone、Windows Mobile) | JAVA | C | C++ | .net | Objective C | 微软企业开发技术 | 嵌入式系统设计与开发
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[转载] 平步青云:Windows Azure(一)

Posted on 2011-04-19 16:02  charley_yang  阅读(649)  评论(0编辑  收藏  举报

      本系列将系统地介绍Windows Azure,包括基本名词、编程以及Windows Azure的应用,并探讨Windows Azure可能给我们现行模式带来的变化。


先把晦涩的关于云计算的概念放到一边,来看看我们在“平步青云”之前的一些处境。


1. 大量数据实时处理、计算时,用户不得不等待,我们不得不在编码中考虑是否采用缓存并通过性能测试,同时我们还要编写一些代码保证缓存的更新与擦除;
2. 采用异步编程去解决用户等待问题;
3. 各种应用程序、Web Service统一的集成平台与五花八门的交互方式,每一次发布都让你头痛;
4. 海量数据存储的问题;
5. 公共模块如日志记录。


然后我告诉你,Windows Azure为我们提供了上面五个问题的解决方案,也许你就有兴趣来了解它了。


这就是Windows Azure的一个典型应用:它在Windows Data Center的一台机器上运行,以服务的方式为用户提供商业应用程序的使用和数据存取。

图片1

 

Windows Azure能做什么


1. 软件服务商可以在Windows Azure上为特定的商业公司创建应用程序,然后以SaaS的方式提供给商业公司。
2. 软件服务商可以为特定用户创建应用程序,如需要扩大市场为顾客创建的商业站点,Windows Azure都能够支持。
3. 企业为内部员工创建应用程序,Windows Azure也是一个好的选择。
接下来,让我们看看Windows Azure的组成:

图片2

 

计算服务(Compute service)负责运行应用程序,存储服务(Storage service)提供数据存储。第三个组件,Fabric,是一个管理和监控云平台上应用程序的工具。本文中将介绍第一个组件。


计算服务(Compute service)


Compute service支持多种多样的应用程序,它的首要任务就是,解决大量用户并发请求的瓶颈问题:此前我们采用硬件不断升级的方式,而现在Compute service支持应用程序以多个相同代码版本的实例运行在多个服务器上,并且,还支持虚拟机,我们可以通过Hyper-V的操作界面对每个虚拟机进行管理。需要运行程序时,开发人员从浏览器使用Windows Live ID登录,然后自定义应用程序的托管帐户以及数据存储的帐户。拥有托管帐户的开发人员就可以在Windows Azure平台上上载他的程序并定义其配置了。
Windows Azure提供了两种运行应用程序实例的方式:Web role实例和Worker role实例。

图片3

 

      如名称所示,Web role实例可以接收HTTP和HTTPS请求,它必须运行在IIS 7中。开发人员可以创建ASP.NET、WCF或其它可运行在IIS上的.NET应用程序;也可以创建非.NET的应用程序,如PHP和部署在Tomcat上的Java程序。图三中我们可以看到,Windows Azure内置了硬件负载均衡(load balancing),以为每个服务器上相同的应用程序实例分配Web请求,并管理这些实例的生命周期。因为Windows Azure并未为应用程序的每个实例建立关联,所以无法保证同一用户的一系列请求只被发送到唯一的一个实例上。因此,Web role实例是无状态的,所有客户端特定的状态都会被写入到Windows Azure存储上并在请求完成时发回客户端。


      Worker role实例与Web role实例的不同之处在于,它不需要配置也不运行在IIS中,大多数时候,他们是以后台工作的方式运行。我们还可以在Worker role中运行Web server,如Apache Web server。


      开发人员可以只使用一个Web role实例、一个Worker role实例,或将两者结合起来使用。如果应用程序的性能下降,他可以通过Windows Azure增加Web role实例,或增加Worker role实例,或两者同时增加。如果性能超过要求标准,他可以降低这些实例的数目,开发人员可以通过关闭所有的实例来停止应用运程的运行。Windows Azure还提供了API,允许通过编程方式动态改变Web role、Worker role实例的数目,但无法自动关闭应用程序。


      进行Windows Azure开发时,开发人员并不需要在自己的机器上运行云平台,而是向运行的云平台上载、配置和调试自己开发的程序,可以使用日志API对平台上的应用程序进行调试,也可以使用配置工具来监控应用程序,如性能计数器、CPU占用、存储错误等等。这些应用程序都是以用户模式(User mode)运行,Windows Azure自己管理自身的系统更新,所以不必担心应用程序带来系统级(System level)的破坏,这在目前的企业平台上,是经常发生的:一些应用程序集成之后,影响到众多其它程序,甚至给平台造成破坏。


      光是运行代码功能,显然不是Windows Azure的全部,在下一篇,我们将讲讲存储服务(Storage service)。