我目前正处于大型 Web 应用程序的早期设计阶段,该应用程序肯定会托管在大型 Web 服务器场上。现在,我正在尝试决定是否希望整个站点成为 www.site.com 并将子应用程序放在文件夹中,例如 www.site.com/blogs、www.site.com/messages 等,或者我是否想将它们作为子域,例如 blogs.site.com、messages.site.com 等。对子域的最大缺点是我将大量使用 ajax,它不喜欢跨域调用,例如我将无法从 blogs.site.com 上托管的页面调用 www.site.com 上托管的 Web 服务 - 浏览器将引发权限异常。反对在 www.site.com 下拥有所有内容的最大缺点是,我当时看不到将网络农场专用于特定子应用程序的方法。就像如果我想要一个农场专门用于博客应用程序,
我可能对网络农场设置的网络部分缺乏一些知识,所以任何评论/想法都会受到欢迎和高度赞赏!
环境是 Windows 2008 和 ASP.NET 3.5
谢谢!安德烈
您没有提到平台,但例如使用 IIS7 ARR,您可以根据一些标准(例如 URL 的微小细节、mime/文件类型等等)直接调用不同的服务器,所以我想说任何像样的负载平衡产品都会非常乐意在没有子域的情况下为您解决这个问题^^
虽然当您使用子域时将请求拆分为多个集群当然更容易,但像 haproxy 和 varnish 这样的良好反向代理不仅能够检查 URL 并决定将请求发送到哪里。此外,您是否考虑过不在 Web 服务层专门设置服务器,而只是让每台 Web 服务器机器处理它收到的任何请求?这样就避免了误判容量分布的尴尬麻烦,并且在负载突然转移时不得不将几台服务器从一个集群惊慌失措地转移到另一个集群。
如果你愿意,你仍然可以专注于你的后端层——毕竟集群数据库比集群网络服务器要困难得多——但是到那时你已经掌握了你的网络应用程序的智能来决定在哪里制作后端请求。