- Распределение данных
- Характеристики распределенных систем
- Совместимость
- Отказоустойчивость
- Промежуточное ПО и API
- Архитектура
- Клиент-серверная архитектура
- Одноранговая архитектура
- Многоуровневые архитектуры
- Архитектура группы процессоров
- Типы распределенных систем
- Кластерные вычисления
- Сетевые вычисления
- Облачные вычисления
- цели
- Делитесь ресурсами
- абстракция
- открытие
- Взаимодействие и мобильность
- Масштабируемость
- Приложения
- Виртуальная машина Erlang
- Bittorrent
- преимущество
- Недостатки
- Примеры распределенных систем
- StackPath
- интернет
- Ссылки
В распределенных системах являются частями программного обеспечения , используемыми для координации действий нескольких компьютеров. Эта координация достигается посредством обмена сообщениями, то есть с частями данных, которые передают информацию.
Распределенным системам требуются параллельные компоненты, сеть связи и механизм синхронизации. Они позволяют совместно использовать ресурсы, включая программное обеспечение, системами, подключенными к сети. Следовательно, система основана на сети, которая соединяет компьютеры и обрабатывает маршрутизацию сообщений.

а и б (распределенные системы). б (параллельная система). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)
Распределенные вычисления - это область вычислений, которая отвечает за анализ распределенных систем. Компьютерная программа, работающая в распределенной системе, называется распределенной программой.
В контексте, когда могут быть сотни или тысячи компьютеров, что является обычной долей в крупных интернет-компаниях, очень часто возникают отказы компонентов, будь то оборудование, сеть, диски и т. Д., И система должна быть готовы встретить их все время.
Распределение данных
Распределение является ключом к способности обрабатывать очень большие конгломераты данных. Необходимо добиться масштабируемости, которая является средством поддержания стабильной производительности при росте пулов данных за счет добавления новых ресурсов в систему.
С другой стороны, распространение представляет собой ряд технических проблем, которые делают важным рассмотрение проектирования и реализации распределенных вычислений и хранения. Следует принять во внимание риск возможных сбоев.
Характеристики распределенных систем

а и б (распределенные системы). б (параллельная система). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)
Совместимость
Устройства могут работать с разными операционными системами. Это не мешает им всегда предлагать пользователям одни и те же услуги. По этой причине все подключенные устройства совместимы друг с другом.
Еще одна фундаментальная проблема - это дизайн программного обеспечения, поскольку оно также совместимо со всеми системами и пользователями, которые есть на каждом компьютере.
Отказоустойчивость
В единой сети с множеством компьютеров, если какой-либо из ее компонентов выйдет из строя, другие могут продолжать выполнять свои функции в полном объеме, быстро избегая ошибок.
По этой причине распределенные системы, как правило, обеспечивают большую уверенность при работе с ними, потому что система довольно редко выходит из строя полностью, потому что задачи находятся не на одном устройстве, а на разных компьютерах.
Промежуточное ПО и API
Различные процессоры используют промежуточное ПО для распределения, помогая совместно использовать различные ресурсы и возможности, чтобы предоставить пользователям согласованную и интегрированную сеть. Он также предоставляет приложениям ряд услуг, таких как безопасность и восстановление после сбоев.
Сегодня вы слышите больше об интерфейсах прикладного программирования (API), которые функционируют как шлюз, через который приложения могут взаимодействовать. Приложениям не нужно ничего знать о других приложениях, кроме их API.
Архитектура
Клиент-серверная архитектура
Конкретный компьютер, называемый сервером, может выполнять определенные задачи, которые называются службами. Например, обслуживание файлов по сети, возможность выполнять определенные команды или направлять данные на принтер. Клиент - это компьютер, запрашивающий услуги.
Компьютер, известный в первую очередь предоставляемыми услугами, может называться сервером печати, файловым сервером и так далее.
Одноранговая архитектура
Предполагается, что каждый компьютер имеет аналогичные возможности и что ни одна машина не предназначена для обслуживания других. Примером этого является набор микрокомпьютеров в небольшом офисе.
Сеть позволяет людям получать доступ к файлам друг друга и отправлять электронные письма, но ни один компьютер не предоставляет определенный набор услуг.
Многоуровневые архитектуры
Для некоторых служб может иметь смысл иметь иерархическое соединение. Например:
- Сервер при выполнении своих задач может связываться с другим сервером другого типа
- Архитектура клиент-сервер - это двухуровневая архитектура.
Архитектура группы процессоров
Операционная система может автоматически запускать процессы на простаивающих компьютерах и даже переносить процессы в системы с большим количеством доступных циклов ЦП. В других случаях пользователь может вручную запускать или перемещать процессы в доступных системах.
Типы распределенных систем
Кластерные вычисления
Это набор похожих компьютеров, подключенных через высокоскоростную локальную сеть. Он часто используется для параллельного программирования, когда одна ресурсоемкая программа выполняется параллельно на нескольких компьютерах.
Каждый кластер состоит из набора вычислительных узлов, которые отслеживаются и управляются одним или несколькими узлами, называемыми мастерами.
Сетевые вычисления
Он состоит из узлов с заметными различиями в аппаратном обеспечении и сетевых технологиях. Текущая тенденция иметь определенную конфигурацию узлов для определенных задач привела к большему разнообразию, что является наиболее распространенным в сетевых вычислениях.
Облачные вычисления
Это набор виртуализированных ресурсов, размещенных в центре обработки данных облачного провайдера. Заказчики могут создать виртуальную инфраструктуру, чтобы воспользоваться преимуществами различных облачных сервисов.
Пользователю кажется, что он арендует свой собственный эксклюзивный компьютер. Однако на самом деле вполне вероятно, что вы делитесь им с другими клиентами. То же самое и с виртуальным хранилищем.
Эти виртуализированные ресурсы можно динамически настраивать, что обеспечивает масштабируемость. Если требуются дополнительные вычислительные ресурсы, система может их приобрести.
цели
Делитесь ресурсами
Будь то хранилища, файлы данных, службы или сети, вы можете разделить эти ресурсы между приложениями в целях экономии.
Намного дешевле иметь общее хранилище для нескольких приложений, чем покупать и поддерживать хранилище для каждого из них отдельно.
абстракция
Чтобы скрыть, что процессы и ресурсы распределены на нескольких компьютерах, возможно, географически рассредоточенных. То есть процессы и ресурсы абстрагируются от пользователя.
открытие
Это в основном означает, что распределенная система построена с элементами, которые можно легко интегрировать с другими системами. В соответствии со стандартизованными правилами любой процесс с этим интерфейсом может взаимодействовать с другим процессом с тем же интерфейсом.
Взаимодействие и мобильность
Это означает, что две системы от разных производителей могут работать вместе. Переносимость определяет степень, в которой приложение, созданное для системы A, может работать в системе B без изменений.
Масштабируемость
Это необходимо при увеличении числа пользователей, которым требуется больше ресурсов. Хороший пример - увеличение аудитории Netflix каждую пятницу вечером.
Это означает динамическое добавление дополнительных ресурсов, например увеличение пропускной способности сети за счет увеличения объема передачи видеосигнала и ее уменьшение после нормализации потребления.
Приложения
Виртуальная машина Erlang

Программный пакет LYME основан на Erlang и предлагает альтернативу LAMP. Шмуэль Чаба Отто Траян / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)
Erlang - это функциональный язык с отличной семантикой для параллелизма, распределения и отказоустойчивости. Виртуальная машина Erlang обрабатывает распространение приложения Erlang.
Эта модель работает за счет наличия множества изолированных процессов, каждый из которых может обмениваться данными друг с другом через встроенную систему обмена сообщениями.
Виртуальная машина Erlang может подключаться к другим виртуальным машинам, которые находятся в разных местах. Этот рой виртуальных машин запускает одно приложение, обрабатывая сбои одной машины, планируя его запуск на другом узле.
Bittorrent

Работа в сети BitTorrent. Mrjavi / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)
Это один из наиболее широко используемых протоколов для передачи больших файлов в Интернете. Основная идея состоит в том, чтобы облегчить передачу файлов между разными одноранговыми узлами в сети без необходимости проходить через главный сервер.
Используя клиент BitTorrent, вы можете подключиться к нескольким компьютерам по всему миру, чтобы загрузить файл. Компьютер, выступающий в роли координатора, помогает показать узлы в сети, у которых есть нужный файл.
BitTorrent позволяет вам добровольно размещать файлы и загружать их для других пользователей, которым они нужны. Он так популярен, потому что был первым в своем роде, предлагающим стимулы для участия в сети.
преимущество
- В распределенную систему можно легко добавить больше узлов, то есть ее можно масштабировать по мере необходимости.
- Все узлы в распределенной системе подключены друг к другу. Следовательно, каждый из узлов может легко обмениваться данными с другими узлами.
- Ресурсы, такие как принтеры, могут совместно использоваться несколькими узлами, а не ограничиваться одним.
- Выход из строя одного узла не приводит к выходу из строя всей распределенной системы. Остальные узлы все еще могут связываться друг с другом.
Недостатки
- Некоторые сообщения и данные могут быть потеряны в сети при переходе с одного узла на другой.
- Трудно обеспечить адекватную безопасность в распределенных системах, потому что и узлы, и соединения должны быть защищены.
- Перегрузка сети может произойти, если все узлы в распределенной системе попытаются отправить данные одновременно.
- База данных, подключенная к распределенным системам, довольно сложна и трудна в управлении по сравнению с однопользовательской системой.
Примеры распределенных систем
Распределенные системы могут использоваться в большом количестве случаев, таких как электронные банковские системы, многопользовательские онлайн-игры и сенсорные сети.
StackPath
Он использует особенно большую распределенную систему для обеспечения своей сетевой службы доставки контента. Каждая из его точек присутствия (PoP) имеет узлы, образующие всемирную распределенную систему.
StackPath хранит самый последний и часто запрашиваемый контент в местах, ближайших к используемому сайту.
Благодаря соединению виртуальных компьютеров между собой, помимо скорости и гибкости современных вычислений, система может очень быстро обрабатывать тысячи одновременных запросов.
интернет
Это самая большая распределенная система в мире. Любой пользователь ощущает себя единой системой, даже если она состоит из миллионов компьютеров.
Благодаря концепции абстракции вы не знаете, где хранятся данные, сколько серверов задействовано или как информация попадает в браузер. Браузер растворяет сложность Интернета.
Это также относится к таким приложениям, как электронная почта Gmail или любое другое приложение, которое можно использовать. Каждый человек ежедневно взаимодействует с распределенными приложениями.
Ссылки
- Пол Кжижановски (2018). Распределенные системы. Взято с: cs.rutgers.edu.
- Екатерина Паганини (2019). Учебник: Распределенные системы и облачные вычисления. Новый стек. Взято с сайта thenewstack.io.
- Международный университет Валенсии (2020). Распределенные системы, характеристики и классификация. Взято с сайта: universeidadviu.com.
- Дэвид Мидор (2018). Распределенные системы. Учебные пособия. Взято с: tutorialspoint.com.
- Роберт Гибб (2019). Что такое распределенная система? Взято с: blog.stackpath.com.
- Станислав Козловский (2018). Подробное введение в распределенные системы. Бесплатный лагерь кода. Взято с: freecodecamp.org.
