Сделайте Веб-ферму приложения MVC ASP.NET Готовой

Каков будет самый эффективный способ сделать веб-ферму приложения MVC ASP.NET готовой.

Самое главное поделившись информацией текущего пользователя (Контекст) и (не столь важный) кэшируемые объекты, такие как объекты поиска (Состояния, уличные Типы, округа и т.д.).

Я услышал о MemCache, но не видел простой применимый путь (документация) относительно того, как реализовать и протестировать его.

17
задан Tawani 11 August 2010 в 21:59
поделиться

1 ответ

Контекст запроса
Любой запрос, попадающий в веб-ферму, обслуживается доступным сервером IIS. Там создается контекст, и весь запрос обслуживается одним и тем же сервером. Так что контекст не должен быть проблемой. Запрос - это конвейер выполнения без сохранения состояния, поэтому ему не нужно обмениваться данными с другими серверами в какой-либо форме или форме. Он будет обслуживаться от начала до конца одной и той же машиной.
Информация о пользователе считывается из файла cookie и обрабатывается сервером, обслуживающим запрос. Тогда это зависит от того, кэшируете ли вы где-нибудь полный пользовательский объект.

Session
Если вы используете словарь TempData , вы должны знать, что он хранится внутри словаря Session . В ферме серверов это означает, что вам следует использовать другие средства, кроме сеансов InProc, поскольку они не используются совместно серверами IIS в ферме. Вам следует настроить другие менеджеры сеансов, которые либо используют БД, либо другие (сервер состояний и т. Д.).

Кэш
Другое дело, когда дело касается кеширования. Чтобы сделать его максимально эффективным, нужно также обслуживать кеш. По умолчанию это не так. Но если посмотреть на кеш, это вряд ли означает, что, когда кеша нет, его нужно читать и хранить в кеше. Поэтому, если на конкретном сервере фермы серверов нет какого-либо объекта кеша, он его создаст. Со временем все они будут кэшировать некоторые общие общедоступные данные.
Или ... Вы можете использовать библиотеки вроде memcached (как вы упомянули) и воспользоваться преимуществами общего кеша. В сети есть несколько примеров его использования.

Но все эти решения несут дополнительные накладные расходы на несколько вещей (например, обработку сети и третьего процесса, выборку данных и т. Д.), Если ничего больше. Таким образом, кеш по умолчанию является самым быстрым, и если вам явно нужен общий кеш, выберите его. Не делитесь кешем без крайней необходимости.

21
ответ дан 30 November 2019 в 13:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: