Дизайн веб-приложений в случае нескольких вложенных приложений

В настоящее время я нахожусь на ранней стадии разработки крупномасштабного веб-приложения, которое обязательно будет размещено на большой ферме веб-серверов. Теперь я пытаюсь решить, хочу ли я, чтобы весь сайт был www.site.com и помещал суб-приложения в папки, такие как www.site.com/blogs, www.site.com/messages и т. Д. Или хочу ли я иметь их в качестве поддоменов, например blogs.site.com, messages.site.com и т. д. Самым большим минусом против поддоменов является то, что я буду активно использовать ajax, и он не будет похож на междоменные вызовы, например, я не сможет вызвать веб-службу, размещенную на www.site.com, со страницы, размещенной на blogs.site.com, - браузер выдаст исключение разрешений. Самый большой аргумент против того, чтобы все было под www.site.com, заключается в том, что я не вижу способа выделять веб-фермы для определенных подпрограмм. Например, если я хочу, чтобы ферма была выделена для приложения блогов, то в случае использования поддоменов это легко, но как мне это сделать, если все находится под www?

Мне, вероятно, не хватает некоторых знаний о сетевой части настройки веб-фермы, поэтому любые комментарии / идеи будут приветствоваться и высоко цениться!

Среда - Windows 2008 и ASP.NET 3.5

Спасибо! Андрей

2 ответа

Решение

Хотя при использовании поддоменов, безусловно, проще разделить запросы на несколько кластеров, хорошие обратные прокси-серверы, такие как haproxy и varnish, более чем способны проверять URL-адрес и решать, куда отправлять запросы. Кроме того, рассматривали ли вы вопрос о том, чтобы не специализировать серверы на уровне веб-служб, а просто позволить каждому компьютеру веб-сервера обрабатывать любой запрос, который он получает? Это избавляет от смущающей проблемы, связанной с неправильной оценкой распределения емкости, и необходимостью панически перемещать несколько серверов из одного кластера в другой, когда нагрузка внезапно меняется.

Вы все еще можете специализироваться на своем бэкэнд-уровне, если хотите - кластеризация баз данных намного сложнее, чем кластеризация веб-серверов, в конце концов - но к тому времени вы уже обладаете интеллектом своего веб-приложения, чтобы решить, где сделать бэкэнд. запросы к.

Вы не упомянули платформу, но, например, с помощью IIS7 ARR вы можете направлять вызовы на разные серверы на основе ряда критериев, таких как мельчайшие детали URL-адреса, типы файлов / файлов MIME, а что нет, я бы сказал, что любой продукт с достойной балансировкой нагрузки будет будьте более счастливы разобраться с этим без субдоменов ^^

Другие вопросы по тегам