【发布时间】:2010-08-28 00:02:47
【问题描述】:
我知道每个实例只能有 1 个网络角色,但这是否也适用于后台角色?更详细地说,1 个实例可以运行后台角色和 Web 角色吗?
【问题讨论】:
标签: azure azure-worker-roles azure-web-roles
我知道每个实例只能有 1 个网络角色,但这是否也适用于后台角色?更详细地说,1 个实例可以运行后台角色和 Web 角色吗?
【问题讨论】:
标签: azure azure-worker-roles azure-web-roles
我认为您问题中使用的术语让其他回答者感到困惑。
在 Windows Azure 计算中,您拥有云服务。云服务可以被认为是你的整体架构,或者至少是前端、中间层等(任何有计算而不是存储的层)。例如,您的应用程序可能有一个表示前端(ASP.Net MVC Web 应用程序)和一个中间层(基于基本 http 的 WCF 服务层)。我们将这些层级中的每一层都比作“角色”。因此,在上面的示例中,我的云服务中有 2 个 Web 角色。我也可能有一些后端处理来完成某种批处理工作,这也将是一个“角色”。响应用户交互的角色(例如网站、服务层等)被托管为“网络角色”,而那些后端服务则是“工作角色”。
然后我们有实例。一个实例是配置了多少虚拟机来提供给定角色的功能。例如,我可能需要我的表示层有 5 个实例,因为它需要大量负载。所以,我的 1 个网络角色有 5 个实例。同样,我的中间层,一个服务层,可能只需要 3 个实例(因为表示层缓存),因此我的 1 个 Web 角色有 3 个实例。我的后端服务可能只需要 1 个实例,因为它的工作可以随时完成,但如果积压日志太大,它可以扩展到 10 个实例来完成工作,然后再次缩减到 1 个实例。
所以这里的关键是每个角色可以有 1 个或多个实例。由于这种关系,每个实例只能有一个角色是有道理的(因为一个实例是从单个角色模板“实例化”的)。
Rinat 上面试图说的是,您可以欺骗工作者角色并实际在 WCF 中托管一个 http 端点,从而获得 Web 角色类型的行为,但是您无法获得 Web 角色的负载平衡你来做这件事。同样,通过覆盖 WebRole.cs 中的 OnStart 方法,Web 角色可以具有辅助角色样式的行为。但是我仍然认为这只是两种情况下的一个角色,您可以拥有该角色的多个实例。
Bjorn 表示默认情况下每个角色最多只能有 20 个实例,但是您可以获得更多实例(因此恕我直言,他不值得 -1)。
希望这能解决问题。
【讨论】:
您每个实例只能有一个角色。
但是,您可以在您的工作角色中托管 Http 端点,从而有效地将其转变为 Web+Worker 角色。
参考和示例:
【讨论】:
默认情况下,一个 Web 角色可以有 20 个实例。如果您需要更多信息,可以联系 Azure 服务台,他们会提供服务!
【讨论】: