浅谈Windos Azure架构与存储
转载请注明出处:http://blog.csdn.net/zbf8441372写在前面: Windows Azure是微软发展出来的一套云操作系统,用来提供云联机服务所需要的操作系统与基础存储与管理的平台。我关注Azure这个平台,主要是想了解他的架构,以及他的云计算存储技术。我觉得一个好的操作系统,就是一个好的架构。Windows Azure Platform现阶段提供
转载请注明出处:http://blog.csdn.net/zbf8441372
写在前面:
Windows Azure是微软发展出来的一套云操作系统,用来提供云联机服务所需要的操作系统与基础存储与管理的平台。我关注Azure这个平台,主要是想了解他的架构,以及他的云计算存储技术。我觉得一个好的操作系统,就是一个好的架构。Windows Azure Platform现阶段提供的是PaaS(平台即服务),但未来可能会开放基础设施即服务(IaaS)的服务项目。
接下来,我主要分析他的架构以及存储。
云计算与Azure:
给个我认为概括地比较好的云计算的定义:云计算是一种标准化的IT能力,将软件、应用平台、基础设施整合建立起一个系统,通过Internet技术以按需和自助的方式提供服务。下面我们会看到,Azure的框架中也整合了软件、应用平台、基础设施三块内容。而这三块内容正好对应SaaS, PaaS, IaaS。Azure云操作系统看似的确涵盖了云计算的理念。
云计算是网格计算( Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算( Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等计算机技术和网络技术相融合的产物。它将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。显然,因为分布式的关系,集群的管理需要负载均衡,海量的数据处理也将用到MapReduce这样的编程模式。
微软的张亚勤曾经给出过一个云计算公式:云计算=(数据软件+平台+基础设施)×服务。此公式表明了云最重要的是服务,基于云计算服务的三种模式,微软云计算采用了“软件+服务”、“云+端”的策略。Windows Azure Platform正是这一策略的具体实现:一方面提供了可靠的软件平台;另一方面通过提供服务或者开放的系统运营企业服务。
接下来,我们就来看看Windows Azure是个怎样的云操作系统。
概观:
Windows Azure(以及Azure服务平台)由微软首席软件架构师雷·奥兹在2008年10月27日于2008年在微软年度的专业开发人员大会中发表,并于在2010年2月正式开始商业运转(General Availability)。微软为因应Windows Azure的营运需求,开始在全球主要地点建设数据中心,目前已正式营运的七个数据中心分别在:美国的芝加哥、圣安东尼奥及得克萨斯、爱尔兰的都柏林、荷兰阿姆斯特丹;新加坡及中国的香港。目前已有41个国家可以使用Windows Azure Platform服务。
Windows Azure是一个开放的平台,支持微软和非微软的语言和环境。开发人员在构建Windows Azure应用程序和服务时,不仅可以使用熟悉的Microsoft Visual Studio、Eclipse等开发工具,同时Windows Azure还支持各种流行的标准与协议,包括SOAP、REST、XML和HTTPS等。
下图是微软云计算的构画:
从图中可以看到,可以玩的概念貌似都玩上了,从SaaS, PaaS到IaaS。Azure作为一个云计算操作系统,提供Azure Platform,实现的是平台即服务。左侧,看到最终的一个大目标叫IT as a Service微软其实通过Azure这个平台,也在不断整合自己的力量。平台既可以作为SaaS等云服务的应用模式的基础,也可以与微软线下的系列软件产品相互整合和支撑。比如Visual Studio 2010为Windows Azure提供了专门的项目模型。,哈哈。
微软云计算的“三驾马车”
我们说Google公司有“三驾马车”:BigData, GFS以及MapReduce。Windows Azure Platform同样有“三驾马车”:Windows Azure、SQL Azure、Windows Azure AppFabric。Windows Azure可看成是云计算服务的操作系统;SQL Azure可看成云端的关系型数据库,接下去我们会在各种架构图中看到SQL Azure并对他做简单的介绍;AppFabric则是一个基于Web的开放服务,可以把现有应用和服务与云平台的连接和互操作变得更为简单。
Windows Azure Platform的组成
Windows Azure是一个云服务的操作系统,它提供了一个可扩展的开发、托管服务和服务管理环境。SQL Azure是以SQL Server 2008为主,构建在Windows Azure之上,运行云计算的关系数据库服务,是一种云存储的实现,并提供网络型的应用程序数据存储服务,简单地说就是SQL Server的云端版本。AppFabric作为中间件层,起到连接非云端程序与云端程序的桥梁功能。我觉得一个好的中间件就是要让开发人员可以把精力放在他们的应用逻辑上而不是在部署和管理云服务的基础架构上,不用去担心服务的部署和管理问题,你只要把你的东西丢给我,我中间件就给你动态部署,你需要了解的就是我给的接口信息。
架构:
说到云操作,一定离不开分布式的平台管理和运行机制。
service 流程简图
我们用户在彼端,我们要使用的app在云端。Azure platform接受我们的请求,包括传统的SOAP,现代一些的REST接口等等,然后在云端平台上接受并处理,用户只管租用这个平台来使用云端的服务,不需在本地下载这些services或者应用软件。
Azure内的监控师
“监控师”这个名字是我在看了Azure大大小小的框架结构后起的,这位监控师就是Fabric Controller。
Windows Azure被安装在数据中心的所有服务器中,并且通过定时和中控软件:Windows Azure Fabric Controller进行沟 通,接收指令以及回传运行状态数据等等,系统管理人员只要通过Windows Azure Fabric Controller就能够掌握所有服务器的运行状态。从这里看Fabric Controller这个系统在Azure的架构中起到了实时监控的作用。
Windows Azure环境除了各式不同的虚拟机外,它也为应用程序打造了分散式的巨量存储环境(Distributed Mass Storage),也就是Windows Azure Storage Services,应用程序可以根据不同的存储需求来选择要使用哪一种或哪几种存储的方式,以保存应用程序的数据,而微软也尽可能的提供应用程序的兼容性 工具或接口,以降低应用程序移转到Windows Azure上的负担。存储的部分也是一块很重要的内容,在这里不细说了,在后面我会给出一点引子,提供一些资料供大家自己学习。
Windows Azure不但是开发给外部的云应用程序使用的,它也作为微软许多云服务的基础平台,像SQL Azure或是Dynamic CRM Online这类的联机服务。
Fabric Controller
Fabric Controller是管理微软数据中心的Windows Azure计算资源的中控管理系统,它负责自动化的管理数据中心内所有的实体服务器,包含由用户要求的Windows Azure Guest OS的部署工作,定时的Hotfix修补,机器状态回报,以及管理不同版本的VM部署图像的复制等重要核心工作。我理解,Guest OS应该是用来接受和响应用户请求的Managers,Host是他们的Master。Windows Azure Host OS,它是一个特制版本的Hyper-V Server,负责实体服务器内的Hypervisor虚拟平台层,总管其上的Windows Azure Guest OS群,同时它内含一个Fabric Agent中控软件,以回报目前虚拟机的各项信息给Fabric Controller。
Fabric Controller本身也具有高可用性,并且有一个管理Fabric Controller的子系统(称为"Utility" Fabric Controller)来管理与监控Fabric Controller的运作。
Fabric Controller也处理虚拟机的Health Management工作,当Windows Azure Guest OS发生当机时,会由Fabric Controller自动选择不同的实体机器重新部署与启动。当应用程序提交即地更新(In-place upgrade)时,Fabric Controller也负责即地更新的协调工作,以保持应用程序在更新时仍可保持SLA(服务等级协议)所承诺的服务水平。
Windows Azure计算资源与管理框架
总的来说,Fabric Controller是管理存储数据的服务器的中控管理系统,其内部也有一个"Utility" Fabric Controller的子系统监控他自己,他自己也相当于是一个集群,有Master,有Manager,应该还有分布式协调器之类的东西来实现集群中的负载均衡等问题。
网络基础架构与应用程序部署模型
Windows Azure本身的设计是负责处理大量分散式计算的工作,并且符合云计算的特性,因此应用程序在Windows Azure上可以自由设置一个或多个运行个体(Computes Instances),并且利用Windows Azure平台的特性,应用程序可切割为处理用户界面服务的Web应用程序,以及专门处理背景计算或数据处理工作的服务应用程序(Service Application),后端则可以用Windows Azure Storages或是SQL Azure数据库来存储数据。这就相当于前台和后台的关系。
SQL Azure是Azure Services Platform这个平台之上的微软自己的东西。在Azure这个平台之上,微软也推出了新的Live或者Online的云端客户端,本地是不需要安装的。只要你付钱租用Azure这个云操作系统,你就可以用这些服务。这也符合PaaS的思想。
简单介绍一下SQL Azure。
SQL Azure是一个云的关系型数据库,它可以在任何时间提供客户数据应用。它基于SQL Server技术构建,但并非简单地将SQL Server安装在微软的数据中心,而是采用了更先进的架构设计,由微软基于云进行托管,提供的是可扩展、多租户、高可用的数据库服务。这里又谈到了一个新的概念,多租户。其实在谈及分布式框架的时候,如果设计到了云计算,那么SaaS,多租户这样的概念往往是和云计算捆绑出现的。
他其实在平台层实例了多个SQL Server数据库引擎,他们各有一套不被其他实例共享的系统和用户数据库,可以独立同时运行。他的底层框架是SQL Server Fabric,也是一个分布式框架,能实现负载均衡,备份恢复,数据容灾等功能。如下分别是客户端层,服务层,平台层,基础设施层。
再回到网络架构。为了处理单一应用程序多份运行个体的平衡负载,Windows Azure的Hypervisor层都有自带Windows Azure Load Balancer(LB),它会将连入应用程序的连接进行负载分配,以维持每个运行个体都有足够且合理的负载量。他相当于是一个分布式协调器,同样做这样的事的还是hadoop的zookeeper。
Windows Azure网络与计算资源部署架构
Windows Azure提供了一个叫做“Role”的概念,每个Role可以被认为是一段程序,与普通的应用程序不同的是这段程序可以同时在一台或者多台机器上运行。 每个Role可以有多个实例(Instance),每个实例就对应一台虚拟机。对同一个Role而言,它所有的实例执行的程序都是相同的。现在有两种类型 的Role:Worker Role(工作者角色)和Web Role(Web角色)。Web Role:是一个Web应用程序,它可以通过HTTP或HTTPS与外界通信,一般来说,Web角色响应请求,执行一个动作,然后等待下一个请求的到来。 Worker Role:是一种后台执行(Running On Background)的应用程序,运行.Net框架代码的后台进程应用程序。
前台发来的请求,经过LB处理,然后分送给后台,后台Web Role和Worker Role是两套不同的处理环境。Web Role相当于是个Web应用程序的用户服务端,接受并处理ASP.NET,PHP,JSP之类的请求。Worker Role是不带用户界面的处理大量计算工作的应用程序。它可以进行MapReduce型的分布式计算,也可作为处理高负载数据访问或运行商业逻辑的应用程序。MapReduce是一个编程模型,也可以说是个分布式数据处理模型和执行环境。它的计算密集型的数据分析能力很强,本身分为Map和Reduce两部分,他会尽量在计算节点上存储数据,以实现数据的本地快速访问,而这种data locality是他的核心特征。此外,MapReduce自己采用的是shared-nothing框架,所以他能实现失败检测,这意味着各个任务之间彼此独立,所以程序是并行的(这里可能讲的简单了一些)。
以上主要分析了Azure平台的两桃框架,以及简单介绍了下SQL Azure的框架,以及两种分布式协调器,Fabric controller和zookeeper,也谈到了MapReduce的计算模型。接下来谈一下他的存储。
存储服务(Storage Services)
这是最近的一篇SOSP上的关于Azure的paper,标题是Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency,讲的是它云存储的数据一致性。
WAS(Windows Azure Storage)目前用的是三种存储形式:Blob(files),Table(structured storage)以及Queue(message delivery)。就简单说一下这三种存储形式的实现情况。
BLOB:用来存储像是文件,图片,视频档,可执行文件,压缩档等二进制格式的文件,基本上它的存储单位就是文件,为了要让BLOB的功能应用更宽广,微软也在BLOB服务上开发了内容传递网络(Content Delivery Network)的服务,让BLOB可以作为大容量的文件或数据存储与供应的地方,以支持类似YouTube这样的大型Web应用程序的服务。
Table:是给具结构化数据的应用程序存储与管理的一种存储服务,它在Windows Azure存储区中会以Key-Value键值对方式存储,并且由Partition来切割在Windows Azure存储区的存储位置,它实际的数据是XML,通过REST API调用时,会需要依据SDK上的说明,自行建置XML的要求与解析回应的数据。
Queue:是一种FIFO(先入先出)的存储服务,它可以允许应用程序将消息存储到队列中排队,然后由负责处理的应用程序(通常是 Worker)由队列提取消息并处理以后,将消息由队列中移除。
存储具体可以见SOSP上Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency这篇paper。等我读懂了paper里内容的时候可能再编辑上来。
更多推荐
所有评论(0)