sdt-book-2006 (1133574), страница 58
Текст из файла (страница 58)
дублирование) ресурсов,трудности, возникающие при одновременной работе нескольких пользователей с однимресурсом, ошибки при доступе к ресурсам и в работе самих ресурсов.Технология разработки распределенного ПО тоже может обладать прозрачностьюнастолько, насколько она позволяет разработчику забыть о том, что создаваемая системараспределена, и насколько легко в ходе разработки можно отделить аспекты построениясистемы, связанные с ее распределенностью, от решения задач предметной области илибизнеса, в рамках которых системе предстоит работать.Степень прозрачности может быть различной, поскольку скрывать все эффекты,возникающие при работе распределенной системы, неразумно. Кроме того, прозрачностьсистемы и ее производительность обычно находятся в обратной зависимости — например,при попытке преодолеть отказы в соединении с сервером большинство Web-браузеровпытается установить это соединение несколько раз, а для пользователя это выглядит каксильно замедленная реакция системы на его действия.• Открытость (openness).Открытость системы определяется как полнота и ясность описания интерфейсов работы сней и служб, которые она предоставляет через эти интерфейсы.
Такое описание должновключать в себя все, что необходимо знать для того, чтобы пользоваться этими службами,независимо от реализации данной системы и платформы, на которой она развернута. Одиниз основных элементов описания службы — ее контракт.Открытость системы важна как для обеспечения ее переносимости, так и для облегченияиспользования системы и возможности построения других систем на ее основе.Распределенные системы обычно строятся с использованием служб, предоставляемыхдругими системами, и в то же время сами часто являются составными элементами илипоставщиками служб для других систем.Именно поэтому использование компонентных технологий при разработке практическиполезного распределенного ПО неизбежно.• Масштабируемость (scalability).Масштабируемость системы — это зависимость изменения ее характеристик от количестваее пользователей и подключенных ресурсов, а также от степени географическойраспределенности системы.
В число значимых характеристик при этом попадаютфункциональность, производительность, стоимость, трудозатраты на разработку, навнесение изменений, на сопровождение, на администрирование, удобство работы ссистемой. Для некоторых из них наилучшая возможная масштабируемость обеспечиваетсялинейной зависимостью, для других хорошая масштабируемость означает, что показатель214•не меняется вообще при изменении масштабов системы или изменяется незначительно.Система хорошо масштабируема по производительности, если параметры задач, решаемыхею за одно и то же время, можно увеличивать достаточно быстро (лучше — линейно илиеще быстрее, но это возможно не для всех задач) при возрастании количества имеющихсяресурсов, в частности, отдельных машин.
Однако, очень плохо, если внесение изменений всистему становится все более трудоемким при ее росте, даже если этот рост линейный, —желательно, чтобы трудоемкость внесения одного изменения почти не возрастала. Дляфункциональности же, опять, чем быстрее растет число доступных функций при ростечисла вовлеченных в систему элементов, тем лучше.Большую роль играет административная масштабируемость системы — зависимостьудобства работы с ней от числа административно независимых организаций, вовлеченных вее обслуживание.При реализации очень больших систем (поддерживающих работу тысяч и болеепользователей, включающих сотни и более машин) хорошая масштабируемость можетбыть достигнута только с помощью децентрализации основных служб системы иуправляющих ею алгоритмов.
Вариантами такого подхода являются следующие.o Децентрализация обработки запросов за счет использования для этого несколькихмашин.o Децентрализация данных за счет использования нескольких хранилищ данных илинескольких копий одного хранилища.o Децентрализация алгоритмов работы за счет использования для алгоритмов: не требующих полной информации о состоянии системы; способных продолжать работу при сбое одного или нескольких ресурсов системы; не предполагающих единого хода времени на всех машинах, входящих в систему.o Использование, где это возможно, асинхронной связи — передачи сообщений безприостановки работы до прихода ответа.o Использование комбинированных систем организации взаимодействия, основанных наследующих схемах. Иерархическая организация систем, хорошо масштабирующая задачи поискаинформации и ресурсов. Репликация — построение копий данных и их распределение по системе длябалансировки нагрузки на разные ее элементы. Частным случаем репликацииявляется кэширование, при котором результаты наиболее часто используемыхзапросов запоминаются и хранятся как можно ближе к клиенту, чтобыпереиспользовать их при повторении запросов. Взаимодействие точка-точка (peer-to-peer, P2P) обеспечивает независимостьвзаимодействующих машин от других машин в системе.Безопасность (safety).Так как распределенные системы вовлекают в свою работу множество пользователей,машин и географически разделенных элементов, вопросы их безопасности получаютгораздо большее значение, чем при работе обычных приложений, сосредоточенных наодной физической машине.
Это связано как с невозможностью надежно контролироватьдоступ к различным элементам такой системы, так и с ее доступностью для гораздо болееширокого и разнообразного по своему поведению сообщества пользователей.Понятие безопасности включает следующие характеристики.o Сохранность и целостность данных.При обеспечении групповой работы многих пользователей с одними и теми жеданными нужно обеспечивать их сохранность (т.е. предотвращать исчезновениеданных, введенных одним из пользователей) и в тоже время целостность, т.е.непротиворечивость, выполнение всех присущих данным ограничений.Это непростая задача, которая не имеет решения, удовлетворяющего все стороны во215всех ситуациях, — при одновременном изменении одного и того же элемента данныхразными пользователями итоговый результат должен быть непротиворечив и поэтомучасто может совпадать только с вводом одного из них. Как будет обработана такаяситуация и возможно ли ее возникновение вообще, зависит от дополнительныхтребований к системе, от принятых протоколов работы, от того, какие риски —потерять данные одного из пользователей или значительно усложнить работупользователей с системой — будут сочтены более важными.o Защищенность данных и коммуникаций.При работе с коммерческими системами, содержащими большие объемы персональнойи бизнес-информации, а также с системами обслуживания пользователейгосударственных ведомств очень важна защищенность как информации, постояннохранящейся в системе, так и информации одного сеанса работы.
Для распределенныхсистем обеспечить защищенность гораздо сложнее, поскольку нельзя физическиизолировать все элементы системы и разрешить доступ к ней только проверенным иобладающим необходимыми знаниями и умениями людям.o Отказоустойчивость и способность к восстановлению после ошибок.Одним из достоинств распределенных систем является возможность построения болеенадежно работающей системы из не вполне надежных компонентов. Однако для того,чтобы это достоинство стало реальным, необходимо тщательное проектирование системс тем, чтобы избежать зависимости работоспособности системы в целом от ееотдельных элементов.
Иначе достоинство превращается в недостаток, поскольку враспределенной системе элементов больше и выше вероятность того, что хотя бы одинэлемент выйдет из строя и хотя бы один ресурс окажется недоступным.Еще важнее для распределенных систем уметь восстанавливаться после сбоев. Уровниэтого восстановления могут быть различными. Обычно данные одного короткого сеансаработы считается возможным не восстанавливать, поскольку такие данные частомалозначимы или легко восстанавливаются (иначе стоит серьезно рассмотретьнеобходимость восстановления сеансов). Но так называемые постоянно хранимые(persistent) данные чаще всего требуется восстанавливать в их последнемнепротиворечивом состоянии.Перед разработчиками систем, удовлетворяющих перечисленным свойствам, встает огромноеколичество проблем. Решать их все сразу просто невозможно в силу ограниченности человеческихспособностей.
Чтобы хоть как-то структурировать эти проблемы, их разделяют по следующимаспектам [3].• Связь.Организация связи и передачи данных между элементами системы.В связи с этим аспектом возникают следующие задачи.o Какие протоколы использовать для передачи данных.o Как реализовать обращения к процедурам и методам объектов одних процессов издругих.o Какой способ передачи данных выбрать — синхронный или асинхронный.
В первомслучае сторона, инициировавшая передачу, приостанавливает свою работу до приходаответа другой стороны на переданное сообщение. Во втором случае первая сторонаимеет возможность продолжить работу, пока данные передаются и обрабатываютсядругой стороной.o Нужно ли, и если нужно, то как, организовать хранение (асинхронных) сообщений в товремя, когда и отправитель и получатель сообщения могут быть неактивны.o Как организовать передачу непрерывных потоков данных, представляющих собойаудио-, видеоданные или смешанные потоки данных. Этот вопрос имеет большоезначение, поскольку заметные человеку прерывания в передаче таких данных приводятк значительному падению качества предоставляемых услуг.216••••••Именование.Поддержка идентификации и поиска отдельных ресурсов внутри системы.o По каким правилам присваивать имена и идентификаторы различным ресурсам.o Как организовать поиск ресурсов в системе по идентификаторам и атрибутам,описывающим какие-нибудь свойства ресурсов.o Как размещать и находить мобильные ресурсы, изменяющие свое физическоеположение в ходе работы.o Как организовывать и поддерживать в рабочем состоянии сложные ссылочныеструктуры, необходимые для описания имеющихся в распределенной системе ресурсов.Как, например, находить и удалять ресурсы, ставшие никому не доступными.Процессы.Организация работ в рамках процессов и потоков.o Как разделить работы в системе по отдельным процессам и машинам.o Нужно ли определять различные ролей процессов в системе, например, клиентские исерверные, и как организовывать их работу.o Как организовать работу исполняемых агентов — процессов, способных перемещатьсямежду машинами и выполнять свои задачи в любой подходящей среде.Синхронизация.Синхронизация параллельно выполняемых потоков работ.o Как синхронизовать действия отдельных процессов и потоков, работающих в системе,для получения нужных результатов.o Как организовать работу многих процессов на разных машинах в том случае, если всистеме нельзя непротиворечиво определить глобальное время.o Как организовать выполнение транзакций — таких наборов действий, которые надолибо все выполнить, либо не выполнить ни одного из них.Целостность.Поддержка целостности данных и непротиворечивости вносимых изменений.o Каким образом можно обеспечивать целостность данных.o Какие модели непротиворечивости нужно поддерживать.
Модель непротиворечивостиопределяет, на основе каких требований формируются результаты выполняемыходновременно изменений и что доступно клиентам, выполнявшим эти изменения.o Какие протоколы обеспечения непротиворечивости, создания и записи транзакций,создания и согласования реплик и кэшей использовать для выполнения требований этихмоделей.Отказоустойчивость.Организация отказоустойчивой работы.o Как организовать отказоустойчивую работу одного процесса.o Как обеспечить надежную связь между элементами системы.o Какие протоколы использовать для реализации надежной двусторонней связи илинадежных групповых рассылок.o Какие протоколы использовать для записи промежуточных состояний и восстановленияданных и работы системы после сбоев.Защита.Организация защищенности данных и коммуникаций.o Как организовать защиту системы в целом.При этом большее значение, чем технические аспекты, имеют организационные ипсихологические факторы — проблемы определения процедур проведения работ,217обеспечивающих нужный уровень защищенности, и проблемы соблюдения людьмиэтих процедур.o Как организовать защиту данных от несанкционированного доступа.o Как обеспечить защиту каналов связи от двух видов атак — воспрепятствоватьнесанкционированному доступу к передаваемой информации и не дать подменитьинформацию в канале.o Какие протоколы аутентификации пользователей, подтверждения идентичности иавторства использовать.Из перечисленных тем отдельного рассмотрения заслуживают вопросы организации передачисообщений и транзакций, тем более что все рассматриваемые далее технологии используют этимеханизмы.