Опубликован: 23.05.2008 | Доступ: свободный | Студентов: 1570 / 396 | Оценка: 4.80 / 4.10 | Длительность: 15:29:00
Специальности: Программист
Лекция 16:

Тенденции в области распределенных систем

< Лекция 15 || Лекция 16: 12

Далее, исследование приложений проблемных областей, являющихся распределенными, мобильными и изменяющимися. Такие приложения требуют создания соответствующих абстракций (системы понятий), позволяющих их структурировать и описывать взаимодействие и координацию в достижении целей.

Важной областью исследований являются работы по интеграции распределенных разнородных компонент, поддержка реконфигурации компонент и их исполнения в системах различного масштаба. Вообще, распределение и интеграция – две стороны одного процесса, имеющие разные истоки и причины, но одинаково важные в исследованиях по распределенным системам.

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

Имитационные эксперименты, происходящие в режиме on-line, могут потребовать изменения режима на off-line или использования каких-то инструментальных средств. Проходящий эксперимент может потребовать реконфигурации программ прямо во время исполнения (язык моделирования Triad это допускает, но такая реконфигурация должна быть поддержана еще и платформой). Эксперимент, как отмечалось выше, может потребовать динамической балансировки нагрузки компьютеров сети, поскольку предсказать заранее, какой будет нагрузка и провести ее распределение статическим способом не всегда возможно. Наконец, в эксперименте могут участвовать несколько пользователей – исследователей, находящихся в разных точках сети, играющих разные роли, и совместно управляющих экспериментом.

Для поддержки всех этих приложений требуется развитие инфраструктуры Грид, включающее технологии создания приложений.

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

Новые подходы нужны и в моделировании (с целью разработки и управления) крупномасштабной динамической организации компонент и групп компонент. Требуется развитие теории и практики статической интеграции компонент, их повторного использования, динамического составления композиций компонент (подобно композиции функций в математике), координации при взаимодействии компонент.

Эти модели должны помогать в оценке свойств групп взаимодействующих компонент, в предсказании глобальных свойств и поведения (функциональных и не функциональных аспектов) приложения, основанного на множестве компонент.

Новая технология должна поддерживать все этапы жизненного цикла приложения от спецификации и проектирования, генерации кода до конфигурирования и сопровождения. Она должна обеспечивать:

  1. Спецификацию приложения в терминах множества компонент.
  2. Четкое разделение описаний структуры и поведения приложения, вычислительной части и взаимодействий.
  3. Иерархическое представление приложения с отображением вышележащих слоев на нижележащие слои. Возможность изменения этого отображения, в том числе в процессе обработки данных.
  4. Возможность отображать уровень приложения на уровень оборудования, в частности, решать задачу распределения нагрузки в системе.
  5. Поддерживать координацию распределенных сущностей, их адаптацию к окружению, динамическую реконфигурацию.
  6. Поддерживать сервисы инфраструктуры распределенных систем такие, как управление событиями, именами, транзакциями, создание "мостов" между разными распределенными системами (между Грид-системами).

С точки зрения поддержки повторного использования компонент важными понятиями, появившимися в последние годы, стали паттерны, шаблоны (формы) и каркасы (skeleton). Они позволяют использовать как ранее описанные структуры, так и поведение. Таким образом, постепенно формируется "виртуальная библиотека" общих компонент вычислительного характера и типовых взаимодействий, доступная различным разработчикам.

Это, отчасти, напоминает процессы, относящиеся к раннему, романтическому периоду развития программирования как области практической деятельности. Тогда издавались сборники алгоритмов на универсальных языках программирования (Алгол, Фортран), аккумулирующие опыт программистов, работающих в области научных вычислений. В дальнейшем, когда компьютерная область стала ориентироваться на бизнес-приложения, эта практика значительно сократилась. Обмен новыми идеями остался на уровне алгоритмов, излагаемых в традиционной математической форме или, напротив, в виде словесного описания. Программы остались в учебниках в виде упрощенных примеров, не пригодных для непосредственного использования.

Упомянутые паттерны и другие абстракции становятся действительно полезными в распределенных системах ввиду достаточного разнообразия представленной в них функциональности. Они хранятся в репозиториях (базах) программных шаблонов, с указанием необходимых атрибутов, что позволяет создавать их и управлять ими в течение всего жизненного цикла – от проектирования до выполнения. Паттерны допускают различные реализации и различную степень автоматизации их использования.

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

Мобильный компьютинг

Самостоятельным направлением является мобильный компьютинг. В его основе (в дополнение к распределенному компьютингу) лежат:

  1. сети, обеспечивающие подключение к ним в любой географической точке (сотовые и проч.);
  2. мобильный доступ к информации (возможность получения информации при перемещении пользователя),
  3. адаптивность приложений,
  4. чувствительность к местоположению,
  5. энергонезависимость систем.

Грид и мобильный компьютинг – это параллельные линии развития. Они не совпадают, поскольку базируются на разных моделях пользователя. В Гриде – это пользователь, находящийся в одном из узлов решетки (grid – решетка, в переводе с английского), и имеющий возможность унифицированным образом использовать ресурсы (информационные, вычислительные), находящиеся в любых доступных в данный момент узлах решетки. Под доступностью понимается согласие владельцев этих узлов, поскольку физическая доступность обеспечена априори. Решетка – топологическое образование: расстояния между узлами, как правило, не имеют значения.

В мобильном компьютинге другая модель пользователя. Это человек, движимый своими целями и перемещающийся в пространстве. Среда (сеть) обеспечивает перемещение сервисов, необходимых пользователю, вслед за ним. Эти сервисы, по преимуществу, информационные (по крайней мере, в настоящее время). Географический аспект, расстояния играют в мобильном компьютинге важную роль. Они являются частью характеристик среды.

Тотальный компьютинг

Английский термин pervasive computing обозначает проникающий, распространяющийся повсюду, всеобъемлющий, глубоко влияющий (компьютинг). Тотальный компьютинг ставит во главу угла конечного пользователя, который должен получать вычислительное обслуживание непрерывно, 24 часа в сутки, 7 дней в неделю, причем обслуживание самого разного рода – от научных вычислений до управления кухонными агрегатами.

М.Сатьянараян формулирует четыре новые области исследований в дополнение к областям мобильного компьютинга, вместе с ним образующие область тотального компьютинга:

  1. эффективное использование персонального умного пространства, имея в виду окружающие нас на работе, в транспорте, дома устройства с компьютерным управлением, необходимыми датчиками и исполнительными механизмами;
  2. невидимость (умного пространства) – минимальное отвлечение внимания пользователя на управление окружающими вещами;
  3. местная масштабируемость; имеется в виду обычное в программном обеспечении понятие масштабируемости с поправкой на то, что она должна иметь место для любой точки персонального умного пространства, обладающей вычислительными ресурсами: любая точка должна быть сделана настолько "мощной", насколько это необходимо пользователю.
  4. маскирование неоднородностей; под неоднородностью понимаются различия как в техническом плане (называемые, обычно, гетерогенностью), так и не технические – организационные структуры, бизнес-процессы, экономические факторы.

К этому можно еще добавить знание контекста. Т.е. пользователь существует в персональном умном пространстве не "вслепую", а представляя себе, сознавая контекст. В некотором отношении это противоречит невидимости, однако, на самом деле, должен существовать разумный баланс между невидимостью и знанием контекста.

Подытоживая написанное выше, можно привести следующую "формулу":

тотальный компьютинг = мобильный компьютинг + {персональное умное пространство, 
невидимость, местная масштабируемость, маскирование неоднородностей}

Распределенные вычисления традиционно следуют модели клиент-сервер. Вслед за этим и Грид следует такой же модели. В парадигме тотального компьютинга все субъекты вычислений могут быть равны. Они равные: посылают запросы и выполняют сервисы. В отличие от клиент-серверной модели технология "равный с равным" (peer-to-peer, P2P) стала интенсивно развиваться относительно недавно. Технология P2P является перспективной и может стать альтернативой традиционным Web-сервисам.

Объединение направлений компьютинга в Грид и тотального компьютинга сулит в будущем создание глобального умного пространства:

Глобальное умное пространство = Грид компьютинг + тотальный компьютинг

Оно отличается тем, что пространство становится уже не персональным (хотя, ближнее окружение, подпространство остается) как в тотальном компьютинге, а глобальным. В нем действует уже не один пользователь, а множество пользователей, каждый со своим персональным подпространством. Но технические, технологические, информационные "барьеры" между подпространствами отсутствуют. Это не означает полной открытости. Любой пользователь может применить для охраны своего пространства от несанкционированного доступа средства компьютерной безопасности. Правда, они тоже должны "поумнеть" по сравнению с современными средствами информационной безопасности. Это еще одна перспективная задача.

Если перейти от моделей конечных пользователей к задачам, стоящим перед программистами распределенных систем, то можно отметить все возрастающую важность программного обеспечения промежуточного уровня (middleware). Оно важно и для Грида и для тотального компьютинга. Многие считают, что middleware – это ключ к следующему поколению компьютинга.

< Лекция 15 || Лекция 16: 12
Дмитрий Полянский
Дмитрий Полянский
Ольга Космодемьянская
Ольга Космодемьянская

Я прошла курс "Распределенные системы и алгоритмы". Сдала экзамен экстерном и получила диплом. Вопрос: можно ли после завершения теста посмотреть все вопросы, которые были на экзамене и все варианты ответов? Мне это необходимо для отчета преподавателю в моем ВУЗе. Заранее спасибо!