Windows Azure平台简介(二):Windows Azure


计算

Windows Azure的计算功能可以这样被使用:

作为一个部署服务的平台

用户可以在Windows Azure上部署自行开发的服务,例如使用WCF开发的Web Service,使用WF开发的工作流,使用ASP.NET开发的运行在服务器上的网站,等等。

作为一个软件分发平台

用户可以使用Windows Azure来分发自己的软件,例如0点击(无需用户操作)部属的SilverlightXBAPAJAX程序,但点击(Click Once)部署的WPFWindows Forms程序,甚至是提供一个安装包的下载链接。当然,为了充分利用云的特性,这些软件常常需要和部署在云端的服务进行交互。

作为一个一般的分布式计算平台

Windows Azure也可以作为一个一般的分布式计算平台来使用。Fabric提供了极其强大的负载平衡的支持,所以可以很好的执行一些极为复杂的并行算法。Windows Azure支持多种开发技术,例如.NETWin32,甚至是Java,从而满足大多数客户对分布式计算的需求。

针对开发人员,Windows Azure提供了一种叫做role的概念。每个role就可以被认为是一段程序,只是这段程序可以同时在一台或者多台机体上运行。每个role可以有多个实例(instance),每个实例就对应一台虚拟机。对同一个role而言,它所有的实例执行的程序都是相同的。

当前我们提供了两种类型的role,分别是Web RoleWorker Role。通常Web Role被用于部属服务以及分发软件,Worker Role则被用于执行分布式计算。

 

管理员可以很轻松的通过修改配置文件的方式来管理每个role需要运行几个实例。运行多个实例可以让你的程序更快地处理请求和执行任务,但是也意味着你需要支付更多的费用。当你不再需要那么多的计算资源的时候,你可以通过修改配置文件来减少实例的数量,从而支付较少的租金。这也正是云计算的一大优势,如果不使用云计算,你必须自行购买大量的硬件来处理更多的请求和执行更多的任务,当你不再需要那么多的计算资源的时候,这些硬件也就白白浪费在那里了。

存储

Windows Azure提供了四种存储服务:

Blob

初学者可以把blob比作文件系统。是的,它确实和文件系统有非常多的相似之处。Blob storage有两个概念:

·         Container:可以类比成文件夹

·         Blob:可以类比成文件

和文件系统一样,用户可以针对每个container设置访问权限,可以对某个blob进行加锁(lease)从而防止concurrency问题,还可以使用诸如创建,删除,复制,备份,等众多功能。

从存储结构上来说,我们提供了两种类型的blob

·         Block blob:其存储方式类似于传统的文件系统中的簇(cluster)的概念。一个blob被分成一个或多个block进行存储。

·         Page blobPage blob对随机读写进行了优化,大家可以把它类比成大型文件,例如.vhd.mdf文件。

Table

千万不要把table storage和关系型数据库混淆起来。Windows Azuretable storage提供了一种结构化的存储方式。通俗来说,一个table可以被想象成一个xml文件。在xml文件中我们存放各种各样的数据,在一个table中我们也可以存放各种各样的entity。同一个table可以存储结构完全不同的两个entity,这和关系型数据库中需要对每张表制定统一的schema是不同的。

Table storage的可变的schema充分体现出了其灵活性。例如,你的业务需要扩展,需要往数据结构中添加新的字段,你可以在完全不修改table schema,完全不影响现有entity的情况下,对新的entity添加新的字段。如果你的程序可以被二次开发,第三方开发人员也完全可以在不影响你的程序所需要的entity的情况下,在同一张表中存储他们的程序所需要的,结构不同的entity

Queue

Queue提供了一种先进先出的存储方式。它通常被用于各种不同的程序间的通信。例如一个经典的应用场景:Web Role接受用户请求,针对每个请求,在一个queue中创建一条消息(message)。Worker Role则不断的从queue中取出消息,并且一一处理。

Drive

目前尚处于beta阶段的drive storage让开发人员能够使用标准的NTFS API读写文件。一个drive可以被挂接(mount)到某个特定的实例上,当作该实例对应的虚拟机的一块硬盘使用。由于drive在后台是由page blob实现的,因此你往drive中写入的文件也会自动被写入后台的page blob。这样一来数据便得到了持久化,即使万一运行当前实例的虚拟机出了问题,你还可以在其它实例中再次挂接这块虚拟硬盘,数据并不会丢失。

需要注意的是,当前一个drive在同一时间只能被单个实例挂接。如果你需要在不同的实例中同时访问文件,还是推荐使用blobDive更常被用于移植现有的那些需要执行大量I/O操作的程序。

管理

管理员可以直接使用Windows Azure门户来管理他们的程序。门户提供了创建,删除项目,创建,删除,更新部署,等众多功能。此外,为了帮助大家更灵活地管理部署在Windows Azure上的程序,我们还提供了Management API,让开发人员自行开发程序来管理他们的部署。

今后,我们还会将System CenterWindows Azure集成,从而使得大家可以使用同一套工具,同时管理企业内部的服务器,以及云端的资产。

其他

Windows Azure还提供了诸多其他方面的功能,例如Diagnostics API等等。我们还在不停地更新这个平台。如果大家有什么好主意,欢迎用英文在http://www.mygreatwindowsazureidea.com/pages/34192-windows-azure-feature-voting上提出宝贵的建议。如果你觉得是用英文不方便,也可以直接在我们的博客上用中文留言,或者发邮件至afst@microsoft.com,我们会将你们的建议转达给产品组。

Comments (0)

Skip to main content