Архитектура Cluster
Localzet Cluster использует архитектуру Gateway-Worker для разделения ответственности между компонентами и обеспечения горизонтального масштабирования.
Компоненты системы
Cluster состоит из трех основных компонентов:
1. Gateway (Шлюз)
Gateway обрабатывает все клиентские соединения и маршрутизирует сообщения в Business Worker'ы.
Основные функции:
- Прием клиентских соединений (WebSocket, TCP и т.д.)
- Маршрутизация сообщений к Business Worker'ам
- Управление соединениями (client_id, группы, UID)
- Обработка сессий на уровне Gateway
Характеристики:
- Можно запускать несколько экземпляров для распределения нагрузки
- Каждый Gateway процесс имеет уникальный внутренний порт
- Gateway не содержит бизнес-логику приложения
2. Business Worker
Business Worker обрабатывает бизнес-логику приложения. Получает события от Gateway и выполняет необходимые действия.
Основные функции:
- Обработка событий подключения/отключения клиентов
- Обработка сообщений от клиентов
- Выполнение бизнес-логики
- Взаимодействие с базой данных и внешними сервисами
Характеристики:
- Можно запускать несколько экземпляров для параллельной обработки
- Не имеет прямых соединений с клиентами
- Общается с Gateway через внутренний протокол
3. Register (Регистратор)
Register обеспечивает service discovery и координацию между компонентами.
Основные функции:
- Регистрация Gateway серверов
- Распространение списка Gateway адресов
- Координация подключений Business Worker'ов
Характеристики:
- Запускается в единственном экземпляре (или с репликацией)
- Использует простой текстовый протокол для общения
- Поддерживает аутентификацию через secret key
Поток данных
Подключение клиента
- Клиент подключается к Gateway
- Gateway генерирует уникальный
client_id - Gateway отправляет событие
onConnectв Business Worker - Business Worker обрабатывает подключение и может установить сессию
Обработка сообщений
- Клиент отправляет сообщение в Gateway
- Gateway маршрутизирует сообщение в один из Business Worker'ов (по алгоритму роутинга)
- Business Worker обрабатывает сообщение
- Если нужно отправить ответ, используется Gateway API для отправки клиенту
Отключение клиента
- Клиент отключается от Gateway
- Gateway отправляет событие
onCloseв Business Worker - Business Worker обрабатывает отключение
- Gateway очищает все данные о соединении (группы, UID, сессии)
Протокол обмена данными
Gateway и Business Worker общаются через двоичный протокол Cluster (Federation), который оптимизирован для высокой производительности.
Особенности протокола:
- Бинарный формат для минимального размера пакетов
- Поддержка сериализации данных
- Флаги для оптимизации (raw данные, скалярные значения)
- Встроенная информация о соединении (IP, порт, connection_id)
Масштабирование
Горизонтальное масштабирование
- Gateway: Запустите несколько Gateway процессов на разных серверах или портах
- Business Worker: Увеличьте количество процессов для обработки большей нагрузки
- Register: Может быть реплицирован для отказоустойчивости
Распределение нагрузки
- Gateway: Использует балансировку на уровне Load Balancer или DNS
- Business Worker: Использует роутинг (по умолчанию - привязка к серверу, можно настроить случайный)
Безопасность
- Secret Key: Все компоненты должны использовать одинаковый
secretKeyдля аутентификации - Внутренняя сеть: Gateway и Business Worker общаются через внутреннюю сеть
- Клиентская аутентификация: Может быть реализована на уровне Business Worker
Отказоустойчивость
- При падении Business Worker, Gateway автоматически прекращает маршрутизацию на него
- При падении Gateway, клиенты могут переподключиться к другому Gateway
- Register автоматически удаляет неактивные Gateway из списка

