Хорошая альтернатива для пользовательской сессии в веб-приложении с высоким трафиком? - PullRequest
2 голосов
/ 07 февраля 2011

Какая будет хорошая / масштабируемая альтернатива сеанса пользователя в следующем сценарии:

  • пользователям не нужно включать куки
  • Ограничение на строку запроса URL 255 символов
  • много запросов GET (без скрытых полей формы)
  • приложение работает на нескольких серверах (веб-ферма)
  • некоторые пользователи подключаются через прокси (тот же IP)
  • пользователи подключаются по HTTPS
  • 50 000 одновременных пользователей

Ответы [ 5 ]

3 голосов
/ 07 февраля 2011

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

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

Вы, конечно, столкнетесь с обычными проблемами, связанными с подделкой идентификатора, и тем, что база данных сеансов станет узким местом.

1 голос
/ 07 февраля 2011

Во-первых, ИМХО, хорошей альтернативы сеансу нет. Вопрос в том, как получить его, когда куки отключены. Ответ использует параметр URL. Таким образом, вы должны добавить идентификатор сеанса к каждому запросу (включая ссылки и формы). Все остальные требования не очень актуальны. Сделайте свою логику без сохранения состояния, чтобы у вас не возникало проблем с масштабируемостью: все запросы должны поступать в вашу логику через балансировщик нагрузки, поэтому вы можете добавить столько серверов, сколько захотите.

0 голосов
/ 18 февраля 2011

50000 пользователей делают что?Непрерывное перетаскивание с обновлением позиции на сервере или щелчком текстовой ссылки каждые 15 минут?В последнем случае: перенесите все на один сервер с большим количеством оперативной памяти.

0 голосов
/ 07 февраля 2011

Прежде всего, ваши требования очень жесткие.Единственный вариант, который я вижу, - это использовать такой подход: http://code.google.com/p/seaside/

Короче говоря: ваша система будет генерировать бесстатичные URL, такие как http://host/app/@123445568978 Затем вы перейдете в базу данных, чтобы получить объект сеанса.

0 голосов
/ 07 февраля 2011

Может быть Перезапись URL или какой-либо механизм сокращения URI, например http://tinyurl.com или http://goo.gl, так что вы можете передавать детали сеанса не более 255 символов.: Не рекомендуется использовать эти сервисы, но механизм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...