Files
digital-garden/dev/architecture/Session Affinity.md
2025-01-17 16:55:52 +03:00

45 lines
3.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
- Sticky Sessions
tags:
- maturity/🌱
date: 2025-01-17
---
**Session Affinity** (или **Sticky Sessions**) — это подход в [[highload/Балансировка нагрузки|балансировке нагрузки]], при котором запросы от одного клиента всегда направляются на один и тот же сервер в течение всей сессии. Это обеспечивает сохранение состояния клиента на конкретном сервере и делает взаимодействие более последовательным.
**Преимущества**
- **Сохранение состояния**: Не требует сложной реализации хранения состояния между серверами.
- **Простота для разработчиков**: Упрощает работу с приложениями, которые не являются [[Stateless Service|stateless]].
**Недостатки**
- **Риски перегрузки**: Сервер, привязанный к большому количеству клиентов, может стать перегруженным.
- **Уязвимость к сбоям**: Если сервер выходит из строя, сессии клиентов теряются.
- Меньшая гибкость [[Масштабирование информационной системы|масштабирования]]: Динамическое добавление или удаление серверов затруднено.
**Методы реализации**
- **По IP-адресу клиента**:
- Сервер выбирается на основе IP-адреса клиента.
- Простая реализация, но уязвима к использованию прокси-серверов и NAT.
- **По cookie**:
- Балансировщик устанавливает [[../network/Cookie|cookie]] на клиенте, где хранится информация о назначенном сервере.
- Наиболее популярный метод благодаря своей гибкости.
- **На основе токена**:
- Клиент предоставляет токен (например, JWT), который указывает на сервер, обрабатывающий сессию.
- Токен может быть частью механизма аутентификации.
- **Hash-Based (Хеширование)**:
- Сервер определяется через хеширование идентификатора клиента (например, IP, ID пользователя или URL).
- Эффективен для систем с большим количеством пользователей.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]
**Родитель**:: [[highload/Балансировка нагрузки|Балансировка нагрузки]]
**Источник**::
**Создана**:: [[2025-01-17]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->