Рубрики
Uncategorized

День 6 – “Шаблоны архитектуры корпоративных приложений” – Состояние сеанса

Автор оригинала: David Wong.

1. Значение без состояния:

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

2. Состояние сеанса:

Актуальность: Состояние сеанса связано только с текущим сеансом. Он существует в бизнес-транзакциях и отделен от других сеансов и их бизнес-транзакций.

Отличие от записи информации о данных заключается в том, что постоянные данные, хранящиеся в базе данных в течение длительного времени, при записи данных видны всем сеансам, и состояние сеанса должно быть представлено в виде записи в базе данных.

Самая большая проблема: при работе с изоляцией (одновременные или связанные операции)

Вы не можете обрабатывать все данные в сеансе как состояние сеанса

3. Способ сохранения состояния сеанса:

1) Три способа сохранения состояния сеанса:

Состояние сеанса клиента: Сохранение данных на стороне клиента (URL-адрес, файл cookie, скрытый домен, доступный в Интернете и т.д.)

Применимый сценарий: Данные о сеансах невелики, и пользователи часто отменяют сеансы (например, пользователи B2C закрывают сайты напрямую и исчезают)

Проблема: Безопасность, Целостность

Состояние сеанса сервера: В памяти сервера, файловой системе, простой таблице базы данных (с идентификатором сеанса в качестве ключа и сериализованным объектом в качестве значения)

Преимущества: Легкий прямой доступ к состоянию сеанса

Состояние сеанса базы данных: Хранение на стороне сервера (разложение данных на несколько таблиц и доменов)

Преимущества: Сохранение состояния нелегко потерять

Проблема: Плохая изоляция (необходимо изолировать данные сеанса от записанных данных)

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

2) Расширение сессии:

Миграция сеанса: Позволяет перенести сеанс с одного сервера на другой, чтобы один сервер мог обрабатывать один запрос, в то время как другие серверы обрабатывают другие запросы.

Преимущества: Сбалансированные серверы

Недостаток: Трудно найти состояние сеанса и поддержать миграцию сеанса.

Сходство с сервером: Все запросы для определенного сеанса могут обрабатываться только одним сервером

Недостаток: Когда клиент использует прокси-сервер, большой объем нагрузки может быть сосредоточен на сервере.