公告    :本博客为微软云计算中文博客  的镜像博客。   部分文章因为博客兼容性问题  ,会影响阅读体验  。如遇此情况,请访问  原博客    。

在2010 PDC大会上,我们介绍了Windows Azure中一个新增的Computational Role- VM Role 。这一特性极大的提高了我们对于应用的掌控性,但是可能会和我们Windows Hyper-V中的全基础设施方案有所混淆。它们都有独有的架构模式。

虚拟化

虚拟化是一个接管物理电脑的所有硬件并以软件呈现硬件功能的过程。这意味着单台电脑可以"托管"或者运行多个"虚拟"电脑。这些虚拟电脑可以位于任何地方-包括运行在供应商处。因为在别处管理和维护这些硬件,所以一些公司将其称为云计算。

基础设施即服务

对上文更具体的定义应该称为基础设施即服务 (Iaas) ,因为它移除了在自己公司中管理维护硬件的需求。操作系统,驱动,或者运行应用所需的所有软件都仍在你的掌控中,你只需购买授权,升级,以及拓展。微软在这方面的方案称为Hyper-V ,它运行在Windows操作系统之上。结合硬件托管供应商以及 System Center 软件来创建和部署虚拟机(可以称其为一个提供服务的过程),你对于这些机器仍然拥有完全的控制权,如果愿意,甚至包括运行多操作系统。在自己公司内托管机器,并提供服务,我们称其为私有云。而在别处托管这些机器,则称之为公有云。

有状态和无状态编程

该模式并不是创建新的可拓展的计算方式。它只是简单的移除了硬件的需求。理由便是当你将云计算限定于虚拟机时,你便限制了单个系统所能提供的计算资源。这是因为在此环境下开发的许多软件都会维护 "状态" - 我会对此进一步的解释。

"有状态编程" 意味着计算环境的所有部分在计算周期内始终相互保持连接。 系统会期望内存,CPU,存储和网络在整个过程中都保持始终一致。您可以想象我们日常打电话-你希望对方接起电话、听你说话,之后他开始回话,这些都发生在同个时间单元内。

在 "无状态" 计算模式内,系统可以允许代码的不同部分的相互独立的运行。你可以将其想象为电子邮件,你写了了一封邮件 (当然,你在写邮件时是有状态的。) ,之后你可能走开去喝了一杯咖啡。几分钟之后,你回来点击了"发送"按钮, (网络是有状态的) ,之后你便去开会了。服务器收到邮件,将其存储在邮件数据库内。(邮件服务器有状态) ,之后继续接受其他的邮件。 最后,另一用户登陆邮件客户端,读取邮件 (用户是有状态的) ,回复邮件等等。这些时间可能相隔几毫秒到几天,但是系统仍然可以继续运行。整个过程都没有维护状态,每一个组件也是。这便是Windows Azure代码背后的概念。

无状态编程模式使得惊人的拓展能力称为可能。因为消息(参考上述的邮件例子),可以被多个程序独立开来,且并行运行。 (邮件发送给数百用户),唯一需要考虑的便是工作重新组织的顺序。基于相同的理由,如果系统像Windows Azure那样运行这些程序,你便会拥有内建的冗余和恢复功能。这些都是放置��设计之内的。

基础设施设计和平台设计的区别

当你只是简单以私有或者公有的方式虚拟化物理服务器,你并不能让代码拥有拓展或者恢复的能力。必须通过增加更多的代码以及更多的虚拟机来处理,这会在运行或维护有状态系统内引入轻微的延迟。增加更多机器会引入更多的延迟,所以并不能无限的拓展。这便是IaaS最主要的限制。同样部署这些虚拟机并不容易,更为重要的是移除它们更加繁琐。IaaS的敏捷性就会受到限制

Windows Azure 是一个平台 - 这意味着你可以通过代码来进行控制操作。代码会以多个拷贝运行在多个节点上,因为神器的无状态编程模式,它们都会运行。你不必关心底下到底运行的是什么。它可能是Windows (实际上是某种Windows Server),Linux,或者其他任何系统- 但是这些都不是你需要管理,监控维护或者购买授权的。你不会希望部署一个操作系统,而是部署一个应用。你希望代码能够正常运行,而不关心是如何运行的。

PaaS的另一个优势你可以请求成千上万的计算节点。你也可以随时的停止使用这些节点,且你应用中无需编写这些控制代码。

Windows Azure Roles 以及它们的用途

如果希望应用有一个用户界面,那么想项目中添加一个 Web Role  ,如果代码无需包括用户界面则添加一个Worker Role 。它们仅仅是具有特定行为的容器。

我们回来讨论VM Role ,用户可能因为其名称而误以为它是一个虚拟机,例如运行着Linux系统,可以部署至Windows Azure。很遗憾,事实并非如此。如果你确实需要此类部署,考虑Hyper-V 和 System Center来创建私有或公有 IaaS 。VM Role 允许用户对其代码所运行的系统拥有相当高的控制权。

如果你听说过Windows Azure 以及 平台编程,你一定坚信它是一个绝佳的编程范式。但是在公司中,你已经是以其他方式编写了大量代码。如果为了利用Windows Azure的优势,而重写代码会需要很长的时间周期。又或者你的代码依赖于一个特定版本的Apache Web 服务器。这些情况下,你应该考虑将这些软件改写为 "无状态"的,那么你只需在代码运行之处拥有更多的控制便可以。那么这些情况下, VM Role 便能发挥其作用了。

回顾

仅仅虚拟服务器会有拓展,可用性和恢复能力的限制。微软在这方面的方案是Hyper-V 和 System Center,并不是 VM Role。 VM Role 还只是用于运行无状态代码,除了它允许您对环境拥有更多的控制权之外,它们和Web Role和 Worker Role是一模一样的。

本文翻译自:http://sqlblog.com/blogs/buck_woody/archive/2010/12/28/the-proper-use-of-the-vm-role-in-windows-azure.aspx

转载于:https://www.cnblogs.com/new0801/archive/2011/01/06/6176681.html

正确使用Windows Azure 中的VM Role相关推荐

  1. 在Windows Azure中使用自己的域名

    请参考:http://blog.smarx.com/posts/custom-domain-names-in-windows-azure 本文是对这篇文章部分解释和补充. 并请记住,此博客总是能给你在 ...

  2. Windows Azure平台Win VM密码重置

              Windows Azure平台Win VM密码重置 近期给客户做Azure实施,客户把Azure平台的Linux系统的账户忘记了,帮助客户进行重置了Linux系统的密码,顺便自己研 ...

  3. SuperSocket 1.4系列文档(17) 在Windows Azure中运行SuperSocket

    Windows Azure是微软的云计算平台!Windows Azure通过微软的数据中心为开发人员提供以按需的计算能力和存储能力去托管.扩展和管理互联网上的应用程序. 运行于Windows Azur ...

  4. Windows Azure Cloud Service (17) Role Endpoint

    <Windows Azure Platform 系列文章目录> 在Windows Azure平台中,用户最多可以对以个Role指定5个Endpoint.而一个Hosted Service最 ...

  5. Windows Azure Cloud Service (8) Role及其生命周期模型

    <Windows Azure Platform 系列文章目录> 我们浏览Windows Azure项目.如下图所示 可以看到Windows Azure的项目包含传统的ASP.NET工程文件 ...

  6. 现宣布Windows Azure中SQL数据同步的增强功能

    我们很高兴宣布SQL数据同步服务迎来了更新,现可以在所有Windows Azure数据中心中操作.过去的两次更新(六月.八月)除了为预览版带来一般可靠性的改进外,还带来了如下的增强功能: ·      ...

  7. Windows Azure 数据安全(清理和泄漏)

    免责声明:本文档中所述过程为 2012 年 1 月时起的情况,如有变更,恕不另行通知. 希望将应用程序部署到 Windows Azure 的企业客户(实际上是所有客户)最为关心的就是其数据的安全性.释 ...

  8. 如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择

    作者信息:本篇文章是由SQL Server Cloud Infrastructure Team的 Madhan Arumugam 和 Guy Bowerman共同著作. 简介 把SQL 数据托管在哪里 ...

  9. Windows Azure 虚拟网络中虚拟机的网络隔离选项

     最近我们发布了一份<Windows网络安全白皮书>(单击此处下载),文中深入说明了客户可以如何利用该平台的本地功能,为他们的信息资产提供最好的保护. 由首席顾问Walter Myer ...

最新文章

  1. Tengine Web服务器概述
  2. 和我一起学VSTA(Visual Studio Tools for Applications )(一)
  3. Zedboard学习(二):zedboard的Linux下交叉编译环境搭建
  4. 安装tensorflow_gpu,无法定位程序输入点
  5. Ehcache学习一:JDBC caching
  6. mysql的innodb表生成的物理文件_MySQL innodb表使用表空间物理文件复制或迁移表
  7. Android之CSDN 牛人博客索引
  8. 解密双十一小程序云背后毫秒级伸缩的Serverless计算平台:函数计算
  9. 那时我大约5岁的飞鸽传书
  10. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(6) - 移位与循环移位指令
  11. C语言字符串操作总结大全(超详细)
  12. python学习的第十八天模块之包、相对搜索路径和绝对搜索路径
  13. 学会Java输入输出流,看这一篇就够了,建议收藏!
  14. coreldraw铺花纹_Coreldraw绘图实例教程,教你cdr环形花边绘制方法
  15. 孕妇php是什么意思,孕妇适合念什么经
  16. HTML5软件设计大赛,我院成功举行第十七届山东省大学生软件设计大赛 HTML5创意应用命题决赛...
  17. 离散数学3_第1章__一些重要的重言蕴涵式__推理定律
  18. 特效制作思路(技术层面)
  19. 图片打包下载,本地服务器打包文件下载,及线上图片地址下载
  20. Unity 一起看+弹幕 Socket通信

热门文章

  1. CCNA1 - Final Exam Answers (04/18/2008 10:30)
  2. 3.db2性能和优化
  3. Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建
  4. 第一个程序实现登录功能,密码输错三次封账号。
  5. android在Service,BroadCast onReceiver()中弹出Dialog对话框
  6. DevExpress右键菜单使用 zt
  7. 【语法】点语法的应用
  8. C和C++中指针与地址的区别
  9. MYSQL的一些常用函数
  10. CSU2188: Substring