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