1 РАСПРЕДЕЛЕННЫЕ СЕРВИСНЫЕ СИСТЕМЫ Преподаватель: Абрамова Виктория Валерьевна Лекции: 10х10 баллов = 100 баллов Лабораторные работы: 3х33 балла+1 балл = 100 баллов Форма контроля: ЗАЧЕТ (для получения необходимо набрать 61% от общей суммы баллов) 2 Лекция 1 Введение в распределенные вычислительные системы Формального определения распределенной вычислительной системы (РВС) в настоящее время не существует. Из множества различных определений, можно выделить ироничное определение первого лауреата премии Дейкстры за достижения в области распределенных вычислений Лесли Лампорта: «Распределенной вычислительной системой можно назвать такую систему, в которой отказ компьютера, о существовании которого вы даже не подозревали, может сделать ваш собственный компьютер непригодным к использованию». Это определение он дал в мае 1987 года, в своем письме коллегам по поводу очередного отключения электроэнергии в машинном зале. 3 Чуть более строгое определение, которого мы в дальнейшем и будем придерживаться, предложил Эндрю Таненбаум в своем фундаментальном труде «Распределённые системы. Принципы и парадигмы»: «Распределенная вычислительная система – это набор соединенных каналами связи независимых компьютеров, которые с точки зрения пользователя некоторого программного обеспечения выглядят единым целым». В этом определении фиксируются два существенных момента, характерных для РВС: - автономность узлов; - представление системы пользователем, как единой структуры. При этом, основным связующим звеном вычислительных систем является программное обеспечение. распределенных 4 Промежуточное программное обеспечение РВС представляет собой программно-аппаратный комплекс, ориентированный на решение определенных задач. С одной стороны, каждый вычислительный узел является автономным элементом. С другой стороны, программная составляющая РВС должна обеспечивать пользователям видимость работы с единой вычислительной системой. В связи с этим выделяют следующие важные характеристики РВС: 1. возможность работы с различными типами устройств: - с различными поставщиками устройств; - с различными операционными системами, - с различными аппаратными платформами. Вычислительные среды, состоящие из множества вычислительных систем на базе разных программно-аппаратных платформ, называются гетерогенными. 2. возможность простого расширения и масштабирования; 3. перманентная (постоянная) доступность ресурсов (даже если некоторые элементы РВС некоторое время могут находиться вне доступа); 4. сокрытие особенностей коммуникации от пользователей. 5 Для обеспечения работы гетерогенного оборудования РВС в виде единого целого, стек программного обеспечения (ПО) обычно разбивают на два слоя. На верхнем слое располагаются распределенные приложения, отвечающие за решение определенных прикладных задач средствами РВС. Их функциональные возможности базируются на нижнем слое – промежуточном программном обеспечении (ППО), которое взаимодействует с системным ПО и сетевым уровнем, для обеспечения прозрачности работы приложений в РВС. Рисунок 1 – Слои программного обеспечения в РВС 6 Для того чтобы РВС могла быть представлена пользователю как единая система, применяют следующие типы прозрачности в РВС: ⇒ прозрачный доступ к ресурсам – от пользователей должна быть скрыта разница в представлении данных и в способах доступа к ресурсам РВС; ⇒ прозрачное местоположение ресурсов - место физического расположения требуемого ресурса должно быть несущественно для пользователя; ⇒ репликация - сокрытие от пользователя того, что в реальности существует более одной копии используемых ресурсов; ⇒ параллельный доступ – возможность совместного (одновременного) использования одного и того же ресурса различными пользователями независимо друг от друга. При этом факт совместного использования ресурса должен оставаться скрытым от пользователя; ⇒ прозрачность отказов – отказ (отключение) каких-либо ресурсов РВС не должен оказывать влияния на работу пользователя и его приложения. 7 Терминология РВС Ресурс – любая программная или аппаратная сущность, представленная или используемая в распределенной сети (например, компьютер, устройство хранения, файл, коммуникационный канал, сервис и т. п.) Узел – любое аппаратное устройство в распределенной вычислительной системе. Сервер – это поставщик информации в РВС (например, веб-сервер). Клиент – это потребитель информации в РВС (например, веб-браузер). Пир – это узел, совмещающий в себе как клиентскую, так и серверную часть (т. е. и поставщик, и потребитель информации одновременно). Сервис – это сетевая сущность, предоставляющая определенные функциональные возможности (например, веб-сервер может предоставлять сервис передачи файлов по протоколу HTTP). В рамках одного узла могут предоставляться несколько различных сервисов. 8 Каждый компьютер или устройство представляет собой сущность в распределенной вычислительной системе в виде узла. При этом на каждом узле может располагаться несколько клиентов, серверов, сервисов или пиров. Важно заметить, что любой узел, сервер, пир или сервис (но не клиент!) Рисунок 2 – Схема взаимоотношений являются ресурсами РВС. между терминами РВС Сервис получает запрос на предоставление определенных данных (почти как аргументы, передаваемые при вызове локальной функции) и возвращает ответ. Таким образом, сервис можно определить как некую замену вызова функции на локальном компьютере. Существует множество технологий, обеспечивающих создание и сопровождение сервисов в РВС: технология XML веб-сервисов, сервисы REST и др. 9 Классификация РВС 1. По методу обнаружения ресурсов: ⎯ централизованные – запрос на поиск отправляется на некоторый центральный сервер (пример: служба DNS (Domain Name System – система доменных имен), которая по имени сайта возвращает его IPадрес); ⎯ децентрализованные – запрос на поиск отправляется всем узлам, известным отправителю (пример: система Gnutella). 2. По доступности ресурсов: ⎯ централизованные – существует один сервер, который предоставляет определенный ресурс или сервис (пример: веб-сервис); ⎯ децентрализованные – каждый узел играет роль клиента и сервера, который может предоставлять ресурсы и сервисы, аналогичные остальным устройствам данной сети (примеры: BitTorrent, Gnutella, Napster). 10 3. По методу взаимодействия ресурсов: ⎯ централизованные – взаимодействие между узлами производится через центральный сервер, один узел не может обратиться к другому непосредственно; ⎯ децентрализованные – прямое взаимодействие между узлами РВС, поскольку каждый узел играет роль сервера и клиента (пример: одноранговые вычислительные системы). Связь в РВС Понятие «распределенная вычислительная система» подразумевает, что компоненты такой системы распределены, т.е. удалены друг от друга. Очевидно, что функционирование подобных систем невозможно без эффективной связи между ее компонентами, котрая реализуется посредством объединения устройств, принадлежащих к РВС, в сети. Взаимодействие в вычислительных сетях базируется на протоколах, представляющих собою наборы правил и соглашений, описывающих процедуру взаимодействия между компонентами системы. 11 В области вычислительных коммуникаций уже длительное время существует общепринятая система протоколов – сетевая модель OSI (англ. Open Systems Interconnection basic reference model – базовая эталонная модель взаимодействия открытых систем), которая представляет собой стек протоколов разного уровня. Рисунок 3 – Уровни модели OSI 12 История развития распределенных вычислений Одна из ключевых проблем: проблема выбора между централизованной и распределенной моделями предоставления вычислительных ресурсов. Первое поколение РВС Время появления: начало 1990-х Суть, цели и задачи: объединение вычислительных мощностей суперкомпьютеров с целью предоставления вычислительных ресурсов для определенного ряда высокопроизводительных приложений. Примеры: проекты FAFNER и I-WAY Проект FAFNER (Factoring via Network-Enabled Recursion – сетевое разложение на множители посредством рекурсии) был создан в 1995 г. для решения задачи разложения больших чисел на основе мощностей географически-распределенных вычислительных систем (ВС). Нахождение простых множителей больших чисел позволяет расшифровать данные, зашифрованные на основе алгоритма RSA (аббревиатура из первых букв фамилий разработчиков данного метода: Rivest, Shamir и Adleman). Особенности: 13 - реализация NFS - Network File System (Сетевая Файловая Система) позволяла даже малым рабочим станциям (с 4 Мб оперативной памяти) выполнять полезную работу, рассчитывая свой маленький фрагмент задачи; - анонимная регистрация участников; иерархическая структура веб-серверов, представлявших костяк ВС, что уменьшало возможность возникновения «узкого места» в ВС. I-WAY - Information Wide Area Year (Год Информации Глобальных Сетей) - экспериментальная высокопроизводительная сеть, спроектированная в начале 1995, с целью объединения высокоскоростных сетей, существующих на тот момент. В рамках проекта, была построена аппаратная инфраструктура, посредством которой осуществлялся доступ к ресурсам сети I-WAY. Она состояла из базовых рабочих станций под управлением операционной системы UNIX, на которые было установлено специальное ППО (сервер I-POP). Система I-POP брала на себя функции шлюза к ресурсам сети I-WAY. Каждый такой сервер поддерживал стандартные процедуры аутентификации, резервирования ресурсов создания процессов и коммуникации. Проект I-WAY использовался для решения следующих задач: суперкомпьютерные вычисления; доступ к удаленным ресурсам; задачи виртуальной реальности. 14 Второе поколение РВС Название: Грид Время появления: конец 1990-х Суть, цели и задачи: «гибкое, безопасное, координированное распределение ресурсов среди динамических наборов пользователей, организаций и ресурсов» (Ян Фостер). Основной задачей грид было построение инфраструктуры, обеспечивающей «вычисления по требованию». Особенности: 1. Гетерогенность. Вычислительная среда грид может состоять из множества различных ресурсов, обладающих различными характеристиками и параметрами. 2. Масштабируемость. Грид может состоять из сколь угодно большого числа ресурсов. 3. Приспособляемость. Среда грид может состоять из сотен компьютеров, и ошибки в работе десятка из них не должны влиять на полученные результаты решения. 15 Название: Проект Legion Время появления: ноябрь 1997, приостановлен в 2001. Суть, цели и задачи: объектно-ориентированная система, предоставляющая программную оболочку для организации однородного взаимодействия высокопроизводительных гетерогенных РВС. Цель: предоставление пользователям единой интегрированной инфраструктуры РВС, независимо от масштаба, географического положения, языка или операционной системы. Особенности: предоставление пользователю набора объектов, реализующих базовые сервисы: - объекты вычислителей – абстракции, реализующие базовые принципы работы с вычислительными ресурсами; - объекты систем хранения данных – абстракции, предоставляющие базовые методы работы с системами хранения данных; - объекты связывания – объекты, обеспечивающие связи между абстрактным идентификатором объекта и его физическим адресом; – объекты, реализующие проекцию - объекты контекста пользовательских имен объектов на абстрактные идентификаторы объектов в системе Legion. 16 Название: Распределенные объектные системы Время появления: середина 1990-х. Суть, цели и задачи: предоставление базовых методов для регистрации, сериализации (процесс перевода какой-либо структуры данных в последовательность битов) и десериализации (восстановление начального состояния структуры данных из битовой последовательности) объектов с целью обеспечения удаленного вызова методов. Представители: CORBA и Java. CORBA (Common Object Request Broker Architecture — общая архитектура брокера объектных запросов) – протокол взаимодействия объектноориентированных систем, опубликованный в 1997-1998 годах консорциумом OMG (Object Management Group). Спецификация CORBA предписывает объединение программного кода в объект, который должен содержать информацию о функциональности кода и интерфейсах доступа. Готовые объекты могут вызываться из других программ (или объектов CORBA), расположенных в сети. Программная платформа Java — ряд программных продуктов и спецификаций компании Sun Microsystems (первый официальный выпуск 23 17 мая 1995), которые совместно предоставляют систему для разработки прикладного программного обеспечения и встраивания её в любое кроссплатформенное программное обеспечение. В отличие от CORBA, использующей высокоуровневые стандарты взаимодействия, в Java борьба с гетерогенностью осуществляется путем использования единой виртуальной среды. Современные РВС Сегодня РВС отходят от традиционных понятий высокопроизводительных распределенных вычислений в сторону развития виртуального сотрудничества и виртуальных организаций. Виртуальная организация – это ряд людей и/или организаций, объединенных общими правилами коллективного доступа к определенным вычислительным ресурсам. Методы предоставления доступа к вычислительным ресурсам становятся сервисно-ориентированными, что позволяет гибко использовать одни и те же вычислительные ресурсы различными потребителями. Кроме того, значительно расширились области автоматизированного управления ресурсами и получили распространение автоматизированные средства обработки ошибок и восстановления вычислительного процесса. 18 Название: Одноранговые сети (peer-to-peer, Р2Р) Время появления: 1999-2000 гг. Суть, цели и задачи: компьютеры обмениваются ресурсами непосредственно друг с другом, без использования центрального сервера. Достоинства: - упрощение масштабируемости; - повышение отказоустойчивости сети, т.к. сбой любого вычислительного узла не может привести к остановке функционирования сети целиком. Недостатки: 1. увеличение требований к производительности каждого компьютера, включенного в такую сеть. 2. Низкая степень защищенности машин, участвующих в P2P сети в силу предоставления открытого доступа к своим ресурсам. 3. Необходимость преодоления возможной гетерогенности аппаратного и программного обеспечения ее потенциальных участников. 4. Поиск доступных ресурсов, без использования централизованной точки управления, что является очень трудоемкой и ресурсоемкой задачей. Представители: Gnutella, BitTorrent, Napster, Skype. 19 Название: Сервис-ориентированная архитектура (СОА, Service-Oriented Architecture – SOA) Время появления: начало 2000-х гг. Суть, цели и задачи: решение проблем ранних стандартов распределенных объектных технологий посредством веб-сервисов и сервис-ориентированной архитектуры. Стандарты веб-сервисов были разработаны по инициативе организаций, занимающихся предоставлением удаленного доступа к определенным вычислительным ресурсам, и закреплены консорциумом W3C. К основным стандартам разработки и функционирования веб-сервисов можно отнести: - SOAP - основанный на XML протокол взаимодействия веб-сервисов; - WSDL (Web Services Description Language - язык описания веб-сервисов)– это методология описания ресурсов, предоставляемых веб-сервисом; - UDDI (Universal Description Discovery and Integration - универсальный метод поиска и интеграции) - метод описания, поиска, взаимодействия и использования веб-сервисов. На сегодняшний день, сервис-ориентированный подход является стандартом «де-факто» при разработке распределенных вычислительных систем. 20 Название: Агенты Время появления: середина 1990-х. Суть, цели и задачи: построение широкомасштабных вычислительных сетей, приспособленных для функционирования в динамически-изменяемой окружающей среде. Программный агент – это автономный процесс, способный реагировать на среду исполнения и вызывать изменения в среде исполнения, возможно, в кооперации с пользователями или другими агентами. Основные принципы работы агентных сетей: - автономность - агенты функционируют автономно, без возможности постороннего вмешательства в их внутреннее состояние; - социальное поведение - агенты взаимодействуют друг с другом посредством определенного языка (Agent Communication Languages, ACLs); - активность - агенты взаимодействуют с окружающей средой, получая определенные сигналы и отвечая на них; - про-активность - агенты действуют целенаправленно. Представители: архитектура взаимодействия FIPA (Foundation for Intelligent Physical Agents – базис интеллектуальных физических агентов), которая стандартизует методы взаимодействия агентов и агентных систем. 21 Название: Облачные вычисления Время появления: 2007 – 2008 гг. Суть, цели и задачи: обеспечение повсеместного и удобного сетевого доступа по требованию к общему пулу конфигурируемых вычислительных ресурсов, которые могут быть оперативно предоставлены и освобождены с минимальными эксплуатационными затратами и/или обращениями к провайдеру. Обязательные характеристики облачных вычислений: • • • • • Самообслуживание по требованию – потребитель самостоятельно определяет и изменяет вычислительные потребности (серверное время, скорости доступа и т.п.), без взаимодействия с представителем поставщика услуг; Универсальный доступ по сети – услуги доступны потребителям по сети передачи данных независимо от используемого терминального устройства; Объединение ресурсов – поставщик услуг объединяет ресурсы для обслуживания большого числа потребителей в единый пул для динамического перераспределения мощностей между потребителями в условиях постоянного изменения спроса на мощности; Эластичность – услуги могут быть предоставлены, расширены, сужены в любой момент времени, как правило, в автоматическом режиме; Учёт потребления - поставщик услуг автоматически исчисляет потреблённые ресурсы на определённом уровне абстракции (например, объём хранимых данных, пропускная способность), и на основе этих данных оценивает объём предоставленных потребителям услуг.