47 lines
2.7 KiB
Markdown
47 lines
2.7 KiB
Markdown
---
|
||
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
|
||
|
||
**Минусы:**
|
||
- Нет консистентности, есть конфликты. Могут возникать конфликты при работе с одним и тем же набором данных на разных репликах.
|
||
- Усложнение логики. Встречается редко.
|
||
- Не масштабирует запись. Для масштабирования нужно использовать [шардирование](Шардирование%20в%20БД.md).
|
||
|
||
**Варианты применения:**
|
||
- Географическая распределенность. Репликация между ЦОД.
|
||
- Производительность.
|
||
- Устойчивость к потере ЦОДа.
|
||
- Устойчивость к проблемам сети
|
||
- Hot-standby реплика (VIP). Второй мастер всегда на готове, на случай если упадет основной. Во время штатной работы не используется.
|
||
- Offline клиенты. При плохом интернет соединении для асинхронного объединения данных. Пример БД CouchDB.
|
||
|
||
Варианты реализаций:
|
||
- Amazon Aurora
|
||
- Google Spanner
|
||
## Решение конфликтов
|
||
- Избегайте конфликтов
|
||
- Last write wins. Выигрывает последняя запись. Но обычно сложно определить кто был первым.
|
||
- Ранг реплик. Выигрывает запись от старейшей реплки.
|
||
- Слияние. Объединение конфликтных данных.
|
||
- Решение конфликтов на клиенте.
|
||
- Conflict-free replicated data types (CRDT).
|
||
- Mergeable persistent data structures.
|
||
- В этом режиме работает [Git](Git.md) |