Граф знанийНастройки

Обновлено: 2 мая 2026 г. в 15:20

Репликация и шардинг

средний

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

Репликацию и шардирование легко спутать, потому что обе техники выглядят как один разговор о росте данных, хотя они снимают разные ограничения.

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

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

Практическая польза главы

Граница данных

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

Режим репликации

Выбирайте режим репликации по допустимому отставанию, требованиям к переключению на резерв и цене конфликтов в записи.

План перебалансировки

Закладывайте перенос данных, фоновые миграции и безопасное переключение заранее, а не после появления первого горячего шарда.

Аргументация выбора

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

Контекст

Принципы проектирования масштабируемых систем

Эта глава разбирает, как масштабирование данных упирается в выбор режима репликации, схемы шардирования и плана их эволюции.

Открыть главу

Репликация и шардинг выглядят как один и тот же разговор про рост данных, но на практике отвечают на разные вопросы. Репликация помогает выдерживать отказы, разгружать чтение и держать данные ближе к пользователю. Шардирование нужно тогда, когда один набор данных перестаёт помещаться в пределы одного узла по записи, объёму или операционным окнам обслуживания.

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

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

Модели репликации

Primary-Replica

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

Нужно контролировать отставание реплик и заранее отработать автоматическое переключение на резерв.

Multi-Primary

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

Разрешение конфликтов и согласование версий быстро повышают сложность платформы и требований к команде.

Leaderless

Чтения и записи подтверждаются несколькими репликами. Такой подход удобен для высокодоступных распределённых KV/NoSQL систем.

Требует аккуратно проектировать кворумы, восстановление при чтении и поведение системы вокруг удалений.

Визуализация репликации

Загружаем визуализацию репликации...

Модели шардирования

  • Шардирование по хэшу даёт более ровное распределение, но усложняет диапазонные запросы и локальный анализ соседних значений.
  • Шардирование по диапазонам удобно для последовательных диапазонов и сортировки, но чувствительно к перегреву отдельных диапазонов.
  • Шардирование через карту размещения даёт гибкий контроль над тем, где лежат данные, но требует надёжного сервиса метаданных.
  • Шардирование по региону или арендатору упрощает изоляцию и требования к размещению данных, но делает межрегиональные и межклиентские операции дороже.

Визуализация шардирования

Загружаем визуализацию шардирования...

Связанная глава

Performance Engineering

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

Открыть главу

Перебалансировка шардов и контроль горячих шардов

Используйте согласованное хеширование и виртуальные узлы, чтобы уменьшать объём миграции при добавлении или выводе узлов.

Для горячих шардов заранее готовьте разбиение по времени, буферизацию записи и более точный ключ маршрутизации.

Перенос данных запускайте через ограниченные по скорости фоновые конвейеры с проверкой контрольных сумм и понятной точкой возобновления.

У каждой операции перебалансировки должен быть план паузы, отката и наблюдаемого прогресса.

Связанная глава

Cost Optimization & FinOps

Топология репликации и частота перебалансировки напрямую влияют на счёт за сеть, хранение и резерв мощности.

Открыть главу

Проверки перед внедрением

По каждому классу данных заданы целевое время восстановления и целевая точка восстановления.

Явно описано, какие операции требуют строгой консистентности, а где допустима контролируемая асинхронность.

Есть план эволюции ключа шардирования по мере роста продукта и изменения профиля доступа к данным.

Репликация, переключение на резерв и перебалансировка регулярно отрабатываются на учебных сценариях отказа.

Стоимость межзонной и межрегиональной репликации учитывается в модели затрат, а не всплывает постфактум.

Частая ошибка: выбирать ключ шардирования только под текущий набор запросов без плана его эволюции.

Источники

Связанные главы

  • Принципы проектирования масштабируемых систем - Помогает понять, когда рост системы действительно упирается в данные, а не в вычислительный слой или маршрутизацию.
  • CAP теорема - Объясняет, какие ограничения проявляются при сетевом разделении и почему их нельзя игнорировать в схеме данных.
  • PACELC теорема - Показывает, как выбирать между задержкой и консистентностью даже тогда, когда аварийного режима нет.
  • Фреймворк выбора СУБД - Помогает связать тип СУБД с допустимыми режимами репликации, шардирования и операционной сложности.
  • Multi-region / Global Systems - Полезно, когда данные нужно распределять по регионам и учитывать требования по размещению и отказоустойчивости.

Чтобы отмечать прохождение, включи трекинг в Настройки