Могу ли я включить и отключить липкие сессии на балансировщике нагрузки с веб-сайта за ним? - PullRequest
0 голосов
/ 30 августа 2010

Моя задача заключается в следующем. Я хотел бы поддержать шаблон Post / Redirect / Get для опубликованных форм, но после перенаправления я все еще хочу показать состояние формы в случае недопустимых полей. Эту информацию можно легко передать, сохранив в сеансе.

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

Использование локального состояния сеанса на веб-серверах предпочтительнее для масштабируемости, но для этого вам понадобятся липкие сеансы. Тем не менее, липкие сеансы являются помехой для людей, которые управляют серверами, потому что после удаления некоторых серверов из балансировщика нагрузки, чтобы сделать релиз, им все еще приходится ждать от 10 до 15 минут, прежде чем все сеансы закончатся. Без липкости это почти мгновенно.

Что было бы действительно здорово, если бы мы могли сделать сеанс липким только для одного последующего запроса после POST или REDIRECT. Или даже иметь полный контроль над тем, когда включить или отключить липкость из кода.

Кто-нибудь знает, возможно ли такое поведение? По настройкам определенный cookie возможно? Или какой-то заголовок http?

1 Ответ

0 голосов
/ 30 ноября 2015

Мало идей:

  1. Центральный кеш-сервер

    • сохранить его на сервере кеша (предпочтительно redis) с истечением срока действия
    • перенаправить на действие get с параметром в URL. Используя этот параметр, восстановите модель.
  2. Состояние в URL

    • если модель маленькая Вы можете сохранить ее в качестве параметров в URL.
...