В этом подробном разделе под названием «Распределенные данные» рассматривается переход от хранения данных на одной машине к сложным задачам распределения данных по нескольким машинам для достижения масштабируемости, повышения отказоустойчивости (высокой доступности) и сокращения задержек для пользователей по всему миру. В основе лежит архитектура без разделения ресурсов (shared-nothing), в которой координация осуществляется исключительно на программном уровне по традиционным сетям. Распределенные данные обрабатываются двумя механизмами: репликацией (сохранением копий одних и тех же данных для обеспечения избыточности и повышения пропускной способности при чтении) и разделением (шардингом) (разделением больших наборов данных между узлами). Архитектуры репликации включают системы с одним лидером (которые используют журналы репликации и полагаются на надежные механизмы выборов лидера и отказоустойчивости, что часто приводит к потенциальной потере данных при асинхронной репликации), конфигурации с несколькими лидерами (идеально подходят для конфигураций с несколькими центрами обработки данных, но требуют сложного разрешения конфликтов) и системы без лидеров (в стиле Dynamo), которые используют настраиваемые кворумы (где сумма узлов записи и узлов чтения больше общего числа реплик, W плюс R больше N), а также процессы восстановления чтения и борьбы с энтропией. Из-за асинхронной природы многих конфигураций репликации системы часто предлагают только конечную согласованность, что приводит к таким аномалиям, как чтение ваших записей, монотонное чтение и последовательное чтение префикса, которые разработчикам приложений необходимо активно контролировать. Рассматриваются стратегии разбиения, включая разбиение по диапазону ключей (которое поддерживает эффективные запросы по диапазону, но рискует вызвать горячие точки) и разбиение по хэшу (которое равномерно распределяет нагрузку, но нарушает порядок ключей). Для поддержания производительности в растущем кластере требуется перебалансировка разделов, часто с использованием фиксированного количества разделов на узел или динамического разделения. Вторичные индексы дополнительно усложняют распределение, требуя либо индексов, секционированных по документам (локальных), требующих чтения методом «scatter/gather», либо индексов, секционированных по терминам (глобальных) с асинхронными обновлениями. Чтобы гарантировать безопасность данных в параллельных средах, в разделе подробно рассматриваются транзакции и свойства ACID, подчеркивая, что атомарность (всё или ничего) и изоляция являются ключевыми гарантиями базы данных, в то время как согласованность — это свойство уровня приложения. Слабые уровни изоляции, такие как Read Committed и Snapshot Isolation (часто реализуемые через MVCC), защищают от грязных чтений/записей и перекосов чтения, но по-прежнему допускают опасные ошибки параллелизма, такие как проблема потерянного обновления, перекос записи и фантомы. Достижение самой строгой формы изоляции, сериализуемости (гарантирующей эквивалентный результат последовательному выполнению), требует применения таких методов, как двухфазная блокировка (2PL), фактическое последовательное выполнение (часто посредством хранимых процедур) или современная изоляция моментальных снимков (SSI), которая оптимизирует производительность, являясь оптимистичным механизмом управления параллельным выполнением. Далее рассматриваются присущие построению надежных распределенных систем трудности, подчеркивая, что частичные сбои возникают из-за ненадежных сетей (неограниченные, переменные задержки пакетов и потеря сообщений) и ненадежных часов (дрейф, перекос, паузы в процессах, вызванные сборкой мусора). Поскольку узлам нельзя доверять, для обеспечения порядка и полномочий необходимы токены ограждения, даже при наличии сбоев. Эти фундаментальные трудности приводят к необходимости формальных гарантий, таких как линеаризуемость (обеспечивающая гарантию полного порядка и новизны, эквивалентную одной атомарной копии). Однако линеаризуемость сопряжена с большими затратами, особенно на расстоянии, что формализуется компромиссом, присущим распределенным средам.
📘 Читайте полные аннотации к каждой главе в блоге:
https://lastminutelecture.com
📘 Хотите порекомендовать книгу? Отправьте свой совет здесь:
https://forms.gle/y7vQQ6WHoNgKeJmh8
Спасибо, что стали частью нашей небольшой семьи Last Minute Lecture!
⚠️ Отказ от ответственности: Эти аннотации созданы исключительно в образовательных и развлекательных целях. Они содержат содержательные комментарии и перефразированные обзоры, которые помогут студентам понять ключевые идеи из упомянутых учебников. Last Minute Lecture не связан, не спонсируется и не одобрен каким-либо издателем или автором учебников. Все названия учебников, имена и изображения обложек (если они указаны) используются в соответствии с принципами добросовестного использования исключительно для идентификации обсуждаемой работы. Некоторые фрагменты текста и повествования созданы с помощью ин...
Информация по комментариям в разработке