Открыть сервис

Репликация по запросу

Репликация по запросу (англ. on-demand replication, pull replication) — это механизм синхронизации данных, при котором копирование информации с источника (основного узла) на приёмник (реплику) инициируется не по расписанию или событию, а по явному запросу со стороны приёмника или администратора. В отличие от непрерывной или планируемой репликации, данный подход позволяет экономить ресурсы сети и хранения, актуализируя данные только в момент, когда это необходимо для конкретной операции.

Принцип работы

Репликация по запросу реализуется по модели «клиент-сервер», где клиент (реплика) отправляет запрос на получение изменённых данных с сервера (источника). В ответ сервер передаёт дельту — набор изменений, произошедших с момента последней синхронизации. При этом реплика может как полностью загружать актуальную копию данных, так и получать только инкрементальные обновления.

Технически процесс включает следующие этапы:

  1. Инициализация — реплика отправляет запрос с указанием версии данных (например, временной метки или номера транзакции).
  2. Обработка запроса — сервер определяет набор изменений, которые необходимо передать.
  3. Передача данных — сервер отправляет реплике дельту или полный слепок данных.
  4. Применение — реплика применяет полученные изменения к своей локальной копии.

История

Концепция репликации по запросу возникла в контексте распределённых баз данных в 1970–1980-х годах, когда стало очевидно, что постоянная синхронизация всех узлов сети неэффективна при большом количестве реплик и низкой пропускной способности каналов связи. Одним из первых практических применений стала система управления базами данных (СУБД) Ingres, где в 1979 году была реализована возможность выборочной загрузки данных с главного сервера.

В 1990-х годах, с развитием интернета и мобильных устройств, репликация по запросу стала широко использоваться в системах управления контентом (CMS) и файловых синхронизаторах. Например, в протоколе NNTP (Network News Transfer Protocol) для распространения новостей Usenet применялся pull-механизм: серверы запрашивали новые статьи у соседей по мере необходимости.

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

Классификация

По способу инициирования

  • Ручная репликация — администратор или пользователь вручную запускает процесс синхронизации (например, нажатием кнопки «Обновить»).
  • Автоматическая по запросу — приложение или сервис автоматически отправляет запрос на репликацию при наступлении определённого условия (например, при попытке доступа к устаревшим данным).

По объёму передаваемых данных

  • Полная репликация — при каждом запросе передаётся вся копия данных (используется редко из-за высоких затрат).
  • Инкрементальная репликация — передаются только изменения (дельта) с момента последней синхронизации.

По типу данных

  • Репликация баз данных — синхронизация таблиц, записей или транзакций.
  • Файловая репликация — синхронизация файлов и папок (например, в системах контроля версий, таких как Git).
  • Объектная репликация — синхронизация объектов в объектно-ориентированных базах данных или облачных хранилищах.

Применение

Системы управления базами данных

В СУБД репликация по запросу используется для создания отказоустойчивых конфигураций. Например, в PostgreSQL реализована асинхронная потоковая репликация, однако также возможна настройка «pull-репликации» с помощью утилиты pg_basebackup или модуля pglogical. В MySQL аналогичный механизм реализован через репликацию на основе GTID (Global Transaction Identifier).

Файловые системы и облачные хранилища

В системах синхронизации файлов, таких как rsync или Dropbox, репликация по запросу позволяет загружать только изменённые файлы при подключении устройства к сети. В облачных хранилищах (например, Amazon S3 с функцией Cross-Region Replication) репликация может быть настроена как по запросу, так и по расписанию.

Системы контроля версий

В распределённых системах контроля версий, таких как Git, репликация по запросу является основным механизмом обмена данными между репозиториями. Команды git fetch и git pull инициируют запрос на получение изменений с удалённого сервера.

Резервное копирование

Репликация по запросу применяется в системах резервного копирования для создания копий данных в удалённых центрах обработки данных (ЦОД). Например, в решении Veeam Backup & Replication можно настроить задание на копирование резервных копий по запросу, что позволяет экономить место на диске и сетевой трафик.

Веб-приложения

В веб-разработке репликация по запросу используется для загрузки контента с сервера на клиентскую сторону. Например, технология AJAX (Asynchronous JavaScript and XML) позволяет веб-страницам запрашивать данные с сервера без перезагрузки страницы — это частный случай репликации по запросу на уровне представления.

Преимущества и недостатки

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

  • Экономия ресурсов — данные передаются только при необходимости, что снижает нагрузку на сеть и хранилище.
  • Гибкость — администратор или приложение может выбирать, когда и какие данные синхронизировать.
  • Простота реализации — для работы не требуется сложных протоколов постоянного соединения.
  • Снижение риска конфликтов — при редкой репликации вероятность одновременного изменения одних и тех же данных на разных узлах ниже.

Недостатки

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

Сравнение с другими моделями репликации

ХарактеристикаРепликация по запросуНепрерывная репликацияПланируемая репликация
ИнициацияПо запросу клиентаАвтоматически, в реальном времениПо расписанию
Задержка данныхМинимальная (при запросе)Нулевая (теоретически)Зависит от интервала
Нагрузка на сетьНизкая (в среднем)Высокая (постоянная)Средняя (периодическая)
Сложность реализацииНизкаяВысокаяСредняя
ПрименениеМобильные устройства, резервное копирование, системы контроля версийФинансовые системы, телеметрияАналитические системы, отчёты

Интересные факты

  • В протоколе BitTorrent используется механизм, обратный репликации по запросу: пиры (клиенты) запрашивают куски файлов у других участников сети, что делает систему децентрализованной и устойчивой к перегрузкам.
  • В операционной системе Linux утилита rsync позволяет выполнять репликацию по запросу с возможностью сжатия и шифрования данных при передаче.
  • В 2010-х годах репликация по запросу стала основой для реализации «ленивой репликации» (lazy replication) в системах управления базами данных, где данные синхронизируются только при попытке их чтения.

Источники

  • Gray, J., Helland, P., O'Neil, P., & Shasha, D. (1996). «The Dangers of Replication and a Solution». Proceedings of the 1996 ACM SIGMOD International Conference on Management of Data.
  • Bernstein, P. A., & Goodman, N. (1981). «Concurrency Control in Distributed Database Systems». ACM Computing Surveys.
  • PostgreSQL Documentation: «Replication and High Availability». PostgreSQL Global Development Group.
  • Veeam Software. (2023). «Veeam Backup & Replication User Guide».
  • Tanenbaum, A. S., & van Steen, M. (2007). «Distributed Systems: Principles and Paradigms». Pearson.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →