В.В. Кулямин - Технологии программирования. Компонентный подход (1134162), страница 60
Текст из файла (страница 60)
Однако, очень плохо, если внесение изменений всистему становится все более трудоемким при ее росте, даже если этот рост линейный, —желательно, чтобы трудоемкость внесения одного изменения почти не возрастала. Дляфункциональности же, опять, чем быстрее растет число доступных функций при ростечисла вовлеченных в систему элементов, тем лучше.Большую роль играет административная масштабируемость системы — зависимостьудобства работы с ней от числа административно независимых организаций, вовлеченных вее обслуживание.При реализации очень больших систем (поддерживающих работу тысяч и болеепользователей, включающих сотни и более машин) хорошая масштабируемость можетбыть достигнута только с помощью децентрализации основных служб системы иуправляющих ею алгоритмов.
Вариантами такого подхода являются следующие.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 Какие протоколы аутентификации пользователей, подтверждения идентичности иавторства использовать.Из перечисленных тем отдельного рассмотрения заслуживают вопросы организации передачисообщений и транзакций, тем более что все рассматриваемые далее технологии используют этимеханизмы.
Более того, практически любая распределенная система сейчас строится на основепрограммного обеспечения промежуточного уровня (middleware, это программное обеспечение,которое предназначено для облегчения интеграции ПО, размещенного на нескольких машинах, вединую распределенную систему и поддержки работы такой системы), содержащего ту или инуюих реализацию.Синхронное и асинхронное взаимодействиеПри описании взаимодействия между элементами программных систем инициаторвзаимодействия, т.е.