digital-garden/dev/architecture/highload/Полу-синхронная репликация.md

6.3 KiB
Raw Blame History

aliases tags date zero-link parents linked
semi-sync
maturity/🌱
2024-06-07
../../../meta/zero/00 HighLoad
Репликация БД
Асинхронная репликация
Синхронная репликация

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

Комит прошел на одной реплике, но данные по транзакции были скопированы во все остальные реплики, но еще не были применены.

Реализовано в MySQL

Схема выполнения на MySQL

Как работает

  • Подготовка транзакции в движке БД: Транзакция начинается на master, где собираются все изменения данных.
  • Запись транзакции в лог: Все изменения записываются в журнал транзакций.
  • Пересылка лога репликам: Журнал транзакций отправляется на реплики. Master ждет подтверждения от как минимум одной реплики о получении журнала, но не обязательно его применении.
  • Завершение транзакции в движке БД: После получения подтверждения от одной или нескольких реплик транзакция завершается на master, и клиент получает подтверждение.
  • Воспроизведение транзакции на репликах: Реплики применяют полученные изменения к своим копиям данных, но это может произойти с задержкой.

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

  • Баланс между надежностью и производительностью: Полу-синхронная репликация обеспечивает более высокую надежность данных по сравнению с асинхронной репликацией, так как master ждет подтверждения от реплик перед завершением транзакции. Это снижает риск потери данных при сбое.
  • Сниженное время отклика: В отличие от синхронной репликации, master не ждет подтверждения от всех реплик, что снижает время отклика и повышает производительность системы.
  • Меньшая вероятность отставания данных: Благодаря ожиданию подтверждения от реплик перед завершением транзакции, вероятность отставания данных на репликах уменьшается.

Минусы

  • Проблемы с консистентностью данных: Хотя master ждет подтверждения от одной или нескольких реплик, данные на других репликах могут оставаться несогласованными до применения изменений, что может привести к проблемам с консистентностью. Фантомное чтение.
  • Сложность управления: Полу-синхронная репликация требует более сложной настройки и управления по сравнению с асинхронной репликацией, так как необходимо следить за подтверждениями от реплик и управлять задержками.
  • Увеличенное время отклика по сравнению с асинхронной репликацией: Несмотря на снижение времени отклика по сравнению с синхронной репликацией, полу-синхронная репликация все же медленнее асинхронной, так как требует ожидания подтверждений от реплик.

Примеры использования

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


Мета информация

Область:: ../../../meta/zero/00 HighLoad Родитель:: Репликация БД Источник:: Автор:: Создана:: 2024-06-07

Дополнительные материалы

Дочерние заметки