Распределенные вычисления
Распределенные вычисления -это область компьютерных наук , которая изучает распределенные системы , определяемые как компьютерные системы , чьи взаимосвязанные компоненты расположены на различных сетевых компьютерах . [ 1 ] [ 2 ]
Компоненты распределенной системы сообщают и координируют свои действия, передавая сообщения друг другу, чтобы достичь общей цели. Три значительных проблемах распределенных систем: поддержание параллелизма компонентов, преодоление отсутствия глобальных часов и управление независимым сбоем компонентов. [ 1 ] Когда компонент одной системы сбой, вся система не проходит. [ 3 ] Примеры распределенных систем варьируются от систем на основе SOA до микросервисов до массовых многопользовательских онлайн-игр и одноранговых приложений . Распределенные системы стоят значительно дороже, чем монолитные архитектуры, в первую очередь из -за увеличения потребностей в дополнительных аппаратных средствах, серверах, шлюзах, брандмауэрах, новых подсетях, прокси и так далее. [ 4 ] Кроме того, распределенные системы склонны к ошибкам распределенных вычислений . С другой стороны, хорошо спроектированная распределенная система является более масштабируемой, более долговечной, более изменчивой и более тонкой, чем монолитное приложение, развернутое на одной машине. [ 5 ]
Компьютерная программа , которая работает в распределенной системе, называется распределенной программой , [ 6 ] и распределенное программирование - это процесс написания таких программ. [ 7 ] Существует много различных типов реализаций для механизма передачи сообщений, включая чистый HTTP, RPC-подобные разъемы и очереди сообщения . [ 8 ]
Распределенные вычисления также относятся к использованию распределенных систем для решения вычислительных задач. При распределенных вычислениях проблема делится на многие задачи, каждая из которых решается одним или несколькими компьютерами, [ 9 ] которые общаются друг с другом через передачу сообщения. [ 10 ]
Введение
[ редактировать ]Слово, распространяемое в таких терминах, как «распределенная система», «распределенное программирование» и « распределенный алгоритм », первоначально упоминаемый в компьютерные сети, где отдельные компьютеры были физически распределены в некоторых географических областях. [ 11 ] Термины в настоящее время используются в гораздо более широком смысле, даже ссылаясь на автономные процессы , которые работают на одном физическом компьютере и взаимодействуют друг с другом путем передачи сообщений. [ 10 ]
Хотя нет единого определения распределенной системы, [ 12 ] Следующие определяющие свойства обычно используются как:
- Существует несколько автономных вычислительных объектов ( компьютеров или узлов ), каждая из которых имеет свою собственную локальную память . [ 13 ]
- Сущности общаются друг с другом путем прохождения сообщений . [ 14 ]
Распределенная система может иметь общую цель, такую как решение большой вычислительной задачи; [ 15 ] Затем пользователь воспринимает коллекцию автономных процессоров как единицу. В качестве альтернативы, у каждого компьютера может быть свой пользователь с индивидуальными потребностями, и цель распределенной системы состоит в том, чтобы координировать использование общих ресурсов или предоставление услуг связи пользователям. [ 16 ]
Другие типичные свойства распределенных систем включают следующее:
- Система должна переносить неудачи в отдельных компьютерах. [ 17 ]
- Структура системы (топология сети, задержка сети, количество компьютеров) не известна заранее, система может состоять из различных видов компьютеров и сетевых ссылок, и система может изменяться во время выполнения распределенной программы. [ 18 ]
- Каждый компьютер имеет только ограниченный, неполный вид системы. Каждый компьютер может знать только одну часть ввода. [ 19 ]
Узоры
[ редактировать ]Вот общие архитектурные шаблоны, используемые для распределенных вычислений: [ 20 ]
Параллельные и распределенные вычисления
[ редактировать ]
(C): параллельная система.
Распределенные системы - это группы сетевых компьютеров, которые имеют общую цель для их работы. Термины « одновременные вычисления », « параллельные вычисления » и «распределенные вычисления» имеют много совпадения, и между ними не существует четких различий. [ 21 ] Одна и та же система может быть охарактеризована как «параллельная» и «распределенная»; Процессоры в типичной распределенной системе работают одновременно параллельно. [ 22 ] Параллельные вычисления могут рассматриваться как особенно тесно связанная форма распределенных вычислений, [ 23 ] и распределенные вычисления могут рассматриваться как слабо связанная форма параллельных вычислений. [ 12 ] Тем не менее, можно приблизительно классифицировать параллельные системы как «параллельные» или «распределенные», используя следующие критерии:
- На параллельных вычислениях все процессоры могут иметь доступ к общей памяти для обмена информацией между процессорами. [ 24 ]
- В распределенных вычислениях каждый процессор имеет свою собственную частную память ( распределенную память ). Информация обменивается путем передачи сообщений между процессорами. [ 25 ]
Рисунок справа иллюстрирует разницу между распределенными и параллельными системами. Рисунок (а) представляет собой схематический вид типичной распределенной системы; Система представлена как топология сети, в которой каждый узел является компьютером, а каждая строка, подключающая узлы, является связью связи. Рисунок (b) показывает ту же распределенную систему более подробно: у каждого компьютера есть своя локальная память, и информацию можно обмениваться только передачей сообщений от одного узла в другой, используя доступные ссылки на связь. На рисунке (C) показана параллельная система, в которой каждый процессор имеет прямой доступ к общей памяти.
Ситуация также осложняется традиционным использованием терминов параллельных и распределенных алгоритмов , которые не совсем соответствуют вышеуказанным определениям параллельных и распределенных систем (см. Ниже более подробное обсуждение). Тем не менее, как правило, высокопроизводительные параллельные вычисления в многопроцессоре общей памяти используют параллельные алгоритмы, в то время как координация крупномасштабной распределенной системы использует распределенные алгоритмы. [ 26 ]
История
[ редактировать ]Использование параллельных процессов, которые общаются через передачу сообщений, имеет свои корни в операционной системы , изученной в 1960-х годах. архитектурах [ 27 ] Первыми широко распространенными распределенными системами были сети местных районов, такие как Ethernet , которые были изобретены в 1970-х годах. [ 28 ]
Arpanet , один из предшественников Интернета , был представлен в конце 1960-х годов, а электронная почта Arpanet была изобретена в начале 1970-х годов. Электронная почта стала самым успешным применением Arpanet, [ 29 ] И это, вероятно, самый ранний пример крупномасштабного распределенного приложения . В дополнение к Arpanet (и его преемнику, Global Internet), другие ранние мировые компьютерные сети включали Usenet и Fidonet с 1980 -х годов, которые были использованы для поддержки распределенных систем обсуждения. [ 30 ]
Изучение распределенных вычислений стало его собственной ветвью компьютерных наук в конце 1970 -х и начале 1980 -х годов. Первая конференция в этой области, симпозиум по принципам распределенных вычислений (PODC), датируется 1982 году, и его аналога Международного симпозиума по распределенным вычислениям (DISC) впервые проходил в Оттаве в 1985 году в качестве международного семинара по распределенным алгоритмам на графиках. [ 31 ]
Архитектуры
[ редактировать ]Различные аппаратные и программные архитектуры используются для распределенных вычислений. На более низком уровне необходимо взаимосвязать несколько процессоров с какой -то сетью, независимо от того, напечатана ли эта сеть на плату или состоит из слабо связанных устройств и кабелей. На более высоком уровне необходимо взаимодействовать процессы, работающие на этих процессорах с какой -либо системой связи . [ 32 ]
Разделяют ли эти процессоры ресурсы или не определяют первое различие между тремя типами архитектуры:
Распределенное программирование, как правило, попадает в одну из нескольких основных архитектур: клиент-сервер , трехуровневый , n- тетер или одноранговый ; или категории: свободная связь или плотная связь . [ 33 ]
- Клиент - сервер : архитектуры, где умные клиенты связываются с сервером для данных, затем форматируют и отображают его пользователям. Ввод в клиенте совершается обратно на сервер, когда он представляет постоянное изменение.
- Трехровневые : архитектуры, которые перемещают клиентский интеллект в средний уровень, чтобы без сохранения состояния использовать клиентов . Это упрощает развертывание приложений. Большинство веб-приложений трехуровневые.
- n -tier : архитектуры, которые обычно относятся к веб -приложениям, которые дополнительно пересылают свои запросы в другие корпоративные услуги. Этот тип приложения является наиболее ответственным за успех серверов приложений .
- Однозначные : архитектуры, где нет специальных машин, которые предоставляют услугу или управляют сетевыми ресурсами. [ 34 ] : 227 Вместо этого все обязанности равномерно разделены между всеми машинами, известными как сверстники. Компании могут служить как клиенты, так и в качестве серверов. [ 35 ] Примеры этой архитектуры включают BitTorrent и биткойн -сеть .
Другим основным аспектом распределенной вычислительной архитектуры является метод передачи и координации работы между параллельными процессами. Через различные протоколы прохождения сообщений процессы могут напрямую общаться друг с другом, как правило, в основных/суб -отношениях. В качестве альтернативы, «ориентированная на базу данных» архитектура может позволить выполнять распределенные вычисления без какой-либо формы прямой межпроцессной связи , используя общую базу данных . [ 36 ] Архитектура, ориентированная на базу данных, в частности, обеспечивает аналитику реляционной обработки в схематической архитектуре, позволяющая реле в живой среде. Это позволяет распределенные вычислительные функции как внутри, так и за пределами параметров сетевой базы данных. [ 37 ]
Приложения
[ редактировать ]Причины использования распределенных систем и распределенных вычислений могут включать в себя:
- Сама природа приложения может потребовать использования коммуникационной сети, которая подключает несколько компьютеров: например, данные, полученные в одном физическом месте и требуются в другом месте.
- Есть много случаев, когда использование одного компьютера в принципе будет возможным, но использование распределенной системы полезно по практическим причинам. Например:
- Это может обеспечить гораздо большую память и память, более быстрые вычисления и более высокую пропускную способность, чем одна машина.
- Он может обеспечить большую надежность, чем не распределенная система, так как нет единой точки отказа . Более того, распределенная система может быть легче расширить и управлять, чем монолитная униопроцессорная система. [ 38 ]
- Может быть более экономически эффективным, чтобы получить желаемый уровень производительности, используя кластер из нескольких низкоуровневых компьютеров, по сравнению с одним высококачественным компьютером.
Примеры
[ редактировать ]Примеры распределенных систем и применений распределенных вычислений включают следующее: [ 39 ]
- телекоммуникационные сети:
- сетевые приложения:
- World Wide Web и одноранговые сети ,
- массовые многопользовательские онлайн -игры и виртуальной реальности , сообщества
- распределенные базы данных и системы управления распределенными базами данных ,
- сетевые файловые системы ,
- Распределенный кэш, такой как буферные буферы ,
- Распределенные системы обработки информации, такие как банковские системы и системы резервирования авиакомпаний;
- Управление процессами в реальном времени:
- самолетами , системы управления
- Промышленные системы управления ;
- Параллельные вычисления :
- Научные вычисления , включая кластерные вычисления , вычисления сетки , облачные вычисления , [ 40 ] и различные компьютерные проекты добровольцев ,
- Распределенный рендеринг в компьютерной графике.
- пиринговый
Теоретические основы
[ редактировать ]Модели
[ редактировать ]Многие задачи, которые мы хотели бы автоматизировать с помощью компьютера, представляют вопрос - тип ответов: мы хотели бы задать вопрос, и компьютер должен получить ответ. В теоретической информатике такие задачи называются вычислительными проблемами . Формально, вычислительная проблема состоит из экземпляров вместе с решением для каждого экземпляра. Примеры - это вопросы, которые мы можем задать, и решения являются желаемыми ответами на эти вопросы.
Теоретическая компьютерная наука стремится понять, какие вычислительные задачи могут быть решены с помощью компьютера ( теория вычисления ) и того, насколько эффективно ( теория вычислительной сложности ). Традиционно говорят, что проблема может быть решена с помощью компьютера, если мы можем разработать алгоритм , который создает правильное решение для любого данного экземпляра. Такой алгоритм может быть реализован как компьютерная программа , которая работает на компьютере общего назначения: программа считывает экземпляр проблемы из ввода , выполняет некоторые вычисления и производит решение в качестве вывода . Формализмы, такие как машины случайного доступа или универсальные машины Turing, могут использоваться в качестве абстрактных моделей последовательного компьютера общего назначения, выполняющего такой алгоритм. [ 41 ] [ 42 ]
Область одновременных и распределенных вычислительных исследований аналогичные вопросы в случае с несколькими компьютерами или компьютером, который выполняет сеть взаимодействующих процессов: какие вычислительные задачи могут быть решены в такой сети и насколько эффективно? Тем не менее, совсем не очевидно, что подразумевается под «решением проблемы» в случае одновременной или распределенной системы: например, какова задача дизайнера алгоритма и что является одновременным или распределенным эквивалентом последовательного Компьютер общего назначения? [ Цитация необходима ]
Приведенное ниже обсуждение фокусируется на случае нескольких компьютеров, хотя многие из проблем одинаковы для одновременных процессов, работающих на одном компьютере.
Обычно используются три точки зрения:
- Параллельные алгоритмы в модели общей памяти
- Все процессоры имеют доступ к общей памяти. Дизайнер алгоритма выбирает программу, выполненную каждым процессором.
- Одной теоретической моделью являются параллельные машины случайного доступа (PRAM), которые используются. [ 43 ] Тем не менее, классическая модель PRAM предполагает синхронный доступ к общей памяти.
- Программы общей памяти могут быть расширены на распределенные системы, если базовая операционная система инкапсулирует связь между узлами и практически объединяет память во всех отдельных системах.
- Модель, которая ближе к поведению реальных многопроцессорных машин и учитывает использование машинных инструкций, таких как сравнение и заставка (CAS),-это асинхронная общая память . На этой модели существует широкая работа, краткое изложение которого можно найти в литературе. [ 44 ] [ 45 ]
- Параллельные алгоритмы в модели передачи сообщений
- Дизайнер алгоритма выбирает структуру сети, а также программу, выполненную каждым компьютером.
- Модели, такие как логические схемы и сортировочные сети . [ 46 ] Логическая схема можно рассматривать как компьютерную сеть: каждый ворота представляет собой компьютер, который запускает чрезвычайно простую компьютерную программу. Точно так же сеть сортировки можно рассматривать как компьютерную сеть: каждый компаратор является компьютером.
- Распределенные алгоритмы в модели передачи сообщений
- Дизайнер алгоритма только выбирает компьютерную программу. Все компьютеры запускают одну и ту же программу. Система должна работать правильно независимо от структуры сети.
- Обычно используемая модель-это график с одной машиной конечного состояния на узле.
В случае распределенных алгоритмов вычислительные задачи обычно связаны с графиками. Часто график, который описывает структуру компьютерной сети, является проблему. Это проиллюстрировано в следующем примере. [ 47 ]
Пример
[ редактировать ]Рассмотрим вычислительную проблему поиска окраски данного графика g . Различные поля могут использовать следующие подходы:
- Централизованные алгоритмы [ 47 ]
- График G кодируется как строка, а строка приведена в качестве входного компьютера. Компьютерная программа находит окраску графика, кодирует окраску как строку и выводит результат.
- Параллельные алгоритмы
- Опять же, график G кодируется как строка. Тем не менее, несколько компьютеров могут получить доступ к одной и той же строке параллельно. Каждый компьютер может сосредоточиться на одной части графика и создать окраску для этой части.
- Основное внимание уделяется высокопроизводительным вычислениям, в котором эксплуатируется мощность обработки нескольких компьютеров параллельно.
- Распределенные алгоритмы
- График G - это структура компьютерной сети. Существует один компьютер для каждого узла и одной связи связи для каждого края G. G Первоначально каждый компьютер знает только о своих ближайших соседях на графике G ; чтобы узнать больше о структуре G. Компьютеры должны обмениваться сообщениями друг с другом , Каждый компьютер должен создавать свой собственный цвет в качестве вывода.
- Основное внимание уделяется координации работы произвольной распределенной системы. [ 47 ]
В то время как поле параллельных алгоритмов имеет иной фокус, чем область распределенных алгоритмов, между двумя полями существует большое взаимодействие. Например, алгоритм Коул -Вишкина для раскраски графика [ 48 ] первоначально был представлен как параллельный алгоритм, но та же самая техника также можно использовать непосредственно в качестве распределенного алгоритма.
Кроме того, параллельный алгоритм может быть реализован либо в параллельной системе (с использованием общей памяти), либо в распределенной системе (с использованием передачи сообщений). [ 49 ] Традиционная граница между параллельными и распределенными алгоритмами (выберите подходящую сеть против выполнения в любой данной сети), не лежит в том же месте, что и граница между параллельными и распределенными системами (общая память против передачи сообщений).
Сложность мер
[ редактировать ]В параллельных алгоритмах, еще один ресурс в дополнение к времени и пространству - это количество компьютеров. Действительно, часто существует компромисс между временем выполнения и количеством компьютеров: проблема может быть решена быстрее, если на параллельности работают больше компьютеров (см. Speadup ). Если проблема принятия решения может быть решена в полилогарифмическое время с помощью полиномиального числа процессоров, то, как говорят, проблема находится в классе NC . [ 50 ] Класс NC может быть одинаково хорошо определен с использованием формализма PRAM или логических цепей - Pram Machines могут эффективно имитировать логические цепи и наоборот. [ 51 ]
В анализе распределенных алгоритмов больше внимания уделяется операциям связи, чем вычислительные этапы. Возможно, самая простая модель распределенных вычислений - это синхронная система, в которой все узлы работают в виде блокировки. Эта модель обычно известна как локальная модель. Во время каждого раунда общения все узлы параллельно (1) получают последние сообщения от своих соседей, (2) выполняют произвольные локальные вычисления и (3) отправляют новые сообщения своим соседям. В таких системах центральной мерой сложности является количество синхронных раундов связи, необходимых для выполнения задачи. [ 52 ]
Эта мера сложности тесно связана с диаметром сети. Пусть D - диаметр сети. С одной стороны, любая вычисляемая проблема может быть выполнена тривиально в синхронной распределенной системе примерно в 2 D связи: просто собирайте всю информацию в одном месте ( днях раундах), решайте проблему и сообщите каждому узлу о решении ( D Rounds )
С другой стороны, если время выполнения алгоритма намного меньше, чем раунд связи D , то узлы в сети должны создавать свой выход, не имея возможности получить информацию об отдаленных частях сети. Другими словами, узлы должны принимать глобально последовательные решения на основе информации, которая доступна в их локальном D-Nighbourhood . Многие распределенные алгоритмы известны с временем бега, намного меньше, чем D , и понимание того, какие проблемы могут решить с помощью таких алгоритмов, является одним из центральных исследований в этой области. [ 53 ] Обычно алгоритм, который решает проблему в полилогарифмическом времени в размере сети, считается эффективной в этой модели.
Другой обычно используемой мерой является общее количество битов, передаваемых в сети (см. Сложность связи ). [ 54 ] Особенности этой концепции обычно фиксируются с помощью модели Contest (B), которая аналогично определяется как локальная модель, но где отдельные сообщения могут содержать только B -биты.
Другие проблемы
[ редактировать ]Традиционные вычислительные задачи считают, что пользователь задает вопрос, компьютер (или распределенная система) обрабатывает вопрос, а затем дает ответ и останавливается. Тем не менее, существуют также проблемы, когда система не должна останавливаться, включая проблему с философами столовой и другие подобные проблемы взаимного исключения . В этих проблемах распределенная система должна постоянно координировать использование общих ресурсов, чтобы не было конфликтов или тупиков .
Существуют также фундаментальные проблемы, которые уникальны для распределенных вычислений, например, связанные с неисправностью . Примеры связанных проблем включают консенсусные проблемы , [ 55 ] Византийская терпимость разлома , [ 56 ] и самостоятельная стабилизация . [ 57 ]
Много исследований также сосредоточено на понимании асинхронной природы распределенных систем:
- Синхронизаторы могут использоваться для запуска синхронных алгоритмов в асинхронных системах. [ 58 ]
- Логические часы обеспечивают причинно -следственную связь, прежде чем заказать события. [ 59 ]
- Алгоритмы синхронизации часов обеспечивают глобально последовательные физические марки времени. [ 60 ]
Обратите внимание, что в распределенных системах задержка должна быть измерена с помощью «99 -го процентиля», потому что «медиана» и «средний» может вводить в заблуждение. [ 61 ]
Выборы
[ редактировать ]Выборы координатора (или выборы лидеров ) - это процесс определения единого процесса в качестве организатора какой -либо задачи, распространяемой между несколькими компьютерами (узлами). Перед началом задачи все сетевые узлы либо не знают, какой узел будет служить «координатором» (или лидером) задачи, либо не может общаться с текущим координатором. Однако после того, как координаторный алгоритм выборов был запущен, каждый узел по всей сети распознает конкретный уникальный узел в качестве координатора задач. [ 62 ]
Сетевые узлы общаются между собой, чтобы решить, кто из них попадет в состояние «координатора». Для этого им нужен какой -то метод, чтобы сломать симметрию между ними. Например, если каждый узел имеет уникальные и сопоставимые идентичности, то узлы могут сравнивать их идентификаторы и решать, что узел с самой высокой идентичностью является координатором. [ 62 ]
Определение этой проблемы часто объясняется Леланном, который формализовал ее как метод создания нового токена в сети кольцевых кольцевых токен , в которой токен был потерян. [ 63 ]
Алгоритмы выборов координаторов предназначены для того, чтобы быть экономичными с точки зрения передаваемых байтов и времени. Алгоритм, предложенный Галлагером, Умблет и Спира [ 64 ] Для общих неисправных графиков оказал сильное влияние на дизайн распределенных алгоритмов в целом и выиграл приз Дейкстра за влиятельную статью в распределенных вычислениях.
Многие другие алгоритмы были предложены для различных видов сетевых графиков , таких как неисправенные кольца, однонаправленные кольца, полные графики, сетки, направленные графики Euler и другие. Корач, Куттен и Моран предложил общий метод, который разворачивает проблему семейства графиков от дизайна алгоритма выборов координатора. [ 65 ]
Чтобы выполнить координацию, распределенные системы используют концепцию координаторов. Проблема выборов координатора состоит в том, чтобы выбрать процесс из группы процессов на разных процессорах в распределенной системе, чтобы выступать в качестве центрального координатора. Существуют несколько центральных координаторов алгоритмов выборов. [ 66 ]
Свойства распределенных систем
[ редактировать ]До сих пор основное внимание уделялось разработке распределенной системы, которая решает заданную проблему. Дополнительная проблема исследования - изучение свойств данной распределенной системы. [ 67 ] [ 68 ]
Проблема остановки является аналогичным примером из области централизованных вычислений: нам дают компьютерную программу, и задача состоит в том, чтобы решить, останавливается ли она или работает навсегда. Проблема остановки нерешима в общем случае, и, естественно, понимание поведения компьютерной сети, по крайней мере, так же сложно, как понимание поведения одного компьютера. [ 69 ]
Тем не менее, есть много интересных особых случаев, которые являются определенными. В частности, можно рассуждать о поведении сети конечных штатных машин. Одним из примеров является то, может ли данная сеть взаимодействующих (асинхронных и не определенных) конечных штатных машин достичь тупика. Эта проблема- PSPACE-Complete , [ 70 ] т.е., это определенно, но маловероятно, что существует эффективный (централизованный, параллельный или распределенный) алгоритм, который решает проблему в случае крупных сетей.
Смотрите также
[ редактировать ]- Актер модель
- Appscale
- Боевой
- Мобильность кода
- Программирование данных
- Децентрализованные вычисления
- Распределенный алгоритм
- Распределенный алгоритмический проект механизма
- Распределенный кеш
- Распределенные ГИС
- Распределенные сети
- Распределенная операционная система
- Возможная последовательность
- Edsger W. Dijkstra Prize по распределенным вычислениям
- Федерация (информационные технологии)
- Плоская соседская сеть
- Туманные вычисления
- Склад@домой
- Сетчатая вычисления
- Ад
- Интернет дан
- Jungle Computing
- Слоистая сеть очередей
- Библиотека, ориентированная архитектура (LOA)
- Список распределенных вычислительных конференций
- Список волонтерских компьютерных проектов
- Проверка модели
- OpenHarmony
- Harmonyos
- Параллельная распределенная обработка
- Модель параллельного программирования
- План 9 от Bell Labs
- Ничего не поделился архитектурой
- Интернет дан
Примечания
[ редактировать ]- ^ Jump up to: а беременный Таненбаум, Эндрю С.; Steen, Maarten Van (2002). Распределенные системы: принципы и парадигмы . Верхняя седл -река, Нью -Джерси: Пирсон Прентис Холл. ISBN 0-13-088893-1 Полем Архивировано из оригинала 2020-08-12 . Получено 2020-08-28 .
- ^ «Распределенные программы». Тексты в информатике . Лондон: Springer London. 2010. С. 373–406. doi : 10.1007/978-1-84882-745-5_11 . ISBN 978-1-84882-744-8 Полем ISSN 1868-0941 .
Системы состоят из ряда физически распределенных компонентов, которые работают независимо, используя их частное хранилище, но также время от времени общаются путем явного передачи сообщений. Такие системы называются распределенными системами.
- ^ Dusseau & Dusseau 2016 , с. 1–2.
- ^ Форд, Нил (3 марта 2020 г.). Основы архитектуры программного обеспечения: инженерный подход (1 -е изд.). О'Рейли СМИ. С. 146–147. ISBN 978-1492043454 .
- ^ Монолит в микросервисы эволюционные паттерны для преобразования монолита . О'Рейли СМИ. ISBN 9781492047810 .
- ^ «Распределенные программы». Тексты в информатике . Лондон: Springer London. 2010. С. 373–406. doi : 10.1007/978-1-84882-745-5_11 . ISBN 978-1-84882-744-8 Полем ISSN 1868-0941 .
Распределенные программы являются абстрактными описаниями распределенных систем. Распределенная программа состоит из набора процессов, которые работают одновременно и передают явное передачу сообщения. Каждый процесс может получить доступ к набору переменных, которые не связаны с переменными, которые могут быть изменены любым другим процессом.
- ^ Эндрюс (2000) . Долев (2000) . Гош (2007) , с. 10
- ^ Магнони Л. (2015). «Современный обмен сообщениями для распределенных ситом (sic)» . Журнал физики: серия конференций . 608 (1): 012038. DOI : 10.1088/1742-6596/608/1/012038 . ISSN 1742-6596 .
- ^ Годфри (2002) .
- ^ Jump up to: а беременный Эндрюс (2000) , с. 291–292. Долев (2000) , с. 5
- ^ Линч (1996) , с. 1
- ^ Jump up to: а беременный Гош (2007) , с. 10
- ^ Эндрюс (2000) , с. 8–9, 291. Долев (2000) , с. 5. Гош (2007) , с. 3. Линч (1996) , с. xix, 1. Peleg (2000) , p. XV.
- ^ Эндрюс (2000) , с. 291. Гош (2007) , с. 3. Peleg (2000) , p. 4
- ^ Гош (2007) , с. 3–4. Peleg (2000) , p. 1
- ^ Гош (2007) , с. 4. Peleg (2000) , p. 2
- ^ Гош (2007) , с. 4, 8. Линч (1996) , с. 2–3. Peleg (2000) , p. 4
- ^ Линч (1996) , с. 2. Peleg (2000) , p. 1
- ^ Гош (2007) , с. 7. Линч (1996) , с. xix, 2. Peleg (2000) , p. 4
- ^ Основы программной архитектуры: инженерный подход . О'Рейли СМИ. 2020. ISBN 978-1492043454 .
- ^ Гош (2007) , с. 10. Кейдар (2008) .
- ^ Линч (1996) , с. xix, 1–2. Peleg (2000) , p. 1
- ^ Peleg (2000) , p. 1
- ^ Papadimitriou (1994) , глава 15. Keidar (2008) .
- ^ См. Ссылки во введении .
- ^ Bentaleb, A.; Yifan, L.; Синь, Дж.; и др. (2016). «Параллельные и распределенные алгоритмы» (PDF) . Национальный университет Сингапура. Архивировано (PDF) из оригинала 2017-03-26 . Получено 20 июля 2018 года .
- ^ Эндрюс (2000) , с. 348.
- ^ Эндрюс (2000) , с. 32
- ^ Петр (2004) , История электронной почты Архивирована 2009-04-15 на машине Wayback .
- ^ Банки, М. (2012). По пути в Интернет: секретная история Интернета и его основателей . Апресс. С. 44–5. ISBN 9781430250746 Полем Архивировано из оригинала 2023-01-20 . Получено 2018-07-20 .
- ^ Тел, Г. (2000). Введение в распределенные алгоритмы . Издательство Кембриджского университета. С. 35–36. ISBN 9780521794831 Полем Архивировано из оригинала 2023-01-20 . Получено 2018-07-20 .
- ^ Ohlídal, M.; Джарош, Дж.; Schwarz, J.; и др. (2006). «Эволюционный дизайн графиков связи OAB и AAB для сетей взаимосвязи». В Rothlauf, F.; Branke, J.; Cagnoni, S. (Eds.). Приложения эволюционных вычислений . Springer Science & Business Media. С. 267–78. ISBN 9783540332374 .
- ^ «Реальное время и распределенные вычислительные системы» (PDF) . ISSN 2278-0661 . Архивировано из оригинала (PDF) 2017-01-10 . Получено 2017-01-09 .
{{cite journal}}
: CITE Journal требует|journal=
( помощь ) - ^ Vigna P, Casey MJ. Эпоха криптовалюты: как Биткойн и блокчейн бросают вызов глобальному экономическому порядку из прессы Святого Мартина 27 января 2015 г. ISBN 9781250065636
- ^ Quang Hieu Vu; Михай Лупу; Beng Chin Ooi (2010). Одноранговые вычисления: принципы и приложения . Гейдельберг: Спрингер. п. 16. ISBN 9783642035135 Полем OCLC 663093862 .
- ^ Линд П., Алм М. (2006), «Система виртуальной химии, ориентированная на базу данных», модель J Chem Inf , 46 (3): 1034–9, doi : 10.1021/ci050360b , pmid 16711722 .
- ^ Chiu, G (1990). «Модель для оптимального распределения базы данных в распределенных вычислительных системах». Разбирательство. IEEE Infocom'90: Девятая ежегодная совместная конференция IEEE Computer и коммуникационных обществ .
- ^ Elmasri & Navathe (2000) , раздел 24.1.2.
- ^ Эндрюс (2000) , с. 10–1 Гош (2007) , с. 4–6 Линч (1996) , с. Xix, 1. Peleg (2000) , p. XV. Elmasri & Navathe (2000) , раздел
- ^ Haussmann, J. (2019). «Экономичная параллельная обработка нерегулярно структурированных задач в средах облачных вычислений». Журнал кластерных вычислений . 22 (3): 887–909. doi : 10.1007/s10586-018-2879-3 . S2CID 54447518 .
- ^ Toomarian, NB; Barhen, J.; Гулати С. (1992). «Нейронные сети для роботизированных приложений в реальном времени» . В Фиджани, а.; Bejczy, A. (ред.). Параллельные системы вычислений для робототехники: алгоритмы и архитектуры . Мировой научный. п. 214. ISBN 9789814506175 Полем Архивировано из оригинала 2020-08-01 . Получено 2018-07-20 .
- ^ Savage, JE (1998). Модели вычислений: изучение мощности вычислений . Аддисон Уэсли. п. 209. ISBN 9780201895391 .
- ^ Cormmen, Leiseron & Rivest (1990) , раздел 30.
- ^ Herlihy & Shavit (2008) , главы 2–6.
- ^ Линч (1996)
- ^ Cormmen, Leiseron & Rivest (1990) , разделы 28 и 29.
- ^ Jump up to: а беременный в Tulsiramji Gaikwad-Patil College Engineering & Technology, Нагпур Департамент информационных технологий Введение в распределенные системы [1]
- ^ Cole & Vishkin (1986) . Cormen, Leiserson & Rivest (1990) , раздел 30.5.
- ^ Эндрюс (2000) , с. IX.
- ^ Arora & Barak (2009) , раздел 6.7. Papadimitriou (1994) , раздел 15.3.
- ^ Papadimitriou (1994) , раздел 15.2.
- ^ Линч (1996) , с. 17–23.
- ^ Peleg (2000) , разделы 2.3 и 7. Linial (1992) . Naor & Stockmeyer (1995) .
- ^ Schneider, J.; Уоттенхофер Р. (2011). «Торговый бит, сообщение и временная сложность распределенных алгоритмов» . В Peleg, D. (ed.). Распределенные вычисления . Springer Science & Business Media. С. 51–65. ISBN 9783642240997 Полем Архивировано из оригинала 2020-08-01 . Получено 2018-07-20 .
- ^ Линч (1996) , разделы 5–7. Гош (2007) , глава 13.
- ^ Линч (1996) , с. 99–102. Гош (2007) , с. 192–193.
- ^ Долев (2000) . Гош (2007) , глава 17.
- ^ Lynch (1996) , раздел 16. Peleg (2000) , раздел 6.
- ^ Lynch (1996) , раздел 18. Ghosh (2007) , разделы 6.2–6.3.
- ^ Ghosh (2007) , раздел 6.4.
- ^ Основы данных Интенсивные приложения . 2021. ISBN 9781119713012 .
- ^ Jump up to: а беременный Haloi, S. (2015). Apache Zookeeper Essentials . Packt Publishing Ltd. с. 100–101. ISBN 9781784398323 Полем Архивировано из оригинала 2023-01-20 . Получено 2018-07-20 .
- ^ Леланн, Г. (1977). «Распределенные системы - к формальному подходу». Обработка информации . 77 : 155 · 160 - через Elsevier.
- ^ RG Gallager , PA Hamblet и PM Spira (январь 1983 г.). «Распределенный алгоритм для минимального веса, охватывающих деревья» (PDF) . Транзакции ACM на языках и системах программирования . 5 (1): 66–77. doi : 10.1145/357195.357200 . S2CID 2758285 . Архивировано (PDF) из оригинала 2017-09-26.
{{cite journal}}
: Cs1 maint: несколько имен: список авторов ( ссылка ) - ^ Корач, Эфраим; Куттен, Шей ; Моран, Шломо (1990). «Модульная техника для разработки эффективных алгоритмов поиска распределенного лидера» (PDF) . Транзакции ACM на языках и системах программирования . 12 (1): 84–101. Citeseerx 10.1.1.139.7342 . doi : 10.1145/77606.77610 . S2CID 9175968 . Архивировано (PDF) из оригинала 2007-04-18.
- ^ Гамильтон, Говард. «Распределенные алгоритмы» . Архивировано из оригинала 2012-11-24 . Получено 2013-03-03 .
- ^ "Основные нерешенные проблемы в распределенных системах?" Полем cstheory.stackexchange.com . Архивировано из оригинала 20 января 2023 года . Получено 16 марта 2018 года .
- ^ «Как большие данные и распределенные системы решают традиционные проблемы масштабируемости» . theserverside.com . Архивировано с оригинала 17 марта 2018 года . Получено 16 марта 2018 года .
- ^ Свозил, К. (2011). «Неэтерминизм и случайность с помощью физики» . В Гекторе, З. (ред.). Случайность посредством вычислений: некоторые ответы, больше вопросов . Мировой научный. С. 112–3. ISBN 9789814462631 Полем Архивировано из оригинала 2020-08-01 . Получено 2018-07-20 .
- ^ Papadimitriou (1994) , раздел 19.3.
Ссылки
[ редактировать ]- Книги
- Эндрюс, Грегори Р. (2000), Фонды многопоточного, параллельного и распределенного программирования , Аддисон -Уизли , ISBN 978-0-201-35752-3 .
- Арора, Санджив ; Барак, Боаз (2009), Вычислительная сложность - современный подход , Кембридж , ISBN 978-0-521-42426-4 .
- Корммен, Томас Х .; Лейзерон, Чарльз Е .; Rivest, Ronald L. (1990), Введение в алгоритмы (1 -е изд.), С Press , ISBN 978-0-262-03141-7 .
- Dolev, Shlomi (2000), самостабилизация , MIT Press , ISBN 978-0-262-04178-2 .
- Эльмасри, Рамес; Navathe, Shamkant B. (2000), Основы систем баз данных (3 -е изд.), Addison -Wesley , ISBN 978-0-201-54263-9 .
- Гош, Сукумар (2007), Распределенные системы - алгоритмический подход , Chapman & Hall/CRC, ISBN 978-1-58488-564-1 .
- Линч, Нэнси А. (1996), Распределенные алгоритмы , Морган Кауфманн , ISBN 978-1-55860-348-6 .
- Herlihy, Maurice P .; Шавит, Нир Н. (2008), Искусство многопроцессорного программирования , Морган Кауфманн , ISBN 978-0-12-370591-4 .
- Пападимитриу, Кристос Х. (1994), Вычислительная сложность , Аддисон -Уизли , ISBN 978-0-201-53082-7 .
- Peleg, David (2000), Распределенные вычисления: чувствительный к местности подход , Siam , ISBN 978-0-89871-464-7 Архивировано из оригинала на 2009-08-06 , извлечен 2009-07-16 .
- Статьи
- Коул, Ричард; Vishkin, Uzi (1986), «Детерминированный бросок монет с приложениями для оптимального ранжирования параллельного списка», Информация и управление , 70 (1): 32–53, doi : 10.1016/s0019-9958 (86) 80023-7 .
- Keidar, Idit (2008), «Распределенная вычислительная столбец 32 - Год обзора» , ACM SIGACT News , 39 (4): 53–54, Citeseerx 10.1.1.116.1285 , doi : 10.1145/1466390.1466402 , s2cid 7607391 , Archived Оригинал на 2014-01-16 , извлеченном 2009-08-20 .
- Linial, Nathan (1992), «Местность в алгоритмах распределенного графика», Siam Journal по вычислениям , 21 (1): 193–201, Citeseerx 10.1.1.471.6378 , doi : 10.1137/0221015 .
- Наор, Мони ; Stockmeyer, Larry (1995), «Что можно рассчитать на местном уровне?» (PDF) , SIAM Journal по вычислительной технике , 24 (6): 1259–1277, Citeseerx 10.1.1.29.669 , doi : 10.1137/s0097539793254571 , архивировано (pdf) от оригинала 2013-01-08 .
- Веб -сайты
- Годфри, Билл (2002). «Ученик на распределенных вычислениях» . Архивировано из оригинала на 2021-05-13 . Получено 2021-05-13 .
- Питер, Ян (2004). «История Иана Питера в Интернете» . Архивировано из оригинала 2010-01-20 . Получено 2009-08-04 .
Дальнейшее чтение
[ редактировать ]- Книги
- Attiya, Hagit и Jennifer Welch (2004), Распределенные вычисления: основы, симуляции и передовые темы , Wiley-Interscience ISBN 0-471-45324-2 .
- Кристиан Качин; Рахид война; Luís Rodrigues (2011), Введение в надежное и безопасное распределенное программирование (2. Ed.), Springer, Bibcode : 2011itra.book ..... c , ISBN 978-3-642-15259-7
- Кулурис, Джордж; и др. (2011), Распределенные системы: концепции и дизайн (5-е издание) , Аддисон-Уэсли ISBN 0-132-14301-1 .
- Faber, Jim (1998), Java Distributed Computing , O'Reilly, архивировав из оригинала 2010-08-24 , извлеченного 2010-09-29 : распределенные вычисления Java от Джима Фабера, 1998 Archived 2010-08-24 в The Wayback Машина
- Гарг, Виджай К. (2002), Элементы распределенных вычислений , Wiley-Iee Press ISBN 0-471-03600-5 .
- Тел, Джерард (1994), Введение в распределенные алгоритмы , издательство Кембриджского университета
- Чанди, Мани ; и др. (1988), Параллельный дизайн программы , Аддисон-Уэсли ISBN 0201058669
- Dusseau, Remzi H.; Дюссо, Андреа (2016). Операционные системы: три простых часа, Глава 48 Распределенные системы (PDF) . Архивировано из оригинала (PDF) 31 августа 2021 года . Получено 8 октября 2021 года .
- Статьи
- Кейдар, IDIT; Rajsbaum, Sergio, eds. (2000–2009), «Распределенная вычислительная колонка» , ACM Sigact News , архивирована из оригинала на 2014-01-16 , извлечен 2009-08-16 .
- Birrell, AD; Левин, Р.; Schroeder, MD; Needham, RM (апрель 1982). «Виноградная лоза: упражнение в распределенных вычислениях» (PDF) . Коммуникации ACM . 25 (4): 260–274. doi : 10.1145/358468.358487 . S2CID 16066616 . Архивировано (PDF) из оригинала 2016-07-30.
- Конференц -документы
- Родригес, Карлос; Вильягра, Маркос; Баран, Бенджамин (2007). «Асинхронные командные алгоритмы для логической удовлетворенности». 2007 2-й био-вдохновленные модели сетевых, информационных и вычислительных систем . С. 66–69. doi : 10.1109/bimnics.2007.4610083 . S2CID 15185219 .
Внешние ссылки
[ редактировать ]
СМИ, связанные с распределенными вычислениями в Wikimedia Commons
- Распределенные вычисления в Curlie
- Распределенные вычислительные журналы в Curlie