我们是否可以在Azure云服务的单个实例中拥有辅助角色和Web角色

时间:2013-03-04 22:13:48

标签: azure azure-sql-database azure-web-roles azure-worker-roles azure-web-sites

我正准备将我的网站,数据库和后台调度程序移到Azure平台上。

我要在网络和网络上使用云服务工人角色。现在我的问题是,我是否需要为每种类型的角色分别设置实例,或者一个实例能够托管多种类型的角色?

2 个答案:

答案 0 :(得分:3)

您不能拥有组合的Web和辅助角色实例。它可以是一个或另一个。但是,可以让Web角色执行后台处理,因此它可以承载后台工作负载。

有关几个选项,请参阅此SO问题

Azure WebRole Scheduled Task Every Morning

每天早上谈论运行一项任务。显然,您可以根据您的应用更频繁地进行此操作。

请注意这种可扩展性限制。一旦您的流量增加,将其分解为单独的Web和工作人员角色是有意义的。

事实上,即使你的后台工作量很小,你可能仍然更有意义从一开始就使用单独的架构并使用XS实例进行后台处理。

答案 1 :(得分:2)

从技术上讲,你不能同时拥有这两种类型的角色。然而,Web角色与worker角色相同,它只配置了IIS。因此,您可以将它们合并到一个Web角色中 - IIS将在单独的进程中运行,并且角色入口点Run()将为“后端”处理运行一些无限循环。请参阅this similar question

这将使缩放更加复杂。单独角色的整体想法(记住,您不仅可以拥有一个Web角色和一个辅助角色,例如,如果适合您的解决方案,您可以拥有四个工作角色和两个Web角色),您可以单独扩展它们。

看起来,一旦将两个角色合并为一个角色,您就无法对其进行精细缩放。大多数情况下都不是这样 - 您只需要更改指标。

例如,您希望为每分钟每千个HTTP请求运行一个Web角色实例,并为后端队列中的每个十个请求运行一个辅助角色实例。好的,这意味着每千个HTTP请求需要与后端队列中的十个项目相同的处理能力。因此,您可以制定一个新的指标,该指标可以获取两个参数并推导出许多实例。就像你每分钟有五千个请求和后端队列中有二十个请求一样 - 你需要七个合并角色的实例。

这不适用于所有应用程序,但大多数应用程序都会使用这种方法。奖励是你可以避免任何一个角色处于空闲状态,因为当前负载会转到另一个角色。