diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index 6cda64d3..78ab2f00 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -24,12 +24,16 @@ "unresolvedLinks": false, "recentFilesStore": [ { - "filepath": "_inbox/Репликация master-master.md", - "timestamp": 1720676085556 + "filepath": "_inbox/Синхронная репликация.md", + "timestamp": 1720676657416 }, { "filepath": "_inbox/Репликация БД.md", - "timestamp": 1720676082682 + "timestamp": 1720676654276 + }, + { + "filepath": "_inbox/Репликация master-master.md", + "timestamp": 1720676085556 }, { "filepath": "_inbox/Журналы в MySQL.md", @@ -38,10 +42,6 @@ { "filepath": "_inbox/Write-Ahead Log.md", "timestamp": 1720675855378 - }, - { - "filepath": "_inbox/Журнал БД.md", - "timestamp": 1720675813187 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index f2c78c86..b9223103 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,13 +1,17 @@ { "recentFiles": [ { - "basename": "Репликация master-master", - "path": "_inbox/Репликация master-master.md" + "basename": "Синхронная репликация", + "path": "_inbox/Синхронная репликация.md" }, { "basename": "Репликация БД", "path": "_inbox/Репликация БД.md" }, + { + "basename": "Репликация master-master", + "path": "_inbox/Репликация master-master.md" + }, { "basename": "Журналы в MySQL", "path": "_inbox/Журналы в MySQL.md" @@ -195,10 +199,6 @@ { "basename": "Exchange Topics", "path": "_inbox/Exchange Topics.md" - }, - { - "basename": "Exchange Headers", - "path": "_inbox/Exchange Headers.md" } ], "omittedPaths": [], diff --git a/_inbox/Синхронная репликация.md b/_inbox/Синхронная репликация.md index d6d8413b..fe65428e 100644 --- a/_inbox/Синхронная репликация.md +++ b/_inbox/Синхронная репликация.md @@ -12,21 +12,22 @@ linked: - "[[Асинхронная репликация]]" - "[[Полу-синхронная репликация]]" --- -Если коммит прошел, то он прошел на всех репликах. Работает надежно, но медленно. +При получении запроса от клиента master ожидает, пока все реплики получат новые данные и подтвердят их применение у себя, и только после этого сообщает клиенту, что запрос успешно выполнен. Работает надежно, но медленно. Реализовано в [PostgreSQL](00%20PostgreSQL.md). **Как работает**: -- Подготовка транзакции в движке БД -- Запись транзакции в лог -- Пересылка лога репликам -- Выполнение транзакций на репликах -- Завершение транзакции в движке БД -- Возврат результата клиенту +- Подготовка транзакции в движке БД: Транзакция начинается на главном сервере (мастере), где собираются все изменения данных. +- Запись транзакции в лог: Все изменения записываются в журнал транзакций, что обеспечивает возможность восстановления данных в случае сбоя. +- Пересылка лога репликам: Журнал транзакций отправляется на все реплики для синхронного применения изменений. +- Выполнение транзакций на репликах: Реплики применяют полученные изменения к своим копиям данных. +- Завершение транзакции в движке БД: После успешного применения изменений на всех репликах транзакция завершается. +- Возврат результата клиенту: Клиент получает подтверждение о завершении транзакции только после того, как изменения применены на всех репликах. **Плюсы:** -- Надежная. Данные не теряются из-за сбоя. +- Высокая надежность данных: Данные не теряются даже в случае сбоя одного из серверов, так как изменения применяются на всех репликах одновременно. +- Консистентность данных: Обеспечивается консистентность данных на всех репликах, что исключает возможность получения различных результатов для одного и того же запроса. **Минусы:** -- Увеличивается время отклика. Ждем подтверждение от всех узлов -- Вероятность сбоя увеличивается с увеличением количества узлов. Общая вероятность сбоя это перемножение вероятности сбоя каждого узла. \ No newline at end of file +- Увеличенное время отклика: Поскольку подтверждение транзакции возвращается клиенту только после её завершения на всех репликах, время отклика увеличивается. Это может негативно сказаться на производительности системы, особенно при большом количестве реплик. +- Высокая вероятность сбоев: С увеличением числа реплик общая вероятность сбоя возрастает, так как транзакция завершается только при успешном выполнении на всех репликах. Если хотя бы одна реплика не отвечает, транзакция не может быть завершена. \ No newline at end of file