Шрифт:
Ниже перечислены недостатки распределенных систем по сравнению с отдельными компьютерами:
• издержки на координацию работы;
• издержки на организацию обмена информацией;
• зависимость от сетевой среды;
• более высокая сложность программного обеспечения;
• проблемы безопасности.
Издержки на координацию работы
В распределенных системах нет центральных объектов, которые координируют работу прочих объектов. То есть координацию осуществляют сами элементы системы. Координация совместно работающих компонентов распределенной системы представляет собой трудную задачу и требует существенных трудозатрат и вычислительных мощностей, отвлекаемых от выполнения основной задачи. Это и называется издержками, или накладными расходами на координацию работы.
Издержки на организацию обмена информацией
Для осуществления координации необходим обмен информацией. Следовательно, компьютеры, составляющие распределенную систему, должны обмениваться информацией друг с другом. Для этого обязательно требуется наличие коммуникационного протокола, а также средства отправки, приема и обработки сообщений, что также требует трудозатрат и вычислительных мощностей, отвлекаемых от выполнения основной задачи. Таким образом, и здесь возникают издержки (накладные расходы) на организацию обмена информацией.
Зависимость от сетевой среды
Для любого вида обмена информацией требуется носитель. Носитель отвечает за передачу информации между объектами, ведущими диалог. Компьютеры в распределенных системах обмениваются информацией в виде сообщений, передаваемых по сети. Сети обладают собственными недостатками и создают дополнительные затруднения, в свою очередь отрицательно воздействуя на координацию и обмен информацией между компьютерами распределенной системы. Но без сети распределенную систему создать невозможно, так как отсутствует обмен информацией, следовательно, нет средств координации узлов. Таким образом, распределенная система зависит от сетевой среды.
Более высокая сложность программного обеспечения
Для выполнения вычислительных (и прочих) задач требуется написание отдельных программ и комплексного программного обеспечения. Из-за проблем, описанных выше, программное обеспечение для распределенных систем обязательно должно обеспечивать решение вспомогательных задач, таких как координация, обмен информацией и поддержка работы в сетевой среде. Это увеличивает сложность программного обеспечения.
Проблемы безопасности
Обмен информацией в сетевой среде означает передачу и совместное использование данных, чрезвычайно важных для выполнения основной задачи. Но передача информации в сети создает проблемы защиты данных, так как ненадежные посторонние объекты могут воспользоваться сетью для несанкционированного доступа к приватной информации и нелегального ее использования. Следовательно, любая распределенная система непременно должна обеспечивать защиту информации. Чем меньше ограничений доступа к сети, по которой осуществляется обмен информацией между распределенными узлами, тем больше угроз для безопасности распределенной системы.
Пиринговые (peer-to-peer), или одноранговые, сети представляют собой особый тип распределенных систем. Они состоят из отдельных компьютеров (также называемых узлами), вычислительные ресурсы которых (например, все средства обработки данных, емкость внешних накопителей, хранимые данные, пропускная способность сети и т. д.) напрямую доступны всем прочим узлам этой сети без какого-либо центрального пункта координации. Все узлы такой сети имеют равные права и одинаковые роли в системе. Более того, все они являются как поставщиками, так и потребителями ресурсов.
Для пиринговых систем существуют весьма полезные способы применения, например совместное использование файлов, распространение контента, защита частной секретной информации. Большинство этих приложений использует простую, но мощную идею: превращение обычных пользовательских компьютеров в узлы, формирующие единую распределенную систему. В результате чем больше пользователей или клиентов-покупателей использует такую программную среду, тем больше и мощнее становится система в целом. Эта идея, ее развитие, трудности, связанные с ее реализацией, будут более подробно рассматриваться в следующих главах.
Централизованные и распределенные системы являются полными противоположностями с точки зрения архитектуры. Технические противоположности, казалось бы, не совместимые друг с другом, всегда вдохновляли инженеров на создание объединенных, гибридных систем, наследующих все сильные стороны своих предков. В этом плане централизованные и распределенные системы не являются исключением. Существуют два основных прототипа объединения противоположных архитектур, и их необходимо хорошо понимать, потому что сущность подобного объединения чрезвычайно важна для изучения функционирования блокчейн-приложений в реальном мире. Первый прототип – это центральное положение одного из узлов в распределенной системе, второй – распределенная система как управляющий узел централизованной системы.