第4章微软云计算WindowsAzure提纲微软云计算平台微软云操作系统WindowsAzure微软云关系数据库SQLAzureWindowsAzureAppFabricWindowsAzureMarketplace微软云计算编程实践微软云计算平台传统企业和用户在开发和部署自己的应用程序时,主要有两种方式购买和维护自己基础设施(耗费大量的资金和维护精力);租用服务器或租用虚拟主机(后台服务器的控制权降低)微软云计算技术有效结合了两种方式优点云计算平台提供了可以通过互联网访问的基础设施开发运行在本地的应用程序时,用户也可以在云中存储数据或依赖其他的云计算基础设施服务WindowsAzure属于PaaS模式,平台包括一个云计算操作系统和一系列为开发者提供的服务(1)WindowsAzure云计算平台最底层,微软云计算操作系统,提供了一个在微软数据中心服务器上运行应用程序和存储数据的Windows环境(2)SQLAzure云中关系数据库,为云中基于SQLServer的关系型数据提供服务(3)WindowsAzureAppFabric为在云中或本地系统中的应用提供基于云的基础架构服务。部署和管理云基础架构的工作均由AppFabric完成,开发者只需要关心应用逻辑。(4)WindowsAzureMarketplace为购买云计算环境下的数据和应用提供在线服务WindowsAzure平台体系架构提纲微软云计算平台微软云操作系统WindowsAzure微软云关系数据库SQLAzureWindowsAzureAppFabricWindowsAzureMarketplace微软云计算编程实践WindowsAzure概述WindowsAzure提供托管、可扩展、按需应用的计算和存储资源,同时还提供云平台管理和动态分配资源控制手段。最新版本包含5部分(1)计算服务为在Azure平台中运行的应用提供支持(2)存储服务用来存储二进制和结构化的数据(3)Fabric控制器部署、管理和监控应用(4)内容分发网络CDN通过维持世界各地数据缓存副本,提高全球用户访问WindowsAzure存储中的二进制数据的速度(5)WindowsAzureConnect在本地计算机和WindowsAzure之间创建IP级连接WindowsAzure计算服务WindowsAzure计算服务可以支持运行有大量并行用户的大型应用程序WindowsAzure中,每个虚拟机运行一个64bit的WindowsServer2008,这些虚拟机由微软数据中心负责维护和管理,每个实例都运行在自己的虚拟机上用户只关心如何构建和配置自己的应用程序WindowsAzure能够自动虚拟出虚拟机WindowsAzure计算服务WindowsAzure应用程序包括WebRole实例、WorkerRole实例和VMRole实例(1)WebRole使基于Web的应用的创建过程变得简单(2)WorkerRole用来运行各种各样的基于Windows的代码(3)VMRole运行系统提供的WindowsServer2008R2镜像支持HTTP、HTTPS和TCP协议创建WindowsAzure应用时,可以任意结合使用WebRole、WorkerRole和VMRole实例WindowsAzure应用程序运行机制WindowsAzure存储服务WindowsAzure存储服务数据存储结构Blob数据类型存储二进制数据,可以存储大型的无结构数据,容量巨大,能够满足海量数据存储需求Table数据类型能够提供更加结构化的数据存储Queue类型和微软消息队列(MSMQ)相近,用来支持在WindowsAzure应用程序组件之间进行通信WindowsAzure存储服务1.WindowsAzureBlob用来存储大型数据对象,用于构建重量级、可扩展的应用程序1)Blob数据模型URI方式标记访问控制策略Blob两种形式(1)BlockBlob(2)PageBlobBlob的结构WindowsAzure存储服务2)BlobRESTInterface应用程序要访问Blob,可以利用系统提供的标准HTTPRESTPUT/GET/DELECT接口,对Blob执行操作(1)PUTBlob(2)GETBlob(3)DELETEBlob(4)COPYBlob(5)GETBlockListWindowsAzureBlob提供了Block接口来解决(用户上传大于64MB的Blob)这一问题。该方法的主要思想是分割重组Blob数据分割3)Block操作PUTBlock操作用于上传一个Block到云端,应用程序可以使用一个REST请求执行PUTBlock操作将Block列表信息(一般是BlockID)上传到云端来说明这些Block所属信息上传完毕后,可以从云端获取整个或部分BlobWindowsAzure存储服务2.WindowsAzureTableBlob适于存储某些无结构数据,不适于存储结构性很强的数据Table结构包含数据的基本单元是具有层次结构的实体(Entity),每个实体具有若干属性(Property)WindowsAzure存储服务Table的结构2.WindowsAzureTable1)Table数据模型存储账户——Table——实体——属性每个Table由PartitionKey和RowKey两个属性一起唯一地标识一个Table中的实体传统的关系数据库有严谨的数据库设计模式和查询模式,往往需要在DBMS上耗费很多的资源对关系表进行维护和管理,WindowsAzure的这种表结构的存储机制没有固定模式,也不支持SQL查询语言,仅仅是简单的层次关系,在数据的管理上简单便捷且不耗资源WindowsAzure存储服务属性类型说明Binary最多可达64KB的字节流Bool布尔值DateTime64bit的UTC时间值,值的范围是1/1/1600到12/31/9999Double64bit的浮点值GUID128bit的全局唯一的标识符Int32bit整数Int6464bit整数String用UTF编码的字符串,值可达64KB2.WindowsAzureTable2)分割Table数据的颗粒化取决于应用的特征Table中的实体进行划分时,分到相同分区的实体将被存储在一起选取重要的属性作为PartitionKey,保证查询和扩展效率统一WindowsAzure存储服务2.WindowsAzureTable3)对Table编程在.NET应用程序中使用Table,开发者可以使用ADO.NET数据服务,Table支持创建、获取、删除Table(或实体)、对实体进行更新实例:利用ADO.NET数据服务的API编程,假如在某个存储账户下创建一个名为“NEWS”的Table,并在其上做相应的操作;操作步骤(1)定义表NEWS的模式(2)创建表NEWS(3)向NEWS中插入一条新闻(4)获取表中新闻的列表(5)更新表中的一条新闻(6)从表中删除新闻4)WindowsAzureTable一致性模型保证数据的有效性、一致性和正确性;一致性模型单表一致性跨表一致性WindowsAzure存储服务3.WindowsAzureQueueQueue可以用来在应用程序各个部分如WebRole实例和WorkerRole实例间进行通1)Queue通信机制WebRole和WorkerRole之间进行通信的详细过程(1)接受任务(2)消息入队(3)消息出队(4)任务执行(5)消息删除WindowsAzure存储服务Queue通信机制3.WindowsAzureQueue2)用Queue构建云端应用程序的优点(1)由于应用程序各个部分之间松散耦合,应用程序可以根据业务量对各个部分进行扩展(2)使用Queue可以更加灵活地构建应用程序(3)提供了缓存机制来处理突发流量及应用程序组件失效3)WindowsAzureQueue数据模型Queue服务定义了参数(1)MessageID(2)VisibilityTimeout(3)PopReceipt(4)MessageTTLWindowsAzure存储服务3.WindowsAzureQueue(4)存储队列REST接口Queue级别的HTTP/REST操作命令:CreateQueue、DeleteQueue、SetQueueMetadata和SetMetadata消息级别的HTTP/REST操作PutMessage——向指定的队列末尾添加一个新的消息,它包括三个参数:QueueName、Message、MessageTTLGetMessages——获取指定队列中最前端的N个消息,该接口有三个参数:QueueName、NumOfMessagesN和VisibilityTimeoutTDeleteMessage——从队列中删除消息,包括QueueName、MessageID、PopReceiptPeekMessage——从指定队列的前端获取前N个消息,参数为QueueName和NumOfMessagesNClearQueue——删除指定队列的所有消息WindowsAzure存储服务WindowsAzureConnect3.WindowsAzureConnect本地环境和WindowsAzure环境建立基于IPsec协议的连接Connect不是一个成熟的VPN(VirtualPrivateNetwork),只是一个简单的解决方案,Connect创建完成(1)WindowsAzure应用能够直接访问本地的数据库(2)WindowsAzure应用能够区域连接到本地环境IPsec连接WindowsAzureCDN目的:提高访问性能注意:Blob所存放容器都能够被标记为Private或PublicREAD“Private”容器中的Blobs,所有存储账户的读写请求都必须标记PublicREAD型Blob,允许任何应用读数据用户第一次访问Blob时,CDN存储了Blob的副本,存放的地点与用户在地理位置上比较靠近。当这个Blob被第二次访问时,内容将来自于缓存,而不是来自于离它位置较远的原始数据Fabric控制器Fabric控制器是一个分布式应用,拥有计算机、交换机、负载均衡器等各种资源Fabric控制器作用很广,它可以控制所有运行的应用Fabric控制器在创建VMs后,还监控VMs针对WebRole和WorkerRole,Fabric控制器能够管理他们每个实例中的操作系统,包括更新操作系统补丁和其他操作系统软件WindowsAzure应用场景1.创建可伸缩的Web应用应用负载变化十分显著,如在线售票系统、视频网站WindowsAzure上创建这类应用,组织机构可以根据需要扩充和缩减实例的数量。用户可以使用WebRoles和Tables在WindowsAzure上创建一个可伸缩的Web应用可伸缩的Web应用WindowsAzure应用场景2.创建并行计算应用银行金融建模、电影特技效果渲染、医药公司的新药开发等这些应用,往往需要使用并行计算使用WorkerRoles创建并行计算应用,WorkerRole实例同时运行并行的作业;WindowsAzure对实例的运行时间施加影响,每个实例都能够运行任意数量的作业WindowsAzure应用场景3.创建后台处理的Web应用很多情况下,可访问Web的软件需要启动运行在后台的任务,把应用的请求和响应部分独立开来实例:利用WindowsAzure创建视频共享的Web应用时,需要接受来自浏览器的请求,其中有的请求是上传视频,上传过程中,让用户处于等待状态是不合理的。这时接受浏览器请求的应用应该能够执行一个后台任务完成上传视频的操作WindowsAzure应用场景4.创建本地或者托管应用的云存储WindowsAzure提供云存储