`
zdw624ma
  • 浏览: 13194 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

现实世界:Windows Azure角色的启动生命周期

 
阅读更多

现实世界:Windows Azure角色的启动生命周期
2011年05月20日
  公告 :本博客为微软云计算中文博客 的镜像博客。 部分文章因为博客兼容性问题 ,会影响阅读体验 。如遇此情况,请访问 原博客。
  这篇文章的作者是Cory Fowler [@SyntaxC4 ]. Cory自称为"开发即服务"。它是一个技术团队的领导者、指导者和演讲者,他乐于和别人分享他对软件开发的激情。基于对Windows Azure(微软的云计算平台) 的集中研究,Cory已经被授予微软MVP 。他已是的云计算的权威,同时也开发多种解决方案包括而不局限于网站(用ASP.NET MVC & Silverlight)、Windows Phone 7应用程序(用Silverlight & XNA)和其它的使用C#编程语言的解决方案。Cory在加拿大多伦多的ObjectSharp 当顾问。 当你开始部署应用程序到Windows Azure时,你会发现应用程序被部署时需要比Windows Azure Guest OS Base Image (阅读:怎样改变Windows Azure上的客户操作系统 )上提供的更多的功能性。Windows Azure SDK 1.3可以实现这个,这就是所谓的启动任务 ,还与SDK 1.3一起介绍了Full IIS Support,它的优先级别高于遗留(但仍具功能性的)的托管的Web核心部署模型(阅读:新的完全IIS功能:与托管的Web核心的差异 )
  就像一个ASP.NET Web窗体开发人员学习ASP.NET页面生命周期 ,对一个为Windows Azure建立应用程序的开发者来说了解角色启动生命周期 是很重要的,即他们什么时候在创建启动脚本和利用Windows Azure虚拟机角色之间做决定。 在Windows Azure [SDK 1.3]上的角色启动过程中有一些参与者。请注意我只是说Full IIS Support中的参与者(这不是托管的Web核心)。
  启动任务  在Windows Azure中一个启动任务是一个在云服务的定义文件(.csdef)中被引用的命令行可执行文件。当一个部署上传到Windows Azure,Windows Azure平台的一个被称作结构控制器的组件读取定义文件来为你的部署分配必要的资源。一旦这个环境建立,结构控制器初始化角色启动过程。
  为了更好地理解启动任务,让我们深入到云服务定义文件的"任务"元素。
  
  
  
  
  
  
  
  
  CommandLine属性  这里是当启动任务运行时被执行文件的名称。这个脚本或可执行程序在角色里如何运行将在executionContext和 taskType里介绍。
  ExecutionContext属性  启动任务的executionContext属性定义了脚本或可执行程序文件在一个特定的角色里运行的权限水平。这里有两种类型的执行文本: Limited:在与角色运行相同的权限下运行脚本或可执行文件
  Elevated:享有管理特权来运行脚本或可执行文件
  TaskType属性   启动任务的taskType属性定义了一个启动任务过程是怎样被执行的。TaskType是启动过程的时间长短的关键因 素。在这背后的原因是不同任务类型要么同步要么异步。很显然同步作业完成需要更长的时间来执行,因此注意你的安装的时间长度,因为启动任务的执行不应超过 5分钟。这里是三种不同类型的启动任务: Simple(默认):(同步)任务启动并且实例被阻塞,直到任务完成。(注意:如果任务失败,实例被阻塞并且启动失败)
  Background:(异步)启动任务进程并且继续角色启动。(注意:触发并遗忘。为了调试请一定要记录运行过程)
  Foreground:(异步)任务被执行但是在foreground任务退出之前不允许角色关闭。
  IISConfigurator.exe   IISConfigurator进程是一个可执行文件,在计算模拟器和云里的Windows Azure环境里都能找到。IISConfigurator.exe负责通过站点节点迭代增加和配置必要的站点(虚拟目录和应用程序)、端口和IIS里的 主机头。我以前写了一个帖子讨论计算模拟器里的IISConfigurator.exe 。
  [Web/Worker]Role.cs : RoleEntryPoint 在Web或Worker Role里你会发现一个继承自RoleEntryPoint的类。RoleEntryPoint公开3个事件OnStart、 Run和 OnStop,这些方法用于执行角色的整个生命周期的任务。稍后我在这个帖子里更详细地解释了这些事件。 让我们看一看在部署我们的托管服务时Windows Azure经历的过程。
  当你向Windows Azure上传你的云服务包和云服务配置时整个过程就开始了。(为了配置你的应用程序,上传你的部署到Blob存储是一个好的做法。这使得你能够保持你的部署版本并手上保留有备份以防托管服务需要回滚到先前的版本。)
  接下来就像云服务定义中描述的那样Fabric Controller着手工作来为你应用程序检索必要硬件。一旦Fabric Controller找到了必要硬件就为你的托管服务分配必要的资源,适当的Guest OS Image被部署到服务器并初始化Guest OS Boot过程。
  
  从这里事情变得有趣起来。
  如果当前角色包含云服务定义的一个开始节点,这个角色以你的云服务定义中安排好的顺序开始执行每个任务。取决于TaskType(上面解释了),这些启动任务同步(simple)或异步(background, foreground)运行。
  当"Simple"(同步)启动任务执行完成,这个角色开始它的启动生命周期的下一个阶段。在生命周期的这个阶段IISConfigurator进程被异步执行,同时(或者不久以后)OnStart事件被激发。
  一旦OnStart事件完成,角色应该是在准备 状态并开始接收来自Load Balancer的请求。在这时候Run事件被激活。即使Run事件不在WebRole.cs代码模板里。你可以重写这个事件并提供一些事件来执行。 Run事件常用于worker role,如果没有工作要做,它被实现为一个周期性地调用Thread.Sleep的无限循环。
  经一段长时间的服务请求,这时候很可能出现角色被回收或者不再被需要并且关闭。这将激活OnStop事件来处理一些必须的角色清理,例如将Diagnostics数据或永久性文件从交换区转移到Blob存储。注意到OnStop方法没有时间限制,因此明智的做法是当你的角色仍然正常并且没有试图关闭时周期性地转移重要的数据。
  在OnStop事件退出之后(要么代码执行完成要么超时),Role开始停止进程并终止Job对象 。一旦Job对象被终止,角色重启并再一次遵照上述的启动生命周期执行。知道这一点很重要因为你的启动任务可能在相同的Role上被多次执行,为此你的启动任务需要是幂等的 ,这非常重要。 作为软件开发人员我们都知道所谓的"Happy Path",这一术语用来描述一个过程的一切都是按计划发展的。然而,在现实世界中,没有过程可以保证这一点,我们需要知道有可能出错的情况。
  这里快速列出了在启动生命周期期间的潜在问题: 启动任务可能执行失败
  启动任务可能永远没法完成
  IISConfigurator.exe可能覆盖启动任务对IIS的修改
  IISConfigurator.exe和OnStart可能存在竞争
  启动任务和OnStart可能存在竞争
  启动过程可能不是幂等的
  这里有很多方法可以帮助你在启动过程中避免竞争状态。典型的做法是对资源(被启动过程中的特定的项目所影响的)进行制衡。另外可以做的是新建一个VM角色 。
  VM角色是VHD上的一个Windows Server 2008 R2 Image,在VHD上配置所有的需要安装在你的角色上的组件。你还需要安装Windows Azure集成组件并用sysprep进行泛化。
  在以下条件下VM角色是一个好的方法: 你的启动任务影响你的部署时间
  应用程序安装是容易出错的
  应用程序安装需要手工交互
  我将在其它博客文章里介绍更多关于VM角色,因为它本身就是一个足够大的话题。
  一旦你配置了你的VM角色实例,它通过使用csupload命令行工具或使用Visual Studio里的Cloud Tools上传到云。这个新建的VM Role image现在被预分配代替一个Microsoft's Guest OS Images。因为映像被认为是按需上传的,所以启动任务在VM角色里就不被支持了。 知道你所做的事情的生命周期非常重要。在某些情况下,你可以常回过头来重新看一下这些内容来帮助你理清思路。
  特别感谢:Steve Marx 、David Murray、 Daniel Wang、 Terri Schmidt、 Adam Sampson 和(我的兄弟  )Corey Sanders(来自 Windows Azure 团队)在百忙之中抽出时间来确保这些信息都是准确的和完整的。
  本文翻译自:
  http://msdn.microsoft.com/en-us/library/hh127476.a spx
分享到:
评论

相关推荐

    走进云计算Windows Azure实战手记光盘

    走进云计算:Windows Azure实战手记 朱明中 水利水电出版社 《走进云计算》是为微软Windows Azure云计算平台而编写,将带来Windows Azure平台的功能以及开发的方式等各式各样的信息,帮助您了解微软的云计算平台...

    Windows Azure入门教学系列

    ASP.NET Web Role 是 Windows Azure 中的一种角色,用于托管 Web 应用程序。在本教程中,我们创建了一个 ASP.NET Web Role,用于托管我们的 Web 应用程序。 知识点6: Windows Azure 模拟器 -----------------------...

    Windows+Azure实战

    1. **Windows Azure简介**:Windows Azure是由微软提供的全球分布式云平台,它提供了计算、存储、数据库、网络等一系列服务,支持多种操作系统、编程语言和工具。Azure的主要优点在于其弹性和可扩展性,允许用户根据...

    Windows Azure

    ### Windows Azure 应用程序服务平台详解 #### 一、Windows Azure 概述 Windows Azure 是由微软提供的公有云应用程序平台,在中国大陆区域的服务由世纪互联运营。该平台旨在为企业和个人开发者提供灵活、强大的...

    70-583 Windows Azure 题库

    - **队列名称规则**:Windows Azure Queue服务对队列名称有特定的要求,例如长度限制、只允许小写字母、数字以及连字符等。 - **调试技巧**:当遇到初始化连接失败的情况时,首先检查队列名称是否符合规定。 ### ...

    Microsoft Windows Azure Platform 白皮书

    Windows Azure 平台由三个主要组件构成:Windows Azure(计算服务)、SQL Azure(数据库服务)和Windows Azure Storage(存储服务)。这三者协同工作,为企业提供灵活、可扩展且高可用的云环境。 1. Windows Azure...

    Windows Azure使用入门 第二课:建立自己的网站.pdf

    ### Windows Azure 使用入门:建立自己的网站 #### 一、Windows Azure 中的网站概念 随着互联网技术的发展,网站已经成为企业和组织对外展示形象、提供服务的重要窗口。传统的网站搭建往往需要自行购买服务器、...

    实战 Windows Azure:微软云计算平台技术详解

    ### 实战 Windows Azure:微软云计算平台技术详解 #### 一、引言 随着信息技术的不断发展,云计算已经成为企业和个人处理大规模数据的重要工具。本书《实战 Windows Azure:微软云计算平台技术详解》由微软Windows ...

    AZ-104: Microsoft Azure Administrator-615Q

    3. **计算**:掌握创建和管理 Azure 虚拟机(VM)的基本操作,包括选择合适的 OS 映像(如 Windows Server 2019),配置可用性设置或可用性区域以提高服务的容错能力。在问题 2 中提到,为了确保即使单个数据中心不...

    Windows Azure技术简介

    ### Windows Azure技术简介 #### 一、概述 随着移动互联网时代的到来,企业面临着前所未有的机遇与挑战。一方面,用户数量激增,应用需求多样化;另一方面,传统的IT系统往往难以适应这种变化,导致成本上升、效率...

    windows Azure开发的一个云程序

    Windows Azure,现称为Microsoft Azure,是微软提供的一个全球分布式云计算平台,用于构建、部署和管理应用程序和服务。在本文中,我们将深入探讨如何使用Azure开发一个简单的云程序。 首先,了解Azure的基础架构至...

    Azure:使用Azure认知服务构建智能应用.docx

    Azure:使用Azure认知服务构建智能应用.docx

    Windows Azure Platform Overview( 讲稿)

    - **计算服务**:Windows Azure 提供了三种类型的实例——Web 角色实例、Worker 角色实例和VM 角色实例,以满足不同场景下的需求。 - **Web 角色**:专为Web应用程序设计,能够处理HTTP请求。 - **Worker 角色**:...

    IoT平台软件:Azure IoT二次开发-AzureIoTEdge技术详解

    IoT平台软件:Azure IoT二次开发_AzureIoTEdge技术详解.docx IoT平台软件:Azure IoT二次开发_AzureIoTHub服务深入解析.docx IoT平台软件:Azure IoT二次开发_AzureIoT中心与设备的双向通信.docx IoT平台软件:Azure...

    Windows Azure使用入门 第一课:创建虚拟机.pdf

    ### Windows Azure 使用入门:创建虚拟机 #### 一、Windows Azure 虚拟机概述 在探讨如何在 Windows Azure 平台上创建虚拟机之前,我们首先需要了解什么是 Windows Azure 虚拟机以及它为何重要。 **Windows Azure...

    微软官方出品windows8风格动画PPT《WINDOWS AZURE》.pptx

    Windows Azure是微软公司推出的一款基于云计算的服务平台,它提供了丰富的计算和存储能力,旨在帮助开发者构建、部署和管理应用程序和服务。Windows Azure的设计理念深受Windows 8风格的影响,强调简洁、现代和高效...

    第 4 天 — Azure 开放 AI:设置 Azure AI 搜索解决方案.docx

    ### Azure开放AI:设置Azure AI搜索解决方案 #### 一、概览 在当前技术发展背景下,人工智能(AI)已经成为企业提升竞争力的关键要素之一。作为云计算领域的领军者之一,微软不断推出创新工具和服务来帮助企业实现...

    Windows Azure系列课程视频汇总

    Windows Azure 入门系列课程(1):Windows Azure 概述 http://www.aboutyun.com/thread-5777-1-2.html Windows Azure 入门系列课程(2):Windows Azure Storage 简介 2008年10月27日,在洛杉矶举行的专业开发者...

    微软WindowsAzure云应用开发实践整理.pdf

    微软云计算平台包括三个主要组件:Windows Azure、SQL Azure和Windows Azure Platform AppFabric。Windows Azure是一个云计算服务的操作系统,负责虚拟化计算资源管理和智能化任务分配;SQL Azure是一个云中的数据库...

    Windows Azure备份容灾服务.docx

    1. **离场数据保护**:Windows Azure Backup在Windows Azure的云存储中加密并保存备份,提供额外的数据安全层。即使面临现场灾难,如火灾,也能确保数据安全。它通过自动化的离场保护功能,减少了对现场或离场备份...

Global site tag (gtag.js) - Google Analytics