paint-brush
Раскрытие архитектуры: ключевые статьи для понимания распределенных систем!к@bhavdeepsethi
913 чтения
913 чтения

Раскрытие архитектуры: ключевые статьи для понимания распределенных систем!

к Bhavdeep Sethi6m2024/04/28
Read on Terminal Reader

Слишком долго; Читать

С появлением Интернета и более умных устройств объем данных, которые необходимо обрабатывать, резко возрос. Простые повседневные действия, такие как заказ Uber, просмотр шоу на Netflix, простой поиск в Google, покупки в Интернете или взаимодействие с социальными сетями — все тривиальные действия, которые мы считаем само собой разумеющимися, выполняются сотнями служб распространения. Все эти сервисы построены на основе некоторых основополагающих документов по распределенным системам. Хотя этот список определенно не является исчерпывающим, вот некоторые из моих любимых статей, оказавших огромное влияние на мир распределенных систем.
featured image - Раскрытие архитектуры: ключевые статьи для понимания распределенных систем!
Bhavdeep Sethi HackerNoon profile picture
0-item


Распределенная система — это система, в которой сбой компьютера, о существовании которого вы даже не подозревали, может сделать ваш собственный компьютер непригодным для использования.


В этой знаменитой цитате Лесли Лэмпорта, лауреата премии Тьюринга, обобщаются проблемы создания и обслуживания распределенной системы. Но зачем нужны такие сложные системы?


С появлением Интернета и более умных устройств объем данных, которые необходимо обрабатывать, резко возрос. Простые повседневные действия, такие как заказ Uber, просмотр шоу на Netflix, простой поиск в Google, покупки в Интернете или взаимодействие с социальными сетями — все тривиальные действия, которые мы считаем само собой разумеющимися, выполняются сотнями дистрибьюторских служб. Все эти сервисы построены на основе некоторых основополагающих документов по распределенным системам.


Хотя этот список определенно не является исчерпывающим, вот некоторые из моих любимых статей, оказавших огромное влияние на мир распределенных систем.


Теорема CAP

Хотя это не традиционная статья, Эрик Брюэр впервые представил ее как гипотезу в программном докладе на симпозиуме ACM по принципам распределенных вычислений (PODC) 2000 года. Позже эта статья была формализована и доказана Нэнси Линч и Сетом Гилбертом в статье «Гипотеза Брюэра и осуществимость согласованных, доступных, толерантных к разделению веб-сервисов».


Теорема Эрика Брюэра CAP является фундаментальной концепцией теории распределенных систем, утверждающей, что распределенное хранилище данных не может одновременно обеспечивать более двух из трех гарантий: согласованность, доступность и устойчивость к разделению. Все другие упомянутые здесь статьи применяют вышеуказанный принцип и делают необходимые компромиссы в своей системе.


Теорема CAP всегда вызывает множество дискуссий, основанных на понимании статьи читателями. Книга Мартина Клеппмана « Критика теоремы CAP » обеспечивает лучшую основу для обсуждения компромиссов.


Паксос — это просто

В этой основополагающей статье 2001 года Лесли Лэмпорт представляет алгоритм Paxos для достижения консенсуса в распределенной системе простым и доступным способом. Консенсусные протоколы на базе Paxos составляют основу многих распределенных баз данных, систем хранения, платформ обмена сообщениями и служб координации, используемых многими технологическими компаниями. Это сильно повлияло на другие технологии, такие как Chubby от Google, Spanner от Google, Apache ZooKeeper, Apache BookKeeper и т. д.

Паксос обычно используется для выборов лидера.


Файловая система Google

Документ Google File System (GFS) представляет масштабируемую распределенную файловую систему для крупных распределенных приложений с интенсивным использованием данных на обычном оборудовании, которая является основой для многих последующих распределенных файловых систем. GFS послужила основным источником вдохновения для HDFS, распределенной файловой системы, используемой инфраструктурой Apache Hadoop и, в конечном итоге, Amazon S3 (хотя s3 принципиально отличается).


MapReduce: упрощенная обработка данных в больших кластерах

В этом документе представлена модель программирования MapReduce, которая демонстрирует масштабируемый подход к обработке крупномасштабных наборов данных с использованием инфраструктуры распределенных вычислений. MapReduce сыграл ключевую роль в революции «больших данных», позволив организациям использовать возможности распределенных вычислений для анализа и получения информации из огромных наборов данных. Вы можете увидеть, как объединение GFS и MapReduce позволило Google обрабатывать петабайты данных для организации данных «Интернета».


Документ MapReduce (вместе с GFS) вдохновил на разработку целой экосистемы инструментов и библиотек, построенных на базе Apache Hadoop, таких как Apache Hive (инфраструктура хранилища данных, построенная на Hadoop), Apache Pig (язык потоков данных высокого уровня для Hadoop), Apache Spark (механизм обработки данных в памяти), Apache HBase (распределенная база данных NoSQL) и многие другие.


Bigtable: распределенная система хранения структурированных данных

Документ Bigtable представляет собой распределенную систему хранения для управления структурированными данными в Google. После того, как MapReduce и GFS позволили Google экономически эффективно обрабатывать данные в больших масштабах, следующим шагом стало обеспечение надежного и высокодоступного доступа к данным. BigTable смог предоставить гибкое и высокопроизводительное решение для таких приложений, как веб-индексирование, Google Earth и Google Finance.


Точно так же, как MapReduce произвел революцию в эпоху «больших данных», документ BigTable стал движущей силой эпохи «NoSQL». Многие принципы проектирования и архитектурные концепции, представленные в статье Bigtable, использовались в таких технологиях, как «Apache HBase», «Cassandra», «MongoD» и т. д. Хотя некоторые из этих приложений могут использовать разные модели данных (например, MongoDB), они разделяют общие принципы, такие как горизонтальная масштабируемость, отказоустойчивость и автоматическое сегментирование.


Dynamo: высокодоступный магазин ключей и значений Amazon

В статье Dynamo представлен проект и реализация высокодоступного магазина «ключ-значение», разработанного Amazon. Dynamo удовлетворила потребность в доступе в реальном времени к высокодинамичным данным, таким как товары в вашей корзине покупок. В документе представлена концепция «эвентуальной согласованности» как основного принципа проектирования распределенных систем, позволяющего ослабить гарантии согласованности для достижения высокой доступности и производительности (привет, теорема CAP!).


Из самой статьи говорится: «По сравнению с Bigtable, Dynamo нацелена на приложения, которым требуется только доступ по ключу/значению, уделяя основное внимание высокой доступности, где обновления не отклоняются даже в случае сетевых разделов или сбоев сервера».


Как и в случае с BigTable, статья Dynamo сильно повлияла на последующие технологии, такие как Riak, Voldemort, Cassandra, и даже на технологии потоковой передачи событий, такие как Apache Kafka.


Cassandra — децентрализованная структурированная система хранения данных

Быстрый рост Facebook потребовал создания базы данных, способной обрабатывать огромные объемы данных и поддерживать большое количество одновременных пользователей. Хотя BigTable и Dynamo сами по себе были весьма влиятельными, Cassandra была первой технологией, которая пошла на шаг впереди других. Выпустив его как вклад с открытым исходным кодом под лицензией Apache, а также опубликовав статью , Facebook сыграл важную роль в обеспечении доступа к такой технологии для всей отрасли.


Cassandra отличается от двух предыдущих, предоставляя настраиваемую модель согласованности, позволяющую пользователям выбирать между строгой согласованностью (например, BigTable) и окончательной согласованностью (например, Dynamo) в зависимости от требований их приложения.


ZooKeeper: координация без ожидания для систем Интернет-масштаба

В этом документе представлен Apache ZooKeeper, а также принципы его проектирования и алгоритмы для предоставления высоконадежных и масштабируемых услуг координации в распределенных системах. До появления ZooKeeper разработчикам программного обеспечения часто приходилось внедрять собственные специальные решения для распределенной координации и консенсуса в распределенных системах.


ZooKeeper предложил централизованный сервис для распределенной координации, предлагая такие примитивы, как распределенные блокировки, выбор лидера и управление конфигурацией. Это позволило упростить разработку распределенных приложений за счет перегрузки сложной логики координации в ZooKeeper. Одним из наиболее распространенных случаев использования Zookeeper является обнаружение сервисов.


Apache Kafka: распределенная система обмена сообщениями для обработки журналов

В этом документе представлена Apache Kafka — распределенная система обмена сообщениями, предназначенная для высокопроизводительной и отказоустойчивой обработки потоков событий. Публикация Кафки в качестве исследовательской работы и ее выпуск с открытым исходным кодом в качестве проекта Apache сделали его стандартной системой обмена сообщениями для высокомасштабируемой и отказоустойчивой обработки данных в реальном времени и архитектур, управляемых событиями.


Kafka представила высокомасштабируемую и отказоустойчивую систему обмена сообщениями, предназначенную для обработки больших объемов потоков данных в режиме реального времени. Кафка оказал большое влияние на разработку архитектуры Lambda, которая сочетает в себе пакетную и потоковую обработку для обработки больших объемов данных с низкой задержкой и высокой пропускной способностью.


Устойчивые распределенные наборы данных: отказоустойчивая абстракция для кластерных вычислений в памяти

В этом документе представлены устойчивые распределенные наборы данных (RDD), основная абстракция Apache Spark, которая обеспечивает отказоустойчивую обработку данных в памяти в распределенных кластерах. Механизм выполнения Spark в памяти обеспечивает значительно более высокую производительность по сравнению с MapReduce (который имеет дисковую модель выполнения), особенно для итеративных алгоритмов, машинного обучения и интерактивной аналитики.


Эти статьи охватывают широкий спектр тем распределенных систем, включая системы хранения, алгоритмы консенсуса, отказоустойчивость и масштабируемость. Их прочтение обеспечит прочную основу для понимания принципов и практики построения распределенных систем и управления ими.


Если вы начинаете свой путь в распределенных системах и хотите узнать больше, или вы уже являетесь экспертом и просто хотите освежить свои основы, нет лучшего способа учиться, чем прочитать некоторые из этих основополагающих документов по распределенным системам.