Состояние сеанса кэша Azure развертывает загрузочных пользователей?

Если кто-то использует лазурный кеш для управления состоянием сеанса asp.net mvc, будут ли развертывания, включая изменения dll/web.configs, по-прежнему загружать пользователей/форсировать новый сеанс?

Я бы предположил, что, поскольку сеанс является внешним по отношению к приложению, он будет держать его открытым и не заставлять пользователя снова входить в систему. Истинный?


person Micah    schedule 07.11.2012    source источник
comment
О каком кеше вы говорите? Общий кэш или предварительный просмотр кэширования, использующий память экземпляров вашей роли?   -  person Brian Reischl    schedule 07.11.2012
comment
Обе? Либо? Я был бы рад любым знаниям о том, чтобы помочь мне принять решение о том, использовать его или нет.   -  person Micah    schedule 07.11.2012
comment
Если вы используете предварительное кэширование, каждое развертывание Azure будет иметь собственный пул памяти. Так что это определенно очистит ваши сеансы. Я предполагаю, что общее кэширование не очистит ваши сеансы. Данные определенно все еще будут там, поэтому вы потеряете сеансы только в том случае, если поставщик сеансов сделает что-то для проверки версий DLL.   -  person Brian Reischl    schedule 07.11.2012


Ответы (1)


Вам следует ознакомиться с новыми функциями кэширования в пакете SDK Azure 1.8 (выпущенном на прошлой неделе): http://msdn.microsoft.com/en-us/library/windowsazure/hh914161.aspx

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

Вы также можете использовать кэширование Azure AppFabric (кэширование как услугу). Они предоставляют сборки для AzureCachingSessionStateProvider: http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_buildingappswithcacheservice_topic3.aspx

Чтобы ответить на ваш вопрос: работает ли распределенное состояние сеанса, если я отключу одну веб-роль для развертывания кода?... да. http://robbincremers.me/2012/02/23/using-windows-azure-caching-service-to-improve-performance-for-your-cloud-services/

Я разместил ссылку о том, как это работает с балансировщиком нагрузки. Поскольку балансировщик нагрузки не имеет состояния, он может направить любой запрос на любую веб-роль/сервер... поскольку состояние сеанса находится в распределенном кеше, любая веб-роль может успешно ответить на запрос. Если у вас есть 3 веб-роли и вы отключите 1 или 2 для обновления кода, остальные по-прежнему смогут возвращать запросы.

person Bart Czernicki    schedule 07.11.2012
comment
Если я публикую код, когда у кого-то есть открытый сеанс, отменяет ли развертывание его сеанс? Им нужно снова войти в систему? Это настоящий вопрос. - person Micah; 07.11.2012
comment
Я отредактировал свой ответ... быстрый ответ - да и/или так и должно быть. - person Bart Czernicki; 07.11.2012
comment
Спасибо! Я удивлен, насколько это дорого ... сумасшедший - person Micah; 07.11.2012
comment
Это довольно дорого, но состояние сеанса должно быть относительно небольшим объемом данных. Даже если у вас есть 100 000 активных пользователей в корпоративной системе, около 5% из них вошли в систему в данный момент ... и если у вас так много пользователей, вы должны быть в состоянии заплатить за это :) - person Bart Czernicki; 08.11.2012
comment
Если вы когда-нибудь развернете новый набор веб-ролей (развернете в промежуточном развертывании, сделаете замену VIP), разве это не очистит состояние вашего сеанса? - person Brian Reischl; 13.11.2012
comment
Идентификатор сеанса основан на браузере... если у вас есть балансировщик нагрузки (без сохранения состояния), передающий этот идентификатор сеанса на 3 разных веб-сервера, которые веб-сервер ищет, если этот идентификатор сеанса действителен в распределенном кеше. Если бы вы отключили 1 или 2 веб-сервера, а распределенный кеш все еще работал, он все равно работал бы. Если другие серверы вернулись в сеть, теперь они могут принимать запросы. Я не знаю, кто будет делать живое обновление на своих серверах / предполагать, что все будет работать идеально, хотя ... если вы измените то, что вы сериализуете в состоянии сеанса, это немедленно сломается. - person Bart Czernicki; 14.11.2012
comment
@BartCzernicki - у меня сложилось впечатление, что кэш Azure (предварительная версия) размещается отдельно в рамках общей модели, которая может сохраняться между развертываниями, согласно этому ответу: stackoverflow.com/a/20966206/899530 разве это не так? - person SB2055; 08.01.2014
comment
@ SB2055 да, это правильно, этот ответ датирован 2012 годом, до того, как был выпущен новый предварительный просмотр кеша. - person Bart Czernicki; 14.01.2014