Jump to content

Оптимистическая репликация

Оптимистическая репликация , также известная как ленивая репликация . [1] [2] — это стратегия репликации , при которой репликам разрешено расходиться. [3]

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

Алгоритмы

[ редактировать ]

Оптимистичный алгоритм репликации состоит из пяти элементов:

  1. Отправка операций : пользователи отправляют операции на независимых сайтах.
  2. Распространение : каждый сайт разделяет операции, о которых он знает, с остальной частью системы.
  3. Планирование : каждый сайт определяет порядок выполнения операций, о которых он знает.
  4. Разрешение конфликтов : если между операциями, запланированными сайтом, возникают какие-либо конфликты, он должен каким-то образом изменить их.
  5. Обязательство : Объекты согласовывают окончательный график и результаты разрешения конфликтов, а операции становятся постоянными.

Существует две стратегии распространения: передача состояния, когда сайты распространяют представление текущего состояния, и передача операций, когда сайты распространяют выполненные операции (по сути, список инструкций о том, как достичь нового состояния).

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

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

  1. Отправка операции: пользователи редактируют локальные версии файлов.
  2. Распространение: пользователи вручную извлекают обновления с центрального сервера или отправляют изменения, как только пользователь чувствует, что они готовы.
  3. Планирование: операции планируются в том порядке, в котором они получены центральным сервером.
  4. Разрешение конфликтов: когда пользователь отправляет данные в центральный репозиторий или извлекает их из него, любые конфликты будут отмечены для того, чтобы этот пользователь мог исправить их вручную.
  5. Обязательство: как только центральный сервер принимает изменения, вносимые пользователем, они фиксируются навсегда.

Особым случаем репликации является синхронизация , при которой имеется только две реплики. Например, персональные цифровые помощники (КПК) позволяют пользователям редактировать данные либо на КПК, либо на компьютере, а затем объединять эти два набора данных вместе. Однако обратите внимание, что репликация является более широкой проблемой, чем синхронизация, поскольку реплик может быть более двух.

Другие примеры включают в себя:

Подразумеваемое

[ редактировать ]

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

В качестве простого примера: если приложение содержит способ просмотра некоторой части состояния базы данных и способ ее редактирования, то пользователи могут редактировать это состояние, но затем не видеть его изменения в средстве просмотра. Встревоженные тем, что их редактирование «не сработало», они могут попробовать его еще раз, возможно, более одного раза. Если обновления не идемпотентны (например, увеличивают значение), это может привести к катастрофе. Даже если они идемпотентны, ложные обновления базы данных могут привести к снижению производительности, особенно когда системы баз данных обрабатывают большие нагрузки; это может стать порочным кругом.

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

Оптимистически реплицируемые базы данных должны быть очень осторожны, предлагая такие функции, как ограничения достоверности данных. Если какое-либо обновление может быть принято или не принято в зависимости от текущего состояния записи, то два обновления (A и B) могут быть индивидуально законными относительно начального состояния системы, но одно или несколько обновлений могут быть незаконными. в зависимости от состояния системы после другого обновления (например, A и B оба допустимы, но AB или BA незаконны). Если A и B инициируются примерно в одно и то же время в базе данных, то A может быть успешно применен на некоторых узлах, а B — на других, но как только A и B «встретятся» и будет предпринята попытка на узле, который уже был применив другой, будет обнаружен конфликт. В этом случае система должна решить, какое обновление в конечном итоге «выиграет», и организовать для всех узлов, которые уже применили проигрышное обновление, его отмену. Однако некоторые узлы могут временно раскрывать состояние отмененного обновления, и может отсутствовать способ сообщить пользователю, инициировавшему обновление, о его сбое, не требуя от него ожидания (возможно, навсегда) подтверждения принятия на каждом узле.

  1. ^ Ладен, Р.; Лисков Б.; Шрира, Л.; Гемават, С. (1992). «Обеспечение высокой доступности с помощью ленивой репликации». Транзакции ACM в компьютерных системах . 10 (4): 360–391. CiteSeerX   10.1.1.586.7749 . дои : 10.1145/138873.138877 . S2CID   2219840 .
  2. ^ Ладен, Р.; Лисков Б.; Шрира, Л. (1990). Ленивая репликация: использование семантики распределенных сервисов . Материалы девятого ежегодного симпозиума ACM по принципам распределенных вычислений . стр. 43–57. дои : 10.1145/93385.93399 .
  3. ^ Сайто, Ясуси; Шапиро, Марк (2005). «Оптимистическая репликация». Обзоры вычислительной техники ACM . 37 (1): 42–81. CiteSeerX   10.1.1.324.3599 . дои : 10.1145/1057977.1057980 . S2CID   1503367 .
  4. ^ Грей, Дж .; Хелланд, П.; О'Нил, П .; Шаша, Д. (1996). Опасности репликации и решение (PDF) . Материалы Международной конференции ACM SIGMOD 1996 года по управлению данными . стр. 173–182. дои : 10.1145/233269.233330 . [ постоянная мертвая ссылка ]
  5. ^ Терри, Д.Б.; Теймер, ММ; Петерсен, К.; Демерс, Эй Джей; Спрейцер, MJ; Хаузер, CH (1995). Управление конфликтами обновлений в Bayou — слабосвязной реплицируемой системе хранения . Материалы пятнадцатого симпозиума ACM по принципам операционных систем. стр. 172–182. дои : 10.1145/224056.224070 .
  6. ^ Кермаррек, AM; Роустрон, А.; Шапиро, М.; Друшель, П. (2001). Подход IceCube к согласованию расходящихся реплик . Материалы двадцатого ежегодного симпозиума ACM по принципам распределенных вычислений . стр. 210–218. дои : 10.1145/383962.384020 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bae1e580104224ff78c20f9dda6b82ab__1692856560
URL1:https://arc.ask3.ru/arc/aa/ba/ab/bae1e580104224ff78c20f9dda6b82ab.html
Заголовок, (Title) документа по адресу, URL1:
Optimistic replication - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)