Skip to main content

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

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

При решении проблемы распределенным образом, программа должна быть разделена так, чтобы части программы могли работать на разных вычислительных блоках; эти части часто называют «процессами». Процессы выполняются одновременно, но должны сообщать входные данные и результаты друг другу. Если процессы выполняются на другом оборудовании, например, одна часть работает на Intel, а другая на SUN, то программы нужно компилировать и оптимизировать по-разному.

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

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

В распределенном программировании один процесс может быть управляющим процессом, по существу выполняющим работу, выполняемую другими процессами, или все процессы могут работать одноранговым образом, при этом ни один из процессов не является «ведущим». Некоторые примеры проблем, связанных с распределенным программированием, включают анализ геологических данных для таких ресурсов, как нефть, моделирование белков и биологических молекул, взлом кодированных сообщений и военные симуляции. Проект SETI по ​​поиску разумной внеземной жизни по радиосообщениям, полученным Землей, является, пожалуй, одним из самых известных примеров.