下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Windows Azure平台介绍以及存储服务的特点

作者:课课家教育     来源: http://www.kokojia.com点击数:1570发布时间: 2018-01-02 11:00:39

标签: 云计算数据库Windows

  学习一门技术,首先你要知道它是干什么的?既然这样,我们现在就来了解一下Windows Azure的技术特点,能够解决什么问题?
  首先我们来看一看Windows Azure平台在微软产品大家族中的定位,并且把它和大家所熟悉的产品作个比较。
  Windows Azure平台介绍以及存储服务的特点_云计算_数据库_Windows_课课家教育
  由上图可知,无论你的目标面向的是桌面,是服务器,还是云,我们都为你们提供了统一的开发和管理模式。
  Windows Azure,正如同桌面操作系统Windows和服务器操作系统Windows Server一样,是一个云端的操作系统。
  sql server是我们的服务器数据库产品,而SQL Azure则是我们的云端数据库产品。AppFabric作为中间件层,将起到连接非云端程序与云端程序的桥梁的功能。
  开发人员可以使用同一套技术:.NET(包括Silverlight),或者Win32,同时针对桌面,服务器,以及云,开发程序,而不需要针对某个平台学习专门的技术。Visual Studio和Expression Studio为开发人员提供了强大的工具支持。
  接下来,我们来看看Windows Azure平台自身的产品结构。
  操作系统_云计算_数据库
  上图中,最底层的是Windows Azure这个操作系统。它提供了Compute(计算),Storage(存储),以及Manage(管理)这三个主要功能。此外,还有对用户而言透明的Fabric。Fabric包含负载平衡,硬件抽象,等众多功能。然而一般而言,用户并不需要了解Fabric内部是如何工作的,就可以充分利用Windows Azure的各种特性。
  在这之上,我们还提供了中间件产品AppFabric,数据库产品SQL Azure,以及其他一些building block产品,例如目前处于CTP阶段的Dallas。开发人员可以直接在Windows Azure之上进行开发,也可以利用AppFabric,SQL Azure等产品的各种特性。
  Windows Azure的计算功能可以这样被使用:
  1)作为一个部署服务的平台
  用户可以在Windows Azure上部署自行开发的服务,例如使用WCF开发的Web Service,使用WF开发的工作流,使用ASP.NET开发的运行在服务器上的网站,等等。
  2)作为一个软件分发平台
  用户可以使用Windows Azure来分发自己的软件,例如0点击(无需用户操作)部属的Silverlight,XBAP,AJAX程序,但点击(Click Once)部署的WPF和Windows Forms程序,甚至是提供一个安装包的下载链接。当然,为了充分利用云的特性,这些软件常常需要和部署在云端的服务进行交互。
  3)作为一个一般的分布式计算平台
  Windows Azure也可以作为一个一般的分布式计算平台来使用。Fabric提供了极其强大的负载平衡的支持,所以可以很好的执行一些极为复杂的并行算法。Windows Azure支持多种开发技术,例如.NET,Win32,甚至是java,从而满足大多数客户对分布式计算的需求。
  针对开发人员,Windows Azure提供了一种叫做role的概念。每个role就可以被认为是一段程序,只是这段程序可以同时在一台或者多台机体上运行。每个role可以有多个实例(instance),每个实例就对应一台虚拟机。对同一个role而言,它所有的实例执行的程序都是相同的。
  当前我们提供了两种类型的role,分别是Web Role和Worker Role。通常Web Role被用于部属服务以及分发软件,Worker Role则被用于执行分布式计算。

Windows_操作系统_云计算
  管理员可以很轻松的通过修改配置文件的方式来管理每个role需要运行几个实例。运行多个实例可以让你的程序更快地处理请求和执行任务,但是也意味着你需要支付更多的费用。当你不再需要那么多的计算资源的时候,你可以通过修改配置文件来减少实例的数量,从而支付较少的租金。这也正是云计算的一大优势,如果不使用云计算,你必须自行购买大量的硬件来处理更多的请求和执行更多的任务,当你不再需要那么多的计算资源的时候,这些硬件也就白白浪费在那里了。
  Windows Azure提供了四种存储服务:
  1)Blob
  初学者可以把blob比作文件系统。是的,它确实和文件系统有非常多的相似之处。Blob storage有两个概念:
  · Container:可以类比成文件夹
  · Blob:可以类比成文件
  和文件系统一样,用户可以针对每个container设置访问权限,可以对某个blob进行加锁(lease)从而防止concurrency问题,还可以使用诸如创建,删除,复制,备份,等众多功能。
  从存储结构上来说,我们提供了两种类型的blob:
  · Block blob:其存储方式类似于传统的文件系统中的簇(cluster)的概念。一个blob被分成一个或多个block进行存储。
  · Page blob:Page blob对随机读写进行了优化,大家可以把它类比成大型文件,例如.vhd和.mdf文件。
  2)Table
  千万不要把table storage和关系型数据库混淆起来。Windows Azure的table storage提供了一种结构化的存储方式。通俗来说,一个table可以被想象成一个XML文件。在xml文件中我们存放各种各样的数据,在一个table中我们也可以存放各种各样的entity。同一个table可以存储结构完全不同的两个entity,这和关系型数据库中需要对每张表制定统一的schema是不同的。
  Table storage的可变的schema充分体现出了其灵活性。例如,你的业务需要扩展,需要往数据结构中添加新的字段,你可以在完全不修改table schema,完全不影响现有entity的情况下,对新的entity添加新的字段。如果你的程序可以被二次开发,第三方开发人员也完全可以在不影响你的程序所需要的entity的情况下,在同一张表中存储他们的程序所需要的,结构不同的entity。
  3)Queue
  Queue提供了一种先进先出的存储方式。它通常被用于各种不同的程序间的通信。例如一个经典的应用场景:Web Role接受用户请求,针对每个请求,在一个queue中创建一条消息(message)。Worker Role则不断的从queue中取出消息,并且一一处理。
  4)Drive
  目前尚处于beta阶段的drive storage让开发人员能够使用标准的NTFS API读写文件。一个drive可以被挂接(mount)到某个特定的实例上,当作该实例对应的虚拟机的一块硬盘使用。由于drive在后台是由page blob实现的,因此你往drive中写入的文件也会自动被写入后台的page blob。这样一来数据便得到了持久化,即使万一运行当前实例的虚拟机出了问题,你还可以在其它实例中再次挂接这块虚拟硬盘,数据并不会丢失。
  需要注意的是,当前一个drive在同一时间只能被单个实例挂接。如果你需要在不同的实例中同时访问文件,还是推荐使用blob。Dive更常被用于移植现有的那些需要执行大量I/O操作的程序。
  Windows Azure数据存储服务建立在Windows Azure云计算平台之上,它充分利用了Windows Azure云计算平台的优势,具有以下特点:
  1)高安全性
  用户可以自定义数据的安全级别,比如公有数据或私有数据。任何人都可以访问公有数据,但对私有数据用户必须通过授权和验证才可以访问。授权和验证是通过访问密钥来实现的,只有拥有访问密钥的人才可以访问私有数据。
  2)高性能
  Windows Azure存储服务通过对数据的分散存放和动态负载均衡从而大大加快了数据访问速度。如果访问量很大,系统会自动把用户请求转移到访问量小的服务器上。如果所有服务器的访问量都很大,系统会自动把数据再进行划分或自动增加服务器,从而保证了数据访问的性能不会因为访问量的加大而降低。而不会像传统的数据存储系统那样,随着用户访问量的加大,数据访问时间也加大。
  3)海量存储
  每个数据存储账号可以存放大到100TB的数据,而每个订阅账号可以有1~5个数据存储账号,也就是说,每个订阅账号总共可以存放大到500TB的数据。如果需要更大的存储空间,用户可以提出特别的申请。
  4)高可用性
  Windows Azure通过对数据的复制存放来保证数据的高可用性。每个数据被保存至少3次,所以一个拷贝的丢失或出错不会影响整个数据的可用性。所以用户不用担心数据丢失或因为保存数据的服务器宕机而造成无法访问数据。
  5)可随时随地访问
  每个存放在Windows Azure存储服务中的数据都有一个URL定位符,Windows Azure应用程序可以从数据中心内部访问,本地应用程序也可以使用RESTful的接口从企业内部访问,用户甚至还可以通过运行在移动设备上的应用程序来访问数据。
  6)弹性伸缩
  Windows Azure数据存储服务的最大优势之一是按需使用,按使用付费。用户可以根据实际的数据存储量和用户访问量来随时增加或减少所需要的存储空间,从而不会因为用户访问量的不断变化造成数据存储空间的不足或浪费。
  7)支持多种数据存储类型
  1.大二进制对象(Blob):它供存放非结构化的数据文件之用,比如文档、图像和影像文件。
  2.表格(Table):它供存放结构化的数据之用,比如商品信息包括商品名字、价格、库存量等。虽然在使用上表格和关系型数据库中的表非常相似,但它不是关系型表。表格中包含的数据是一系列带有属性的实体记录。表格没有固定的模式(Schema),所以每个实体记录可以有不同的属性,其属性可以是多种数据类型,比如int、string、bool或datetime。应用程序可以使用OData定义的简单查询语言来访问表格中的数据。表格可以存储大到亿万个实体记录或太字节(terabyte)数据。
  3.消息队列(Queue):它主要是供Web role 和Worker role 之间异步通信用的。比如用户通过Web Role提交了一个需要大量计算的任务,Web Role先把一个描述如何完成该任务的信息写到消息队列里,然后在后台运行的Worker Role可以把该信息从消息队列里拿过来进行处理。这种松耦合的结构大大提高了应用程序的整体处理性能并易于扩展。
  4.驱动器(xDrive):它的主要作用是为Windows Azure应用程序提供一个NTFS文件卷,应用程序可以通过标准的NTFS API来访问存储的数据。通过驱动器存储方式,我们可以把现有的使用NTFS文件系统和标准I/O库的应用程序更为平稳地迁移到Windows Azure上。
  管理员可以直接使用Windows Azure门户来管理他们的程序。门户提供了创建,删除项目,创建,删除,更新部署,等众多功能。此外,为了帮助大家更灵活地管理部署在Windows Azure上的程序,我们还提供了Management API,让开发人员自行开发程序来管理他们的部署。
  今后,我们还会将System Center与Windows Azure集成,从而使得大家可以使用同一套工具,同时管理企业内部的服务器,以及云端的资产。
  介绍完了操作系统,让我们再来看看操作系统之上的中间件。Windows Azure平台的中间件名叫AppFabric。它提供了两大服务:
  1)Service Bus
  Service Bus可以被用于将本地的服务暴露给Internet。大多数的企业都拥有自己的局域网,为了解决IP地址不足的问题通常都设置了NAT,因此每台server对外都没有一个确定的地址。出于安全性考虑,防火墙往往都限制了大多数的端口。这就使得要在Internet上访问部署在本地的服务变得相当困难。
  Service Bus正是为了解决这一问题而产生的。Service Bus作为一个中间人,你的服务和客户端全都作为Service Bus的客户端与之进行交流。因为Service Bus不存在NAT问题,所以你的服务和客户端都很方便地能与之通信。Service Bus在最极端的场合下只需要你的服务器暴露out bound的80或443端口,换句话说,也就是你的服务器能够以HTTP(S)协议访问Internet。只要这样,你的服务就能连上Service Bus。因此,它对防火墙的要求可以说是相当低的。
  2)Access Control
  安全永远都是程序要需要考虑的第一要素,在云中,权限管理往往要比在企业内部来的困难。这是因为你无法直接使用诸如活动目录之类的产品来统一管理你的程序的访问控制。Access Control正是为了解决这一问题而产生的。
  Access Control支持federated authentication和authorization。例如,你可以要求你的用户通过企业内部的Active Directory Federation Server (ADFS)进行身份验证,使用他们的域帐号登录,将验证后的claim传给Access Control,然后根据预先在Access Control中设定的规则来给与或者否认他们访问你的服务和资源的权限。当然,Access Control也支持各种其他的身份验证方式。通过对诸如WRAP和SAML之类的标准协议的支持,Access Control体现出了良好的跨平台型。
  今后,我们也可能将现今Windows Server AppFabric中的功能移植到Windows Azure platform AppFabric中来。Windows Server AppFabric中的分布式缓存,以及WCF/WF管理的功能,都会对开发人员和管理员带来各式各样的益处。
  SQL Azure是一个部署在云端的关系型数据库引擎,它支持SQL Server中绝大多数和开发有关的功能。作为一个部署在云端的数据库引擎,绝大多数的管理工作都由微软为你完成,因此你不用担心任何诸如备份,集群,等管理方面的问题,我们的SLA (Service Level Agreement)确保了你的数据库服务器平均每个月将有99.99%的时间在线。也正是因为这点,目前我们暂时没有暴露太多的管理功能给用户。
  开发人员可以使用现有的知识,例如ADO.NET Entity Framework (EDM),LINQ to SQL,甚至是传统的DataSet,ODBC等技术,来访问位于SQL Azure上的数据。绝大多数现有的数据访问程序只需要修改一个连接字符串,便能顺利访问SQL Azure。
  SQL Server 2008 Management Studio R2(目前为CTP版本)针对SQL Azure也提供了很强大的支持。目前的CTP版本已经支持根据现有的数据库,生成能在SQL Azure上运行的T-SQL脚本,从而方便大家将数据库迁移至SQL Azure。今后的版本中会对SQL Azure提供更多更强大的支持。
  Windows Azure平台还会推出更多的服务供大家使用。例如,现在处于CTP阶段的Dallas,就是一个部署在云端的数据分析服务。它支持和常用的工具(例如Excel 2010的PowerPivot)结合起来使用,从而让用户能够使用自己所熟悉的工具来分析位于云端的数据。
  根据以上的介绍,相信你对Windows Azure有一点的了解了,希望我们的分享对您的学习有所帮助。阅读更多内容,欢迎登陆课课家教育。

赞(24)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程