2024-06-13 21:01:37 +03:00
---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-03-10
zero-link:
- "[[00 HighLoad]]"
parents:
- "[[Репликация БД]]"
linked:
- "[[Репликация master-slave]]"
---
В с е реплики являются ведущими (мастерами), во все реплики можно писать изменения. А они каким-то образом синхронизируются между собой. Лидеры могут иметь дополнительные реплики в режиме [Репликация master-slave ](Репликация%20master-slave.md ).
![](Pasted%20image%2020240206194251.png)
**Плюсы**:
- Нет единой точки отказа
- Дает максимальный [High Availability ](High%20Availability.md ).
- Легкий failover
**Минусы:**
2024-06-27 22:22:43 +03:00
- Нет консистентности, есть конфликты. Могут возникать конфликты при работе с одним и тем же набором данных на разных репликах.
2024-06-13 21:01:37 +03:00
- Усложнение логики. Встречается редко.
2024-06-20 21:54:23 +03:00
- Н е масштабирует запись. Для масштабирования нужно использовать [шардирование ](Шардирование%20в%20БД.md ).
2024-06-13 21:01:37 +03:00
**Варианты применения:**
- Географическая распределенность. Репликация между ЦОД.
- Производительность.
- Устойчивость к потере ЦОДа.
- Устойчивость к проблемам сети
2024-06-27 22:22:43 +03:00
- Hot-standby реплика (VIP). Второй мастер всегда на готове, на случай если упадет основной. В о время штатной работы не используется.
2024-06-13 21:01:37 +03:00
- Offline клиенты. При плохом интернет соединении для асинхронного объединения данных. Пример БД CouchDB.
2024-06-17 18:42:04 +03:00
Варианты реализаций:
- Amazon Aurora
- Google Spanner
2024-06-13 21:01:37 +03:00
## Решение конфликтов
2024-07-11 08:38:53 +03:00
- Избегайте конфликтов. Организуйте взаимодействие так, чтобы конфликты не возникали.
2024-06-13 21:01:37 +03:00
- Last write wins. Выигрывает последняя запись. Н о обычно сложно определить кто был первым.
- Ранг реплик. Выигрывает запись от старейшей реплки.
- Слияние. Объединение конфликтных данных.
- Решение конфликтов на клиенте.
- Conflict-free replicated data types (CRDT).
- Mergeable persistent data structures.
- В этом режиме работает [Git ](Git.md )