我目前正处于大型 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 下的最大缺点是,我看不到将 Web 场专用于特定子应用程序的方法。比如,如果我想建立一个专门用于博客应用程序的农场,那么使用子域名很容易,但如果所有内容都在 www 下,我该怎么做呢?
我可能缺乏一些关于网络场设置的网络部分的了解,因此任何评论/想法都会受到欢迎和高度赞赏!
环境是Windows 2008和ASP.NET 3.5
谢谢!Andrey
答案1
虽然使用子域将请求拆分到多个集群中确实更容易,但像 haproxy 和 varnish 这样的优质反向代理完全有能力检查 URL 并决定将请求发送到何处。此外,您是否考虑过不在 Web 服务层上专门设置服务器,而只是让每台 Web 服务器机器处理它收到的任何请求?这可以避免因误判容量分布而产生的尴尬麻烦,也避免了在负载突然转移时不得不慌乱地将几台服务器从一个集群移动到另一个集群。
如果您愿意,您仍然可以专注于您的后端层 - 毕竟,集群数据库比集群 Web 服务器要困难得多 - 但是到那时,您就可以使用 Web 应用程序的智能来决定向何处发出后端请求。
答案2
你没有提到平台,但例如 IIS7到达率您可以根据一系列标准(例如 URL 的微小细节、mime/文件类型等)将调用定向到不同的服务器,因此我认为任何像样的负载平衡产品都会很乐意为您解决这个问题,而无需子域名 ^^