在Windows Azure中:什么是Web角色,辅助角色和VM角色?

Kun*_*esh 111 azure azure-worker-roles azure-web-roles azure-vm-role azure-virtual-machine

我工作的应用程序包含一个Web角色:它是一个简单的Web应用程序.我需要在Windows Azure中托管应用程序,因此我创建了一个Web角色.我其实想知道这些角色是什么.他们的编码明智或存储方面的意义是什么?

Dav*_*gon 99

编辑2013年3月3日 - 更新为引用UDP端点,虚拟机和更多语言

编辑6/6/2013 - 更新以反映VM角色的中断,并将Web /工作者角色基线操作系统映像更新到Windows Server 2012

@Vladimir的良好链接.更一点澄清:所有角色(web,worker)本质上都是Windows Server.Web和Worker角色几乎完全相同:

  • Web角色是启用了IIS的Windows Server VM
  • 工作者角色是禁用IIS的Windows Server VM(您可以手动启用它)
  • VM角色是您通过Hyper-V在本地构建并上传到Azure的Windows Server 2008映像(现已停止使用,截至2013年5月31日已不再可用)
  • 虚拟机是在Azure中创建的Windows或Linux映像,在您自己的存储中存储为vhd,并且具有多个VM角色增强功能.例如:由于vhd位于您自己的存储帐户中,因此您可以轻松地从vhd创建映像模板,将其复制到新的vhd,甚至可以将其上载到VM Depot(仅限Linux).

要回答有关如何处理这些角色的问题:平台培训工具包(如下所述)将为您提供许多好的想法和示例,但这里有一些简单的用例:

  • 您可以运行任何公开tcp,http,https或udp端点的代码(Web应用程序,SOAP/REST服务等).您需要考虑无状态的处理方式 - 如果您运行多个VM实例,则会在这些实例之间分配用户流量.平台培训套件将向您展示如何使用存储或缓存来处理此问题.
  • 您可以运行生活在队列或计时器之外的代码.也许您有按需创建的任务,例如缩略图生成照片或基于用户输入的计算.这些不需要外部可用的端点.您可以将请求推送到队列,然后运行一个简单地从此队列中提取的任务(您可以跨多个实例扩展此过程,并且所有实例都会使用队列消息).
  • 您可以运行.NET,Java,php,python,node,ruby等.您只需要将适当的运行时代码与项目代码一起分发.所有语言都可以对Azure API进行REST调用,并且多种语言(包括上面提到的语言)都有SDK来为您处理这些问题.所有语言SDK都在这里,源代码在github上,这里.
  • 借助VM角色,您可以安装和运行具有非常复杂/耗时的安装软件,需要手动干预的安装以及无法可靠自动化的安装.在这种情况下,您必须处理操作系统维护.超越虚拟机角色,现在有虚拟机,提供基于云的虚拟机构建以及Windows和Linux支持.我建议虚拟机通过虚拟机角色.

通过Web和Worker角色,操作系统和相关补丁可以为您处理; 您无需管理VM即可构建应用程序的组件.

使用VM角色,您可以构建完整的Windows Server映像,向其添加Azure挂钩,并将整个VM推送到云中(然后随着时间的推移维护VM映像).

使用虚拟机,您只需从库中选择一个操作系统映像,该映像将为您创建并存储为blob存储中的vhd.然后你RDP/ssh并按你喜欢的方式设置它.

戴着建筑师的帽子,这是它变得有趣和有趣的地方.您可以在Web角色或辅助角色中运行Web服务(并且可以在其中打开端口); 您可以使用Worker角色托管Tomcat或其他Web服务器.您可以选择将网站和服务组合在一个角色中,也可以将它们分成多个角色以满足不同的可扩展性需求.

为了一个良好的开端,请查看平台培训套件并开始练习.

  • 理查德 - 虽然过去就是这种情况,但无论角色类型如何,端点现在都可以是tcp,http或https.我构建了一个示例应用程序,其中包含tcp和http的混合,同时在几个月前演示了新的25个端点每个角色的更新 - 请参阅此处的博客文章 - http://www.davidmakogon.com/2011/05 /windows-azure-tip-go-beyond-5-endpoints.html (2认同)

Den*_*aub 30

  • Web角色是IIS中托管的Web应用程序.
  • 工作者角色是可以做一些工作的过程(即自动压缩上传的图像,在数据库中发生更改时执行操作,从队列和进程获取新消息,您将其命名)
  • VM角色托管VM

  • 实际上,Web角色和工作者角色是VM. (10认同)

Bri*_*egg 21

几天前我遇到了这个问题/答案,我发现答案提供了一点点(我是Azure和Web的新手).我在今晚的Azure基础知识中找到了这个摘要,我认为这是对工作者和Web角色之间核心差异的良好高级概述:

两者之间的主要区别在于,Web角色的实例运行IIS,而辅助角色的实例则不运行IIS.但是,两者都以相同的方式进行管理,并且应用程序通常使用它们.例如,Web角色实例可能接受来自用户的请求,然后将它们传递给辅助角色实例进行处理.要向上或向下扩展应用程序,可以请求Windows Azure创建更多任一角色的实例或关闭现有实例.与Windows Azure虚拟机类似,仅向每个Web或辅助角色实例运行的时间收取费用.

如果您是Azure开发的新手,我强烈建议您阅读以下完整文章:Windows Azure简介

我希望这可以帮助别人,因为它帮助我打开灯泡.