Глава 5 книги «Проектирование приложений с интенсивным использованием данных» подробно рассматривает концепцию репликации, описывая её необходимость для повышения доступности, масштабирования пропускной способности чтения и снижения задержек за счёт географического расположения данных ближе к пользователям. Сложность репликации заключается в управлении изменениями данных на нескольких машинах. В главе подробно рассматриваются три фундаментальных архитектурных подхода: репликация с одним ведущим узлом, репликация с несколькими ведущими узлами и репликация без ведущего узла. В модели с одним ведущим узлом (ведущий-ведомый) один назначенный узел обрабатывает все записи, которые затем передаются ведомым узлам через журнал или поток изменений. Такая архитектура требует тщательного анализа синхронной репликации (гарантированная согласованность, но чувствительность к отказам узлов) и асинхронной репликации (более высокая производительность, но возможная потеря данных при отказе). Обработка отказа ведущего узла включает в себя сложный процесс отказоустойчивости — обнаружение отказа, выбор нового ведущего узла (проблема консенсуса) и перенастройку системы, что может привести к таким проблемам, как потеря последних записей или возникновение ситуации «разделения мозга», когда два узла ошибочно считают себя ведущими. Подробности реализации включают репликацию на основе операторов (которая страдает от недетерминированных функций), доставку журнала предварительной записи (WAL) (которая тесно связывает механизм хранения с протоколом репликации) и предпочтительную логическую репликацию журнала (которая отделяет журнал от механизма хранения). Поскольку асинхронные последователи могут отставать, система демонстрирует конечную согласованность. Эта задержка вносит аномалии в приложения, которые требуют смягчения, в частности, обеспечения согласованности чтения после записи (пользователи видят свои собственные отправленные данные), монотонного чтения (не позволяя пользователям видеть перемещение данных назад во времени) и согласованного чтения префикса (гарантируя, что причинно-следственные записи появляются в правильном порядке). Затем в тексте вводится репликация с несколькими лидерами (главный-главный) как решение для операций с несколькими центрами обработки данных или автономных клиентов, обеспечивая превосходную локальную производительность записи и отказоустойчивость. Основным недостатком является требование разрешения конфликтов, поскольку могут происходить параллельные записи; Методы разрешения проблем варьируются от принципа «последняя запись выигрывает» (Last Write Wins, LWW), что грозит потерей данных, до использования продвинутых структур, таких как бесконфликтные реплицированные типы данных (CRDT). Наконец, репликация без лидера (в стиле Dynamo) отказывается от концепции одного лидера, позволяя любой реплике принимать записи. Эта модель основана на кворумах для успешного чтения и записи, определяемых n (общее количество реплик), w (требуемое число записей) и r (требуемое число чтений), где ожидается сходимость, если w + r больше n. Устаревшие данные разрешаются с помощью процессов восстановления чтения или антиэнтропийных процессов. Для поддержания доступности во время разделов сети используются нерегулярные кворумы и хинтованные передачи, хотя они ослабляют гарантии согласованности. Для точного определения и объединения параллельных записей (родственных записей) системы без лидера используют счётчики для каждой реплики, известные как векторы версий (или причинные контексты).
📘 Читайте полные аннотации к каждой главе в блоге:
https://lastminutelecture.com
📘 Хотите порекомендовать книгу? Отправьте свой совет здесь:
https://forms.gle/y7vQQ6WHoNgKeJmh8
Спасибо, что стали частью нашей небольшой семьи Last Minute Lecture!
⚠️ Отказ от ответственности: Эти аннотации созданы исключительно в образовательных и развлекательных целях. Они содержат содержательные комментарии и перефразированные обзоры, которые помогут студентам понять ключевые идеи из упомянутых учебников. Last Minute Lecture не связан, не спонсируется и не одобрен каким-либо издателем или автором учебников. Все названия учебников, имена и изображения обложек (если они указаны) используются в соответствии с принципами добросовестного использования исключительно для идентификации обсуждаемой работы. Некоторые фрагменты текста и повествования созданы с помощью инструментов на основе искусственного интеллекта для повышения доступности и согласованности. Несмотря на все усилия по обеспечению точности, эти материалы предназначены для дополнения, а не замены официальных учебных материалов, лекций и профессиональных учебных материалов. Для получения полной и достоверной информации всегда обращайтесь к оригинальному учебнику и рекомендациям преподавателя.
Информация по комментариям в разработке