Распределенные вычисления доклад кратко

Обновлено: 17.05.2024

Вычислительная мощность компьютеров постоянно растет, но их возможностей по-прежнему недостаточно. Для моделирования глобальных процессов или математических расчетов создаются суперкомпьютеры— многопроцессорные или многомашинные комплексы, производительность которых превышает 100 млн

Вычислительная мощность компьютеров постоянно растет, но их возможностей по-прежнему недостаточно. Для моделирования глобальных процессов или математических расчетов создаются суперкомпьютеры — многопроцессорные или многомашинные комплексы, производительность которых превышает 100 млн. операций с плавающей запятой в секунду. Содержание таких монстров могут себе позволить лишь государственные институты или очень серьезные в финансовом плане организации.

При этом настольных компьютеров в мире насчитывается около 1 млрд., и с каждым годом эта цифра только увеличивается. Неудивительно, что со временем возникла идея объединения их вычислительных мощностей для создания виртуального суперкомпьютера. Проект поиска внеземных цивилизаций, получивший название Search for Extraterrestrial Intelligence (SETI), стал одним из первых и самых известных проектов, где она была применена. Идея заключалась в использовании радиотелескопов для слежения за узкополосными радиосигналами, приходящими из космоса. Источники таких сигналов точно не установлены, поэтому их наличие в определенной степени может свидетельствовать о существовании внеземных цивилизаций.

Настройка управления в BOINC-менеджере

Программная платформа BOINC

Графическое отображение процесса вычисления в проекте Muon1 DPAD

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

BOINC-менеджер

В заключение отметим, что BOINC-менеджер является свободно распространяемым продуктом, и потому неудивительно, что он мультиплатформенный. Точно так же исследовательские проекты имеют версии приложений для всех популярных операционных систем.

Интересные проекты

Все исследовательские проекты делятся по группам назначения. Главные из них астрономия/физика/химия, медицина/биология, исследование Земли. Ознакомиться с их полным списком можно на официальном сайте boinc.berkeley.edu. Выделим проекты, заслуживающие пристального внимания.

LCH@home. Многие наверняка слышали про запуск большого адронного коллайдера, а некоторые до сих пор продолжают пристально следить за его судьбой. Кое-кто считает, что запуск детища ЦЕРНа (CERN, Conseil Européen pour la Recherche Nucléaire — Европейский совет по ядерным исследованиям) является концом света, но такие разговоры похожи на дешевую рекламу. Коллайдеры уже давно и успешно работают по всему миру. Международный продукт отличается от остальных лишь большей мощностью. Но, оказывается, и ему нужна помощь — ежегодно для всевозможных расчетов проекту требуется обрабатывать данные, в сумме превышающие 15 петабайт.

Слежение за звездным небом в реальном времени

Muon1 DPAD. Проект позволяет помочь ученым в разработке новейшего ускорителя элементарных частиц. По своей направленности он схож с предыдущим проектом, но его достоинство заключается в том, что вы принимаете участие в процессе разработки с самого начала. Постройка комплекса намечается лишь в 2015 г., но уже сейчас создатели виртуальной сети утверждают, что благодаря ей удалось повысить эффективность одного из этапов проектирования в 2 раза!

Зачем это вам?

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

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

Персональный компьютер работает с минимальной мощностью — посмотрите на загрузку центрального процессора, редко превышающую 20—30%. Оставшихся ресурсов с лихвой хватит даже на несколько трудоемких проектов. Приятным бонусом к вышесказанному можно считать показ красивого скринсейвера или графики, отображающей вычисления в реальном времени.

А если вы патриот страны, то участие в личном и общекомандном рейтинге доставит вам массу положительных эмоций. И последним аргументом в пользу того, чтобы наряду с другими осуществлять распределенные вычисления, можно считать солидарность с движением Open Source. Так что помогите ученым в их исследованиях, и вы станете ближе друг к другу, а мир — добрее.

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

От вас не требуется каких-то сложных манипуляций, всего-то и надо иметь компьютер и соединение с Интернетом. Причем возможен вариант периодического подключения к Сети. В таком случае соединение с сервером будет происходить в момент получения задания и отправки результата.

Этой теме я и хотел посвятить статью или даже серию статей. Но потом решил выложить своё учебное пособие по основам распределённых вычислений, вышедшее в свет в этом году (читай, небольшую книгу объемом 155 страниц). В итоге получился гибрид – статья со ссылкой на книгу. Книга распространяется бесплатно и доступна в электронном виде.

Должен признать, что у меня нет готового заученного ответа, который я могу выдать не задумываясь. Поэтому каждый раз приходится напрягаться извилинами, и каждый раз ответы и аргументы получаются разными. Вот и сейчас всё как впервые…

Давайте попробуем начать издалека. И чтобы было нагляднее – с медицины. Потому как, если речь заходит о врачебных ошибках, мозг начинает активно работать и генерировать сильное возмущение: ужас, ужас, могли человека угробить. Что они там, совсем что ли? Неужели не знают, чего делают?

Приведу небольшое высказывание Л. Лэмпорта на эту тему (чуть ниже я постарался перевести это высказывание на русский язык, не сильно отдаляясь от оригинала):

For quite a while, I've been disturbed by the emphasis on language in computer science. One result of that emphasis is programmers who are C++ experts but can't write programs that do what they're supposed to. The typical computer science response is that programmers need to use the right programming / specification / development language instead of / in addition to C++. The typical industrial response is to provide the programmer with better debugging tools, on the theory that we can obtain good programs by putting a monkey at a keyboard and automatically finding the errors in its code.
I believe that the best way to get better programs is to teach programmers how to think better. Thinking is not the ability to manipulate language; it's the ability to manipulate concepts. Computer science should be about concepts, not languages.

Уже довольно длительное время меня беспокоит слишком большое внимание, уделяемое компьютерному языку в ИТ. В результате переизбытка такого внимания появляются программисты, которые являются экспертами в С++, но которые не в состоянии написать программы, делающие то, что от этих программ требуется. Типичная реакция представителей ИТ на эту проблему заключается в предложении программистам использовать другой более подходящий язык (программирования, спецификаций и т.п.) вместо / вдобавок к С++. В свою очередь характерный для индустрии разработки ПО выход из ситуации видится в предоставлении программистам более совершенных инструментов отладки, видимо, основываясь на предположении, что получить хорошие программы можно просто посадив мартышку за клавиатуру и затем отыскивая и исправляя ошибки в её коде.
Моё твердое убеждение в том, что для получения качественных программ необходимо учить программистов думать лучше. Умение думать – это не способность оперировать компьютерным языком; это способность оперировать концепциями. Изучение информационных технологий должно быть сфокусировано на изучении концепций, а не языков.


Так вот оказывается, что в данном выполнении асинхронной системы процессы никак не смогут определить был ли включен красный свет одновременно с желтым. Может быть да. А может и нет… Сие останется неизвестным. Но зато будет точно известно, что красный и зеленый фонари одновременно находились во включенном состоянии. Другими словами, оказывается, нет особого смысла говорить о том, что то или иное глобальное состояние достигается по ходу выполнения распределённой системы! Равно как и очень часто нельзя сказать, выполнялось ли какое-либо условие (предикат), заданное на множестве его глобальных состояний! Опять же вопрос: почему?

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

Из этой книги вы узнаете:

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

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

На кого ориентирована эта книга?

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

Чего бы мне хотелось?

Успехов!
Михаил Косяков

Распределённые вычисления — это частный случай параллельных вычислений, представляющий собой способ решения трудоёмких вычислительных задач, разделенных на части, с использованием двух и более компьютеров, объединённых в сеть, для решения частей этих задач. Необходимо, чтобы решаемая задача была разделена на подзадачи, вычисляемые параллельно (сегментирована).

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

Система распределенных вычислений по своей сути многомерна, с большим количеством участников - одноранговых узлов. Ее можно противопоставить традиционным моделям вычислений. В модели клиент-сервер в транзакцию вовлечены два участника - сервер, который предоставляет некоторую услугу, и клиент, желающий ее получить. Типичным примером является Всемирная Паутина, в которой множество пользователей обращается к серверам за информацией. Отличаются системы распределенных вычислений и от двухточечных приложений, объединяющих пары машин для обмена друг с другом файлами. Типичным примером двухточечного приложения является электронная почта. Как следствие этих различий, необходимы новые протоколы и новые технологии.


Наиболее популярные проекты распределенных вычислений

MD@home - российский проект распределенных вычислений. Официально стартовал 23 ноября 2002г. Цель проекта - изучение взаимовлияния аминокислот друг на друга в зависимости от положения в олигопептидах.

SETI@home– один из наиболее известных в мире проектов распределенных вычислений. Поиск радиосигналов от внеземных цивилизаций - поиск сигналов, которые можно было бы расценивать как признаки разумной жизни. Радиотелескоп "Аресибо"в Пуэрто-Рико сканирует космос. Компьютеры пользователей анализируют пакеты данных на наличие внеземных сигналов. Пользователи скачивают с сайта проекта программу - экранную заставку, эта программа присоединяется к решению общей задачи. Программа периодически передает результаты в центр и получает следующую порцию работы. Сервер, расположенный в Беркли(США) интегрирует результаты, собранные от миллионов участников программы. К весне 2003г. в проекте приняли участие свыше 4 млн. добровольцев. Вычисления, которые программа выполнила за 3 года, могли бы занять у одного компьютера 1 млн. лет.

Проект Folding@home ставит своей целью получение более точного представления о болезнях, вызываемых дефектными белками. Изучаются белки, имеющие отношение к болезни Альцгеймера, Паркинсона, диабету типа II, коровьему бешенству и склерозу. Результаты этого проекта выкладываются в свободный доступ, и могут быть сразу же использованы учёными по всему миру.
Distributed.net -проект по проверке стойкости криптоалгоритмов - распределенный взлом паролей. В 2002г. закончился проект RC5–64-взлом 64-битного ключа. Первоначально считалось, что на взлом подобного ключа потребуется примерно сотня лет при использовании мощных ВС. Распределенное на нескольких сотнях тысяч машин позволило взломать ключ такой длины за 5 лет.
Climate Dynamics – проект по климатическим исследованиям. Изучение климатической системы, как единого целого.
Parabon Computation - биотехнология, в некоторых областях фармакологии, например: статистический анализ препаратов для рака.
United Devices – проект разработки инфраструктур для "сбора" неиспользуемых в Интернете ресурсов.

Паразитные расчеты.

Паразитные вычисления:

1)вирусы(они могут быть незаметны при работе)

2)протокол TCL (уязвимый сетевой протокол через которые можно влезать в чужие компьютеры), 3)использование популярных сайтов ( чтобы скачивать скорость ПО с чужого компьютера);

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

Что такое распределенные системы

Изучение

В свете последних технологических изменений и достижений распределенные системы становятся все более популярными. Многие ведущие компании создали сложные распределенные системы для обработки миллиардов запросов и обновления без простоев.

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

Когда дело доходит до распределенных систем, есть много чего. Итак, сегодня мы просто познакомим вас с распределенными системами. Мы объясним различные категории, проблемы дизайна и соображения, которые необходимо учесть.

Что такое распределенная система?

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

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

Примечание. Распределенные системы должны иметь общую сеть для подключения своих компонентов, которые могут быть подключены с помощью IP-адреса или даже физических кабелей.

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

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

Как правило, существует три типа распределенных вычислительных систем со следующими целями:

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

Децентрализованные и распределенные

Существует довольно много споров о разнице между децентрализованными и распределенными системами. Децентрализованная система по существу распределена на техническом уровне, но обычно децентрализованная система не принадлежит одному источнику.

Управлять децентрализованной системой сложнее, поскольку вы не можете управлять всеми участниками, в отличие от распределенного единого курса, где все узлы принадлежат одной команде / компании.

Преимущества распределенной системы

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

  • Масштабирование: распределенная система позволяет масштабироваться по горизонтали, чтобы вы могли учитывать больший трафик.
  • Модульный рост: практически нет ограничений на масштабирование.
  • Отказоустойчивость: распределенные системы более отказоустойчивы, чем отдельная машина.
  • Рентабельность: начальная стоимость выше, чем у традиционной системы, но благодаря своей масштабируемости они быстро становятся более рентабельными.
  • Низкая задержка: пользователи могут иметь узел в нескольких местах, поэтому трафик попадет в узел в шкафу.
  • Эффективность: распределенные системы разбивают сложные данные на более мелкие части.
  • Параллелизм: распределенные системы могут быть разработаны для параллелизма, когда несколько процессоров разделяют сложную задачу на части.

Масштабируемость — самое большое преимущество распределенных систем

Масштабируемость — самое большое преимущество распределенных систем. Горизонтальное масштабирование означает добавление дополнительных серверов в пул ресурсов. Вертикальное масштабирование означает масштабирование за счет увеличения мощности (ЦП, ОЗУ, хранилища и т. Д.) На ваших существующих серверах.

Горизонтальное масштабирование легче динамически масштабировать, а вертикальное масштабирование ограничено мощностью одного сервера.

Хорошими примерами горизонтального масштабирования являются Cassandra и MongoDB. Они упрощают горизонтальное масштабирование за счет добавления дополнительных машин. Примером вертикального масштабирования является MySQL, когда вы масштабируете, переключаясь с меньших компьютеров на большие.

Проблемы проектирования с распределенными системами

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

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

Точно так же ошибки труднее обнаружить в системах, которые разбросаны по разным местам.

Облако против распределенных систем

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

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

По сравнению с распределенными системами облачные вычисления имеют следующие преимущества:

  • Экономически эффективным
  • Доступ к мировому рынку
  • Инкапсулированное управление изменениями
  • Доступ к хранилищу, серверам и базам данных в Интернете

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

Такие приоритеты, как балансировка нагрузки, репликация, автоматическое масштабирование и автоматическое резервное копирование. Могут быть упрощены с помощью облачных вычислений. Инструменты создания облака, такие как Docker, Amazon Web Services (AWS), Google Cloud Services или Azure, позволяют быстро создавать такие системы, и многие команды предпочитают создавать распределенные системы вместе с этими технологиями.

Примеры распределенных систем

Распределенные системы используются во всех сферах, от электронных банковских систем до сенсорных сетей и многопользовательских онлайн-игр. Многие организации используют распределенные системы для поддержки сетевых служб доставки контента.

В сфере здравоохранения распределенные системы используются для хранения и доступа, а также для телемедицины. В сфере финансов и торговли многие сайты онлайн-покупок используют распределенные системы для онлайн-платежей или системы распространения информации в финансовой торговле.

Распределенные системы также используются для транспорта в таких технологиях, как GPS, системы поиска маршрутов и системы управления дорожным движением. Сотовые сети также являются примерами распределенных сетевых систем из-за их базовой станции.

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

Читайте также: