2.8 KiB
2.8 KiB
aliases | tags | date | zero-link | parents | linked | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
Все реплики являются ведущими (мастерами), во все реплики можно писать изменения. А они каким-то образом синхронизируются между собой. Лидеры могут иметь дополнительные реплики в режиме Репликация master-slave.
Плюсы:
- Нет единой точки отказа
- Дает максимальный High Availability.
- Легкий failover
Минусы:
- Нет консистентности, есть конфликты. Могут возникать конфликты при работе с одним и тем же набором данных на разных репликах.
- Усложнение логики. Встречается редко.
- Не масштабирует запись. Для масштабирования нужно использовать шардирование.
Варианты применения:
- Географическая распределенность. Репликация между ЦОД.
- Производительность.
- Устойчивость к потере ЦОДа.
- Устойчивость к проблемам сети
- Hot-standby реплика (VIP). Второй мастер всегда на готове, на случай если упадет основной. Во время штатной работы не используется.
- Offline клиенты. При плохом интернет соединении для асинхронного объединения данных. Пример БД CouchDB.
Варианты реализаций:
- Amazon Aurora
- Google Spanner
Решение конфликтов
- Избегайте конфликтов. Организуйте взаимодействие так, чтобы конфликты не возникали.
- Last write wins. Выигрывает последняя запись. Но обычно сложно определить кто был первым.
- Ранг реплик. Выигрывает запись от старейшей реплки.
- Слияние. Объединение конфликтных данных.
- Решение конфликтов на клиенте.
- Conflict-free replicated data types (CRDT).
- Mergeable persistent data structures.
- В этом режиме работает Git