Параллельность между многими машинами, на которых запущено одно и то же веб-приложение на стороне сервера - PullRequest
2 голосов
/ 01 октября 2011

Это довольно открытый вопрос. Мне было интересно: как вы можете справиться с параллелизмом, если у вас есть веб-приложение, которое размещено на многих компьютерах на стороне сервера? Например, как вы можете управлять простым стеком, если у вас есть приложение ASP .NET, работающее на разных компьютерах, каждый из которых имеет свою собственную память? Я что-то упускаю?

Спасибо

Ответы [ 3 ]

4 голосов
/ 01 октября 2011

Если я правильно понимаю вопрос: как несколько веб-серверов координируют свои действия при возврате ответов?

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

Естьмножество способов обмена состоянием между несколькими экземплярами веб-сервера:

  • В базе данных могут храниться данные, которые необходимо хранить в течение неопределенного времени, например информация профиля пользователя
  • Аналогично, ключхранилище с высоким значением (например, хранилище таблиц Windows Azure) можно использовать для постоянного хранения с преимуществами в производительности по сравнению с меньшей гибкостью при запросе
  • Состояние общего сеанса (с использованием базы данных или центрального сервера состояний сеанса) может хранить умереннопостоянные данные, локальные для текущего сеансакаждый веб-сервер
  • В конечном итоге, конфликт из-за общего хранилища сеансов или базы данных может свести на нетПреимущества нескольких веб-серверов

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

Как вы можете сказать, это сложный предмет, и я действительно только катался по его краям.

Хорошая новость заключается в том, что обычно вам не нужно беспокоиться о , поскольку, если вы не создаете очень большой или сложный сайт, наиболееСовременное серверное оборудование может обрабатывать многие десятки запросов в секунду, не потревожившись.Только когда вы начинаете превышать несколько десятков одновременных запросов в секунду, веб-фермы начинают становиться необходимыми.

1 голос
/ 01 октября 2011

Ответ Джереми МакГи охватывает большинство важных моментов.Еще один аспект заключается в том, что многие настройки веб-фермы используют «липкие сеансы», когда один сеанс остается с конкретным сервером.Это отличный компромисс между разрешением масштабирования и необходимостью создавать, покупать или настраивать множество систем управления состояниями в вашем пуле веб-серверов.

Большая проблема возникает, когда вам нужно масштабировать основное хранилище данных.Там будут драконы.

0 голосов
/ 01 октября 2011

Вы используете обратный ajax (Comet) в разных каналах, как при использовании веб-сервера Meteor .Facebook и Twitter используют одинаковые методы асинхронных событий.

...