我们正在开发一个大型应用程序,该应用程序由几个 Web 应用程序(在不同的域下)以及一个后台调度程序(使用 Quartz.net)组成,它将在 Worker 角色上运行(目前它是一个 Windows 服务,但这没有意义在 Azure 上)。我试图找出最适合我们的方法:为每个应用程序单独托管服务或在单个托管服务/角色下运行所有应用程序。我想有第三种选择在单个托管服务下运行多个 Web 角色,但是我需要使用 ARR(应用程序请求路由),我不确定它会给我带来什么好处(如果有的话)。对我来说听起来像是更多的开销,但我很可能是错的?
我的项目是:
- 面向公众的网站 - 低负载
- 私人仪表板 - 中等负载
- 跟踪展示次数、点击次数等的跟踪(分析)应用程序 - 高负载 - 5+ 百万次点击/月
- API - 也是高负载,因为跟踪应用程序依赖它
- Quartz.net 调度器(工作者角色)
公共网站和仪表板可能应该在单个 Web 角色上,但我不确定跟踪和 API 项目是否应该使用自己的云服务,以便它们可以独立扩展,或者我是否应该使用主机标头在单个 Web 角色上运行所有内容(当然除了调度程序)并立即扩展所有内容。所有托管服务都将运行多个实例,因此我不担心在部署过程中出现问题(因为 Azure 一次转换一个实例)。
此外,在单一角色上运行是否会给我在客户端应用程序(Web、仪表板、跟踪)和 API 之间提供更好的延迟,或者关联组和虚拟网络是否使这一点无关紧要?
我一直在寻找最佳答案,但还没有找到任何足够确凿的答案。
我主要关心的是原始性能和可扩展性。价格对我们来说不是决定性因素。
谢谢