【问题标题】:Running many items in an azure web role在 azure web 角色中运行许多项目
【发布时间】:2013-01-08 04:52:42
【问题描述】:

在我目前的公司,我们正在对 azure 进行一些研究,以期将我们的一些旧系统迁移到云中。我们有以下系统都安装在客户的位置。

数据库(SqlServer) 处理服务器(Winform App) 各种客户端(Winform 应用)

我们想做的是将处理服务器转换为 ASP.NET Web API,并创建一个新的 Job Scheduler 作为某种长时间运行的进程,它将轮询数据库并向处理服务器发送请求。

这一切都很好,但我们不确定最好的方法。

我们很乐意为作业调度程序使用服务并为服务器使用 ASP.NET Web API,但我们不知道管理安装的最佳方式。

我们想做的是为每个大客户设置一个带有调度程序和服务器的 WebRole,以及一个带有多个调度程序和服务器同时运行的 WebRole。

那么问题来了,

这真的可能吗?你可以在一个网络角色中运行许多项目吗?

【问题讨论】:

    标签: azure installation asp.net-web-api azure-web-roles


    【解决方案1】:

    Web 角色本质上是一个带有一些代码脚手架的 Windows Server 虚拟机。您可以运行任何可以通过无交互 MSI/xcopy/等安装的东西。您拥有启动脚本以及从代码安装的能力(在OnStart() 事件处理中)。

    Web Role 和 Worker Role 的区别主要在于 IIS 的激活。否则,您可以将它们视为等效。

    定义不同角色(无论是网络角色还是工作角色)的好处是:每个角色都有自己的大小和数量。例如,这使您可以为前端设置一堆小型 Web 角色实例,并可能设置一个或两个大型实例来执行一些计算密集型任务。但是,实际上,没有什么能阻止您将所有内容加载到一个角色中。只是现在一切都将同步扩展。

    SQL Server 不能很好地适应网络/工作者角色模型,因为安装不能完全自动化。这更适合虚拟机(允许您构建 VM 并保存它,以便随时运行,完全构建)。有关虚拟机的更多信息here。如果你走这条路,你需要从你的网络角色提供对你的数据库的直接访问。您可以为此使用Virtual Network

    关于 SQL 的最后一件事:Windows Azure SQL Database 是数据库即服务,您无需构建任何东西:只需启用它,设置最大大小,然后开始使用它。虽然它不具备 SQL Server 的所有功能,但它涵盖了绝大多数功能,并且每个数据库可扩展到 150GB(并提供用于扩展的分片)。您只需为使用 Windows Azure SQL 的存储容量付费;运行它的服务器没有成本,也不需要维护数据库服务器。

    【讨论】:

      【解决方案2】:

      您可以将 WebRole 用于您的 API,并将 WorkerRole 用作您的调度程序。如果需要,您可以对两者使用不同的大小和实例计数,并将它们保留在同一个 VisualStudio 解决方案中。

      我会避免将 WebRole 用于调度程序。

      【讨论】:

      • 除了 IIS 的激活(稍后可以通过命令行启用/禁用)之外,web 和 worker 角色之间实际上没有区别。例如,如果您想运行 Tomcat,即使您托管的是 Web 服务器,您也会选择工作角色。同样,您可以在 Web 角色实例中轻松运行调度程序任务,如果您愿意,甚至可以删除端口 80/443 上的输入端点。
      猜你喜欢
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 2014-12-20
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多