我正准备将我的网站、数据库和后台调度程序移到 Azure 平台上。
我必须使用具有网络和工作者角色的云服务。现在我的问题是,我是否需要为每种类型的角色提供单独的实例,或者一个实例能够托管多种类型的角色?
我正准备将我的网站、数据库和后台调度程序移到 Azure 平台上。
我必须使用具有网络和工作者角色的云服务。现在我的问题是,我是否需要为每种类型的角色提供单独的实例,或者一个实例能够托管多种类型的角色?
您不能同时拥有 Web 和辅助角色实例。它可以是其中之一。但是,可以让 Web 角色进行后台处理,因此它可以托管后台工作负载。
看到这个 SO question 有几个选项
那是关于每天早上运行一项任务。显然,您可以根据您的应用程序更频繁地执行此操作。
但请注意此操作的可扩展性限制。一旦您的流量增加,将其分解为单独的网络和工作角色将是有意义的。
事实上,即使您的后台工作负载很轻,从一开始就采用单独的架构并使用 XS 实例进行后台处理可能仍然更有意义。
从技术上讲,您不能同时担任这两种类型的角色。然而,Web 角色与辅助角色一样,只是配置了 IIS。因此,您可以将它们合并为一个 Web 角色 - IIS 将在单独的进程中运行,并且角色入口点Run()
将为“后端”处理运行一些无限循环。看到这个类似的问题。
这将使缩放更加复杂。单独角色的整个想法(请记住,您不仅可以拥有一个 Web 角色和一个辅助角色,例如,如果适合您的解决方案,您还可以拥有四个辅助角色和两个 Web 角色)是您可以单独扩展它们。
看起来一旦您将两个角色合并为一个角色,您就无法再精细地扩展它们了。大多数时候这不是真的——你只需要改变指标。
例如,您希望每分钟为每千个 HTTP 请求运行一个 Web 角色实例,为后端队列中的每十个请求运行一个工作角色实例。好的,这意味着每千个 HTTP 请求需要与后端队列中的十个项目相同的处理能力。因此,您制定了一个新的指标,它同时接受参数并推断出一些实例。就像您每分钟有 5000 个请求和后端队列中有 20 个请求一样 - 您需要 7 个 am 合并角色实例。
这不适用于所有应用程序,但大多数应用程序都会很好地使用这种方法。好处是您可以避免任何一个角色因为当前负载转移到另一个角色而处于空闲状态的情况。