我正准备将我的网站,数据库和后台调度程序移到Azure平台上。
我要在网络和网络上使用云服务工人角色。现在我的问题是,我是否需要为每种类型的角色分别设置实例,或者一个实例能够托管多种类型的角色?
答案 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请求需要与后端队列中的十个项目相同的处理能力。因此,您可以制定一个新的指标,该指标可以获取两个参数并推导出许多实例。就像你每分钟有五千个请求和后端队列中有二十个请求一样 - 你需要七个合并角色的实例。
这不适用于所有应用程序,但大多数应用程序都会使用这种方法。奖励是你可以避免任何一个角色处于空闲状态,因为当前负载会转到另一个角色。