Как разработать веб-приложение, удобное для балансировки нагрузки - PullRequest
8 голосов
/ 01 ноября 2010

Начинал разрабатывать для реального кода на моем сайте и хотел знать, как мне разработать или спроектировать сайт с учетом баланса нагрузки.Я прочитал статью о стекаповороте, касающуюся масштабируемости, и в выбранном ответе говорилось: «Обязательно учитывайте балансировку нагрузки при разработке приложения».Как мне это сделать?

Ответы [ 6 ]

3 голосов
/ 01 ноября 2010

Ваше решение будет зависеть от окружающей среды. Если это продукт для продажи, вы не будете иметь никакого контроля над реализацией балансировки нагрузки. Это означает, что «липкие сеансы», когда пользователь связан с одним и тем же сервером на время сеанса, не могут быть гарантированы. Липкие сеансы позволяют сбалансировать нагрузку практически любого приложения, но они не так эффективны.

Если вы не можете гарантировать реализацию с помощью «липких» сессий, вообще избегайте использования состояния «Сеанс» или изучите решение для совместного сеанса.

2 голосов
/ 01 ноября 2010

1) не использовать статические поля для хранения данных, статистики, ...

2) используйте сеанс с осторожностью - вы все еще можете использовать его в процессе с липкими сессиями, но мне это не нравится

3) Не полагайтесь на IP-адрес сервера

1 голос
/ 01 ноября 2010

Убедитесь, что у вас есть среда разработки / QA, в которой вы можете тестировать свое программное обеспечение в среде с балансировкой нагрузки и видеть проблемы в своем коде по мере его разработки, а не ждать дня развертывания.

1 голос
/ 01 ноября 2010

Это может быть очевидным для большинства из вас, но на самом деле это была проблема в нашей среде, когда мы начали использовать балансировщик нагрузки / несколько веб-серверов: не полагайтесь на IP-адреса вашего веб-сервера.

У нас была производственная среда, в которой использовался коммутатор и набор внутренних IP-адресов, включая один из веб-серверов (наши продукты обычно работают в закрытой среде, а не в открытом Интернете).Если у вас есть несколько веб-серверов, это становится проблемой.

1 голос
/ 01 ноября 2010

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

По сути, просто попытайтесь сделать каждую страницу отдельнойв одиночку и без гражданства, насколько это возможно, и вы будете в порядке.

0 голосов
/ 01 ноября 2010

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

Поскольку последующие запросы вашего приложения могут обрабатываться другими серверами в строке баланса, вы не можете использовать режим InProc и режим StateServer.

...