Какие термины применимы для горизонтального масштабирования?

«Какие термины применимы для горизонтального масштабирования?» — вопрос из категории Распределенные системы, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Горизонтальное масштабирование (scaling out) связано с добавлением новых узлов в систему. Ключевые термины и концепции:

  • Шардирование (Sharding): Горизонтальное разделение данных по разным узлам (шардам) на основе ключа (например, user_id).
  • Репликация (Replication): Создание копий данных на нескольких узлах для отказоустойчивости и чтения.
  • Балансировка нагрузки (Load Balancing): Распределение входящих запросов между доступными серверами.
  • Консистентное хеширование (Consistent Hashing): Алгоритм для минимизации перемещения данных при добавлении/удалении узлов в распределенном кэше или хранилище.
  • Сервис-ориентированная архитектура (SOA) / Микросервисы (Microservices): Подход, где система состоит из независимых, слабосвязанных сервисов, которые можно масштабировать отдельно.
  • Очереди сообщений (Message Queues): Такие как Kafka или RabbitMQ, которые помогают буферизировать и распределять нагрузку между потребителями.
  • Stateless-сервисы: Сервисы, не хранящие состояние сессии на сервере, что упрощает горизонтальное масштабирование.

Пример: Вместо одной мощной базы данных (вертикальное масштабирование) используется кластер из нескольких серверов PostgreSQL с шардированием по диапазонам ID и репликами для чтения.