Репликация — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(структура)
Строка 2: Строка 2:
 
|definition =
 
|definition =
 
'''Репликация''' — это поддержание одинаковых данных на нескольких узлах распределенной системы.}}
 
'''Репликация''' — это поддержание одинаковых данных на нескольких узлах распределенной системы.}}
'''Типы репликации'''
 
* Синхронная -- требует введения распределенных транзакций и гарантирует одинаковое состояние реплик.
 
* Асинхронная -- допускает задержки репликации на репликах.
 
 
'''Схемы репликации'''
 
* С основной копией -- запросы на запись поступают в централизованное место, а затем реплицируются
 
* Симметричная -- запросы на запись могут поступать в различные копии
 
 
  
 
== Реализация репликации ==
 
== Реализация репликации ==
 +
=== Типы репликации ===
 +
* Синхронная — гарантирует одинаковое состояние реплик, требует введения распределенных транзакций.
 +
* Асинхронная — допускает задержки репликации.
  
=== С основной копией ===
+
=== Репликация основной копией ===
 
[[Файл:Replication_Master.png|300px|thumb|right|Репликация с основной копией]]
 
[[Файл:Replication_Master.png|300px|thumb|right|Репликация с основной копией]]
Есть одна главная копия данных, изменения из неё реплицируются на все остальные копии. За согласованность изменений отвечает главная копия. Если изменения приводят к несогласованному состоянию, то транзакция откатывается. Запросы на чтение могут быть обработаны любой репликой.
+
Есть одна главная копия данных, запросы на запись поступают только туда, а затем реплицируются на все остальные копии. За согласованность изменений отвечает главная копия. Если изменения приводят к несогласованному состоянию, то транзакция откатывается. Запросы на чтение могут быть обработаны любой репликой.
 
Такая реализация эффективна, если количество записей сильно меньше количества запросов чтения.
 
Такая реализация эффективна, если количество записей сильно меньше количества запросов чтения.
  
=== Симметричная ===
+
=== Симметричная репликация ===
 
[[Файл:Replication_Symmetric.png|300px|thumb|right|Симметричная репликация]]
 
[[Файл:Replication_Symmetric.png|300px|thumb|right|Симметричная репликация]]
 
Чтение и запись могут быть обработаны любой копией. При необходимости реплики могут работать автономно.
 
Чтение и запись могут быть обработаны любой копией. При необходимости реплики могут работать автономно.
Строка 29: Строка 24:
 
* При выходе из строя любой реплики, состояние системы не согласовано и данные потеряны.
 
* При выходе из строя любой реплики, состояние системы не согласовано и данные потеряны.
  
Таким образом, синхронная репликация сложна и малонадежна. В реалньости распределенные базы данных решают эту проблему лучше.
+
Таким образом, синхронная репликация сложна и малонадежна. В реальности распределенные базы данных решают эту проблему лучше.
  
 
=== Рассылка изменений ===
 
=== Рассылка изменений ===
Информация обо всех сделанных изменения содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций.
+
Информация обо всех сделанных изменениях содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций. Это можно сделать двумя способами:
  
 
==== Репликация операторов ====
 
==== Репликация операторов ====

Версия 23:58, 26 декабря 2021

Определение:
Репликация — это поддержание одинаковых данных на нескольких узлах распределенной системы.


Реализация репликации

Типы репликации

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

Репликация основной копией

Репликация с основной копией

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

Симметричная репликация

Симметричная репликация

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

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

  • Запросы можно отправлять на географически ближайшую реплику

Недостатки:

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

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

Рассылка изменений

Информация обо всех сделанных изменениях содержится в журнале транзакций. Репликация достигается за счёт рассылки протоколов транзакций. Это можно сделать двумя способами:

Репликация операторов

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

Репликация записей

  • Пересылается информация об изменении записей
  • Результат детерминирован
  • Вынужденно пересылается большое количество записей

Применения репликации

Вертикальное масштабирование

Большое количество чтений, малое количество записей. Схема репликации с одной копией. Примеры: web-сервера, erp-системы.

Горизонтальное масштабирование

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

Повышение доступности

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

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

Ассиметричная схема.

  • Для получения резервной копии добавим специальную реплику, которая будет синхронизирована с основной.
  • В момент взятия резервной копии отключаем синхронизацию.
  • Чтобы сделать следующую резервную копию, синхронизация снова включается.
  • Реплика получает все изменения, сделанные с момента отключения.

Преобразование данных

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

Литература