Session Affinity (или Sticky Sessions) — это подход в балансировке нагрузки, при котором запросы от одного клиента всегда направляются на один и тот же сервер в течение всей сессии. Это обеспечивает сохранение состояния клиента на конкретном сервере и делает взаимодействие более последовательным.

Преимущества

  • Сохранение состояния: Не требует сложной реализации хранения состояния между серверами.
  • Простота для разработчиков: Упрощает работу с приложениями, которые не являются stateless.

Недостатки

  • Риски перегрузки: Сервер, привязанный к большому количеству клиентов, может стать перегруженным.
  • Уязвимость к сбоям: Если сервер выходит из строя, сессии клиентов теряются.
  • Меньшая гибкость масштабирования: Динамическое добавление или удаление серверов затруднено.

Методы реализации

  • По IP-адресу клиента:
    • Сервер выбирается на основе IP-адреса клиента.
    • Простая реализация, но уязвима к использованию прокси-серверов и NAT.
  • По cookie:
    • Балансировщик устанавливает cookie на клиенте, где хранится информация о назначенном сервере.
    • Наиболее популярный метод благодаря своей гибкости.
  • На основе токена:
    • Клиент предоставляет токен (например, JWT), который указывает на сервер, обрабатывающий сессию.
    • Токен может быть частью механизма аутентификации.
  • Hash-Based (Хеширование):
    • Сервер определяется через хеширование идентификатора клиента (например, IP, ID пользователя или URL).
    • Эффективен для систем с большим количеством пользователей.

Мета информация

Область:: 00 Архитектура ИС
Родитель:: Балансировка нагрузки
Источник::
Создана:: 2025-01-17
Автор::

Дополнительные материалы

Дочерние заметки