Введение
Обмен информацией для обеспечения согласованности в вычислениях Репликация в вычислениях включает в себя обмен информацией для обеспечения согласованности между избыточными ресурсами, такими как программные или аппаратные компоненты, для повышения надежности, отказоустойчивости или доступности.
Replication in computing involves sharing information so as to ensure consistency between redundant resources, such as software or hardware components, to improve reliability, fault tolerance, or accessibility.
Репликация базы данных
Репликация базы данных может использоваться во многих системах управления базами данных (СУБД), обычно с первичной / репликацией отношений между оригиналом и копиями. Первичный записывает обновления, которые затем передаются к репликам. Каждая реплика выводит сообщение о том, что она успешно получила обновление, что позволяет отправлять последующие обновления. При репликации с несколькими мастерами обновления могут быть отправлены в любой узел базы данных, а затем передаваться на другие серверы. Это часто желательно, но вводит в значительное увеличение затрат и сложности, что может сделать его непрактичным в некоторых ситуациях. Наиболее распространенной проблемой, которая существует в репликации с несколькими мастерами, является предотвращение или разрешение транзакционных конфликтов. Большинство синхронных (или жадных) репликационных решений выполняют предотвращение конфликтов, в то время как асинхронные (или ленивые) решения должны выполнять разрешение конфликтов. Например, если одна и та же запись изменяется на двух узлах одновременно, то система репликации обнаружит конфликт, прежде чем подтвердить передачу и отменить одну из транзакций. Ленивая система репликации позволила бы обеим транзакциям совершать и запускать разрешение конфликта во время повторной синхронизации. Решение такого конфликта может основываться на временной метке транзакции, на иерархии узлов происхождения или на гораздо более сложной логике, которая последовательно решает все узлы. Репликация базы данных становится более сложной, когда она масштабируется горизонтально и вертикально. Горизонтальный масштаб имеет больше копий данных, в то время как вертикальный масштаб имеет копии данных, расположенные на больших физических расстояниях. Проблемы, возникающие при горизонтальном масштабировании, могут быть уменьшены многослойным протоколом доступа с несколькими видами. Первые проблемы вертикального масштабирования в значительной степени были решены путем улучшения надежности и производительности Интернета. Когда данные реплицируются между серверами баз данных, так что информация остается последовательной во всей системе баз данных, и пользователи не могут сказать или даже знать, какой сервер в СУБД они используют, система, как говорят, проявляет прозрачность репликации. Однако не всегда можно добиться прозрачности репликации. Когда данные реплицируются в базе данных, они будут ограничены теоремой CAP или теоремой PACELC. В движении NoSQL, согласованность данных обычно приносится в жертву в обмен на другие более желательные свойства, такие как доступность (A), толерантность к разделам (P), и т. д. Разработаны различные модели согласованности данных, которые служат соглашением об уровне обслуживания (SLA) между поставщиками услуг и пользователями.
Репликация дискового хранилища
Активная репликация (в реальном времени) хранилища обычно реализуется путем распределения обновлений блочного устройства на несколько физических жестких дисков. Таким образом, любая файловая система, поддерживаемая операционной системой, может быть реплицирована без модификации, поскольку код файловой системы работает на уровне выше уровня драйвера блочного устройства. Он реализован либо в аппаратном обеспечении (в дисковом массивном контроллере), либо в программном обеспечении (в драйвере устройства). Самый простой метод - зеркальное копирование дисков, которое типично для локально подключенных дисков. Промышленность хранения сужает определения, поэтому зеркальное отражение является локальной (недалекой) операцией. Репликация может быть расширена по компьютерной сети, так что диски могут быть расположены в физически удаленных местах, и обычно применяется модель репликации первичной / репликационной базы данных. Цель репликации - предотвратить ущерб от сбоев или катастроф, которые могут произойти в одном месте, или в случае, если такие события произойдут, улучшить способность восстанавливать данные. Для репликации задержка является ключевым фактором, потому что она определяет, насколько далеко друг от друга могут находиться сайты или тип репликации, который может быть использован. Основная характеристика такой кросс-сайт репликации заключается в том, как обрабатываются операции записи, либо через асинхронную, либо через синхронную репликацию; синхронная репликация должна ждать ответа целевого сервера в любой операции записи, тогда как асинхронная репликация этого не делает. Синхронная репликация гарантирует "нулевую потерю данных" с помощью атомных операций записи, где операция записи не считается завершенной до тех пор, пока не будет подтверждена как локальным, так и удаленным хранилищем. Большинство приложений ждут завершения записи, прежде чем приступать к дальнейшей работе, поэтому общая производительность значительно снижается. По своей сути, производительность падает пропорционально расстоянию, поскольку минимальная латентность диктуется скоростью света. На расстоянии 10 км самый быстрый возможный обход занимает 67 мкм, тогда как вся локальная кэшированная запись завершается примерно за 1020 мкм. При асинхронной репликации операция записи считается завершенной, как только локальное хранилище признает ее. Удаленное хранение обновляется с небольшим отставанием. Производительность значительно повышается, но в случае сбоя локального хранилища удаленное хранилище не гарантируется иметь текущую копию данных (наиболее последние данные могут быть потеряны). Полусинхронная репликация обычно считает операцию записи завершенной, когда она подтверждается локальным хранилищем и принимается или регистрируется удаленным сервером. Фактическая удаленная запись выполняется асинхронно, что приводит к лучшей производительности, но удаленное хранение будет отставать от локального хранения, так что нет никакой гарантии долговечности (т.е. бесшовной прозрачности) в случае сбоя локального хранения. Репликация в точке времени производит периодические снимки, которые реплицируются вместо первичного хранения. Это предназначено для воспроизведения только измененных данных, а не всего объема. Поскольку с помощью этого метода реплицируется меньше информации, репликация может происходить по менее дорогим связям с пропускной способностью, таким как iSCSI или T1, вместо волоконно-оптических линий.
Реализация
Многие распределенные файловые системы используют репликацию для обеспечения отказоустойчивости и избежания единственной точки отказа. Многие коммерческие синхронные системы репликации не замирают, когда удаленная репликация терпит неудачу или теряет соединение - поведение, которое гарантирует нулевую потерю данных, - но продолжают работать локально, теряя желаемую цель нулевой точки восстановления. Для решения ограничений, налагаемых задержкой, могут применяться методы оптимизации сетей широкой области (WAN).
Репликация на основе файлов
Файловая репликация проводит репликацию данных на логическом уровне (т.е. отдельных файлах данных), а не на уровне блока хранения. Существует множество различных способов выполнения этого, которые почти исключительно полагаются на программное обеспечение.
Захват с помощью драйвера ядра
Драйвер ядра (особенно драйвер фильтра) может использоваться для перехвата вызовов к функциям файловой системы, захватывая любую активность по мере ее возникновения. Это использует тот же тип технологии, что и активные проверки вирусов в реальном времени. На этом уровне, логические операции с файлами, такие как открытие файла, запись, удаление и т.д. Драйвер ядра передает эти команды другому процессу, как правило, через сеть на другую машину, которая будет имитировать операции исходной машины. Как и репликация на уровне блоков, репликация на уровне файлов позволяет использовать как синхронный, так и асинхронный режим. В синхронном режиме операции записи на исходном компьютере не выполняются и не допускаются до тех пор, пока целевой компьютер не подтвердит успешную репликацию. Синхронный режим менее распространен в продуктах репликации файлов, хотя существует несколько решений. Решения репликации на уровне файлов позволяют принимать обоснованные решения о репликации на основе местоположения и типа файла. Например, могут быть исключены временные файлы или части файловой системы, не имеющие никакой коммерческой ценности. Передаваемые данные также могут быть более гранулированными; если приложение записывает 100 байтов, то передаются только 100 байтов вместо полного блока диска (обычно 4096 байтов). Это значительно уменьшает объем данных, отправляемых с исходной машины, и нагрузку на хранение на целевой машине. Недостатки этого решения только программного обеспечения включают в себя требование к внедрению и обслуживанию на уровне операционной системы и увеличение нагрузки на вычислительную мощность машины.
Репликация журналов файловой системы
Подобно журналам транзакций баз данных, многие файловые системы имеют возможность вести журнал своей активности. Журнал может быть отправлен на другую машину, либо периодически, либо в режиме реального времени посредством потоковой передачи. С другой стороны, журнал может использоваться для воспроизведения модификаций файловой системы. Одной из примечательных реализаций является System Center Data Protection Manager (DPM) от Microsoft, выпущенный в 2005 году, который выполняет периодические обновления, но не предлагает репликацию в реальном времени.
Репликация партий
Это процесс сравнения исходных и целевых файловых систем и обеспечения соответствия целевого файла исходному файлу. Главное преимущество заключается в том, что такие решения обычно бесплатны или недороги. Недостатком является то, что процесс их синхронизации является достаточно системным, и, следовательно, этот процесс обычно выполняется редко. Одной из примечательных реализаций является rsync.
Репликация в файле
В операционной системе соединения страниц в соединении файла иногда реплицируются в треке, чтобы уменьшить время ожидания вращения. В VSAM IBM данные индекса иногда реплицируются в треке для уменьшения ротационной задержки.
Распределенная репликация общей памяти
Другой пример использования репликации появляется в распределенных системах общей памяти, где многие узлы системы используют одну и ту же страницу памяти. Это обычно означает, что у каждого узла есть отдельная копия (реплика) этой страницы.
Первичное резервное копирование и многопримиторная репликация
Многие классические подходы к репликации основаны на первичной модели резервного копирования, где одно устройство или процесс имеет односторонний контроль над одним или несколькими другими процессами или устройствами. Например, первичный может выполнять некоторые вычисления, передавая журнал обновлений в резервный (поддерживающий) процесс, который затем может взять на себя управление, если первичный не работает. Этот подход распространен для репликации баз данных, несмотря на риск того, что если часть журнала потеряна во время сбоя, резервная копия может быть не в состоянии, идентичном первичному, и транзакции могут быть потеряны. Слабость основных систем резервного копирования заключается в том, что только одна из них фактически выполняет операции. Устойчивость к ошибкам повышается, но идентичная резервная система удваивает затраты. По этой причине, начиная с 1985 года, исследовательское сообщество распределенных систем начало изучать альтернативные методы репликации данных. Результатом этой работы стало появление схем, в которых группа реплик могла сотрудничать, причем каждый процесс действовал как резервная копия, одновременно обрабатывая часть рабочей нагрузки. Компьютерный ученый Джим Грей проанализировал многоприоритетные схемы репликации в рамках транзакционной модели и опубликовал широко цитируемую статью, скептически относящуюся к подходу "Опасности репликации и решение". Он утверждал, что если данные не разделяются естественным образом, так что база данных может рассматриваться как n n несвязанных подбаз данных, конфликты контроля параллельности приведут к серьезной деградации производительности, и группа реплик, вероятно, замедлится в зависимости от n. Грей предположил, что наиболее распространенные подходы, вероятно, приведут к деградации, которая масштабируется как O ((n3). Его решение, которое заключается в разделе данных, жизнеспособно только в ситуациях, когда данные действительно имеют естественный ключ разделения. В 1985-1987 годах модель виртуальной синхронизации была предложена и стала широко принятым стандартом (она использовалась в системах Isis Toolkit, Horus, Transis, Ensemble, Totem, Spread, C Ensemble, Phoenix и Quicksilver и является основой для стандарта вычислительных систем с терпимостью к ошибкам CORBA). Виртуальная синхронность позволяет использовать многоприоритетный подход, при котором группа процессов сотрудничает для параллелизации некоторых аспектов обработки запросов. Схема может использоваться только для некоторых форм данных в памяти, но может обеспечивать линейные ускорения в размере группы. Ряд современных продуктов поддерживает подобные схемы. Например, Spread Toolkit поддерживает ту же самую модель виртуальной синхронизации и может использоваться для реализации многоприоритетной схемы репликации; также можно использовать C Ensemble или Quicksilver таким образом. WANdisco позволяет активное репликацию, когда каждый узел в сети является точной копией или копией, и, следовательно, каждый узел в сети активен в одно время; эта схема оптимизирована для использования в широкополосной сети (WAN). Современные протоколы репликации оптимизируют для общей безотказной работы. Репликация цепочек является популярным семейством таких протоколов. Современные варианты протоколов репликации цепочки обеспечивают высокую пропускную способность и высокую согласованность, распоряжая реплики в цепочке для записей. Этот подход позволяет локально читать на всех узлах репликации, но имеет высокую задержку для записей, которые должны пересекать несколько узлов последовательно. Более поздний многоприоритетный протокол Hermes сочетает в себе когерентные иншаллации и логические временные метки для достижения сильной согласованности с локальными чтениями и высокопроизводительными записями со всех реплик. Во время безотказной работы его записи на основе вещания не противоречат друг другу и выполняются после всего одного многоканального круглого хода к узлам репликации. Эта конструкция обеспечивает высокую пропускную способность и низкую задержку как для чтения, так и для записи.