Windows Azure Cloud Service (10) Role的生命周期-阿里云开发者社区

开发者社区> zting科技> 正文

Windows Azure Cloud Service (10) Role的生命周期

简介:
+关注继续查看

Windows Azure Platform 系列文章目录

 

  在上一章内容中,我们提到了Windows Azure会依次调用角色(Role)实例的OnStart()方法和Run()方法。

  在本节中我们会对Role的生存周期进行进一步的了解。首先,让我们走到幕后看看一个Role Instance是怎么被发布到虚拟机上并启动起来的。

  

  Role在虚拟机上部署和运行的过程

  以下是角色实例(Role Instance)发布和启动的一个简要过程。

  1. Windows Azure在服务器池中选择一个有足够CPU内核数的宿主服务器,或者启动一个新的满足需求的宿主服务器
  2. Windows Azure将云服务包和配置文件复制到宿主服务器上。宿主服务器上的一个宿主代理程序(Host Agent)会启动虚拟操作系统。
  3. 在虚拟操作系统上有一个名为WaAppAgent的代理程序。这个代理程序负责配置虚拟操作系统并启动一个名为WaHostBootstrapper的进程。
  4. 如果角色上定义了启动任务,WaHostBootstrapper会运行这些启动任务并等待所有标记为Simple类型的启动任务正确执行
  5. 如果角色是Web 角色(Web Role),WaHostBootstrapper会启动IISConfigurator来配置IIS
  6. 如果角色是辅助角色,WaHostBootstrapper启动一个名为WaWorkerHost的进程;如果角色是Web角色,WaHostBootstrapper启动一个名为WaIISHost的进程
  7. 在上述进程中,载入角色的程序集并搜索其实施的RoleEntryPoint子类
  8. 调用OnStart()方法
  9. 调用Run()方法。同时,该实例被标记为"Ready"并加入负载平衡器
  10. 如果Run()方法退出,OnStop()方法被调用。WaWorkerHost/WaIISHost结束运行,实例重启
  11. WaHostBootstrapper开始循环监测实例的运行状态

  Web Role不一定需要实施RoleEntryPoint类,这是因为Web Role最终是部署在IIS上,是IIS在接受和转发用户的请求。

  这也是为什么我们如果把WebRole.cs从web项目中删除不会影响到网站运行的原因。

  但是,如果您的Web Role实施了RoleEntryPoint类,您要确保Run()方法不退出,否则实例会重启。

 

  

  角色实例(Role Instance)的状态

  Role Instance可以处于不同的状态:Busy 或者 Ready。

  只有在Role处于Ready状态时,才参与负载平衡任务的分配。

  如果您想在代码中临时改变Role Instance的状态,可以响应RoleEnvironment类所定义的StatusCheck(状态检查)事件,并且通过事件参数中RoleInstanceStatusCheckEventArgs的Setbusy()方法将实例标记为Busy。这样,负载均衡器就不会把任务分配到当前实例,直至下一次WaHostBootstrapper对实例状态进行检查。

  如果在运行过程中您的Role Instance代码退出了Run()方法,或者抛出了未处理的异常(Unhandledexceptions),WaHostBootstrapper会重新启动您的Role Instance。这种自动恢复的机制能够帮助提高系统的可用性。当然,在重新启动的过程中,这个实例在非Ready状态下是不能接受用户请求的。如果WaHostBootstrapper自身奔溃了或者虚拟机宕机了,Windows Azure会重启虚拟机以及Role Instance。如果宿主服务器宕机了,Windows Azure在若干恢复重试后将Role Instance重新部署到一台健康的服务器上。

  在Windows Azure关闭Role Instance的过程中,会触发Stopping事件,并调用Role的OnStop()方法。您可以在这里实现实例关闭过程中需要进行的处理,例如释放Role使用的资源等。

  最后,如果想强制重新启动您的实例,可以用RoleEnvironment.RequestRecycle()方法来通知Windows Azure进行实例的重新启动。

 

 本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/3964364.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Bean生命周期-prepareRefresh(二)
前面提到了ApplicationContext的实例化过程,实例化的时候会判断refresh标志,一般都是true的,在refresh方法中,第一个执行的方法就是prepareRefresh,今天一起看下这个方法内部都做了什么。
910 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9485 0
ASP.NET Core 2 学习笔记(二)生命周期
原文:ASP.NET Core 2 学习笔记(二)生命周期 要了解程序的运行原理,就要先知道程序的进入点及生命周期。以往ASP.NET MVC的启动方式,是继承 HttpApplication 作为网站开始的进入点,而ASP.NET Core 改变了网站的启动方式,变得比较像是 Console Application。
864 0
【java web】Servlet生命周期
在Java web中 Servlet 是根基。虽然工作中几乎没人再去写Servlet了,框架为我们完成了这些工作。我们只要专注于业务逻辑的实现。但是理解Servlet还是很有必要的。 1. Servlet的架构图 Servlet Container 指的是Tomcat这样可以处理Servlet的服务器。
1019 0
Spring Bean生命周期-registerBeanPostProcessors(七)
ApplicationContext刷新的时候上一步提到了,先调用BeanFactoryPostProcessors预处理下BeanFactory,现在注册Bean processors来拦截Bean的创建。
1071 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13168 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11502 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6886 0
+关注
3550
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载