Что именно представляет собой распределенные вычисления?
Распределенные вычисления - это по своей сути параллельная коллекция элементов обработки, которые взаимодействуют друг с другом для решения одной или нескольких проблем. Эти обрабатывающие элементы достаточно отделены друг от друга, так что создать надежную и своевременную систему обмена сообщениями между ними нецелесообразно, и поэтому становится невозможным глобальное знание состояния системы. Конкретные особенности обмена сообщениями с распределенными системами в том , что сообщения будут потеряны, будут получать искаженные, будут получать с задержкой - решения в этом пространстве должны учитывать это. Таким образом, распределенное программирование - это работа с сетями и сообщениями, параллелизм и отсутствие глобальной информации.
Самый простой способ обойти проблемы - сделать отдельный элемент обработки особенным, то есть авторитетным для определенной части информации. Затем другие элементы могут либо ссылаться на него каждый раз, либо кэшировать информацию и надеяться, что она не устареет (поскольку они не могут рассчитывать на то, что им сообщат об изменениях). Это классическая архитектура клиент / сервер.
Интернет-вычисления - это распределенные вычисления, но без возможности контролировать то, что в действительности делает большинство распределенных узлов.
Многочисленные параллельные потоки, пытающиеся синхронизироваться для доступа к ресурсу, представляют собой проблему в области распределенных вычислений?
Они представляют собой возможное решение , которое полезно при построении модели клиент / сервер, но за счет потенциально значительного увеличения конкуренции за ресурсы. Для чтения это не очень большая проблема (при условии, что оборудования достаточно), но для записи это действительно большая проблема.
Чего вы пытаетесь избежать, так это распределенных блокировок. Отсутствие надежного своевременного обмена сообщениями абсолютно задерживает протоколы распределенного принятия решений, если только вы не используете что-то вроде протокола Paxos , но это требует много предостережений. Основная проблема распределенных вычислений заключается в том, что «плохие вещи случаются с сообщениями». Относительно низкоуровневые протоколы, такие как TCP, уменьшают проблемы, но вы все равно можете оторваться.