Nets2010 (1131259), страница 4
Текст из файла (страница 4)
Но для этого потребовалось решить непростые задачи: компоненты должны работать в разных ОС, многократно использоваться в разных программных контекстах, они должны уметь обмениваться данными, взаимодействовать друг с другом или и многое другое.
8. Сервис ориентированные архитектуры
Сервис ориентированные архитектуры и web-сервисы
Современным воплощением старозаветной мечты индустрии программирования о замене "кустарного" кодирования программ "от и до" на "промышленную" сборку приложений из "стандартных комплектующих", как в автомобильной, или других "традиционных" отраслях промышленности является се́рвис-ориенти́рованная архитекту́ра (SOA, service-oriented architecture) — подход к разработке программного обеспечения, основанный на использовании сетевых сервисов (служб) со стандартизированными интерфейсами.
В самом общем виде SOA предполагает наличие трех основных участников:
-
поставщика сервиса
-
потребителя сервиса
-
реестра сервисов.
Взаимодействие участников выглядит достаточно просто: поставщик сервиса регистрирует свои сервисы в реестре, а потребитель обращается к реестру с запросом.
Для использования сервиса необходимо следовать соглашению об интерфейсе для обращения к сервису – интерфейс должен не зависеть от среды разработки сервиса. SOA предполагает возможность добавления сервисов, а также их модернизацию. Поставщик сервиса и его потребитель оказываются несвязанными – они общаются с помощью сообщений. Поскольку интерфейс должен не зависеть от платформы, то и технология, используемая для определения сообщений, также должна не зависеть от платформы.
Интерфейс компонентов SОА-программы инкапсулирует, скрывает детали реализации конкретного компонента от остальных компонентов. Таким образом, SОА предоставляет гибкий и элегантный способ комбинирования и многократного использования компонентов для построения сложных распределённых программных комплексов. Компоненты программы могут быть распределены по разным узлам сети, и предлагаются как независимые, слабо связанные, заменяемые сервисы-приложения. Программные комплексы, разработанные в соответствии с SОА, часто реализуются как набор веб-сервисов, интегрированных при помощи известных стандартных протоколов. Веб-сервис – набор логически связанных функций, которые могут быть программно вызваны удаленно через Интернет. Информация о том, какие функции предоставляет данный веб-сервис, содержится в документе WSDL, а для поиска существующих веб-сервисов предполагается использование специальных реестров, совместимых со спецификацией UDDI.
В условиях динамично изменяющегося окружения современное предприятие должно уметь быстро подстраивать свои производственные процессы и их информационную поддержку в соответствии с этими изменениями. Динамичность ИТ-среды современного предприятия, ее нацеленность на решение бизнес-задач, необходимость быстрых изменений в ответ на изменение этих задач – эти характеристики приобретают ключевое значение при проектировании или реформировании корпоративных ИТ-инфраструктур. В этих условиях отдельные, "точечные" решения по интеграции настолько усложняют и саму инфраструктуру, и процесс управления ею, что становятся абсолютно неприемлемыми. Представим себе, к примеру, что в компании существует несколько приложений, каждое из которых интегрировано со всеми остальными посредством соответствующих интерфейсов. Если таких приложений – n, то всего потребуется n(n-1) интерфейсов. С добавлением всего лишь одного нового приложения появится 2n новых интерфейсов, для которых потребуется соответствующее документирование, тестирование и поддержка. При этом придется вносить модификации в код каждого из существующих приложений для учета новых интерфейсов и проводить соответствующее тестирование. SOA позволяет избежать этого, максимально упростить процесс добавления новых приложений, и минимизирует число интерфейсов взаимодействия.
Другими словами, SOA обеспечивает предприятию высокую скорость адаптации к динамично изменяющимся условиям современного рынка. А, по мнению таких лидеров современного бизнеса как Уелч, Билл Гейтс, Чамберс, Элисон в современных условиях самое главное – именно то, насколько быстро компания может адаптировать свои цели и организацию к новым, динамично изменяющимся условиям.
Перспектива развития компьютера связана не развитием компьютера, как такового, а с развитием его сетевых возможностей. Это отражает и общую тенденцию в развитии человеческой цивилизации – интеграцию и глобализацию. Это порождает и новый тип экономики – Сетевую Экономику. Основные принципы этой экономики можно сформулировать так. Скорость развития столь велика, что сегодня речь идет не об оптимизации существующих структур, а об инновационном, прорывном создании новых. Только гибкость и разнообразие сетей способно поспевать за все ускоряющимися темпами появления нового. В этой экономике все меньше и меньше остается места привычному. Традиционной становится инновация. Поэтому надо вырабатывать вкус к переменам. Надо говорить о переменах постоянно.
Меняется понятие ценности. Аксиома прошлых лет: чем уникальнее предмет, тем он дороже, чем больше товара, тем он дешевле. В сети все не так, чем больше узлов в сети, тем ее ценность возрастает. Купив компьютер за несколько тысяч рублей, подключив его к Интернету, Вы получаете доступ к ресурсам, стоимость которых даже трудно подсчитать.
В этой экономике ценность вырастает из изобилия и возрастает от распространения, при этом резко возрастает роль стандартов.
9.Модели сетевого взаимодействия OSI ISO и TCP/IP
Эталонная модель OSI.
Модель OSI (рисунок 1-13) была разработана Международной организацией по стандартизации International Standards Organization (ISO) - для определения международных стандартов компьютерных сетей. Эта модель описывает, как должна быть организована система, открытая для взаимодействия с другими системами. Рисунок 1-13. Модель взаимодействия открытых систем (OSI) Модель МОС имеет семь уровней. Принципы выделения этих уровней таковы:
-
Каждый уровень имеет определенное предназначение.
-
Каждый уровень защищает нижележащий уровень от различий возможных реализаций.
-
Предназначение каждого уровня выбиралось прежде всего так, чтобы для него можно было определить международный стандарт.
-
Границы между уровнями выбирались с целью минимизировать поток информации через интерфейсы.
-
Число уровней выбиралось достаточно большим, чтобы не объединять разные функции на одном уровне, но и достаточно малым, чтобы архитектура не была громоздкой.
Это - модель, а не архитектура сети. Она не определяет протоколы и сервисы каждого уровня, а лишь говорит, какие функции должны быть реализованы на нем.
рис 1-13
1.7.1.1. Физический уровень
Физический уровень отвечает за передачу последовательности битов через канал связи. В основном решаются вопросы механики и электрики. Основная проблема, решаемая на этом уровне - как гарантировать, что если на одном конце отправили 1, то на другом получили 1, а не 0. На этом уровне также решаются такие вопросы:
-
каким напряжением нужно представлять 1, а каким - 0;
-
сколько микросекунд тратится на передачу одного бита;
-
следует ли поддерживать передачу данных в обоих направлениях одновременно;
-
как устанавливается начальное соединение и как оно разрывается;
-
каково количество контактов на физическом разъеме, для чего используется каждый контакт этого разъема.
1.7.1.2. Уровень канала данных
Основная задача уровня канала данных - превратить несовершенную физическую среду передачи в надежный канал, свободный от ошибок передачи. Эта задача решается разбиением данных отправителя на фреймы (обычно от нескольких сотен до нескольких тысяч байтов), последовательной передачей фреймов и обработкой фреймов уведомления, поступающих от получателя. Другие задачи:
-
Сохранение структуры передаваемых данных – определение границы фрейма. Эта задача решается введением специальной последовательности битов, добавляемой в начало и в конец фрейма и всегда интерпретируется как границы фрейма.
-
Повторная передача фрейма при разрушении фрейма из-за помех, при потере фрейма уведомления. Борьба с дубликатами одного и того же фрейма, потерями или искажениями фреймов.
-
Поддержка для сетевого уровня сервис разных классов, разного качества и стоимости.
-
Управление потоком передачи. Предотвращение «захлебывания» получателя, сообщение передающему размер буфера, необходимых для приема передаваемых данных, имеющийся у получателя.
-
Управления доступом к общему каналу в сетях с вещательным способом передачи. За это отвечает специальный подуровень канального уровня - подуровень доступа к среде (MAC - Media ACcess).
1.7.1.3. Сетевой уровень
Основная проблема, решаемая на сетевом уровне, - как маршрутизировать пакеты от отправителя к получателю. Маршруты могут быть определены заранее и прописаны в статической таблице, которая не изменяется. Они могут также определяться в момент установления соединения. Наконец, они могут строиться динамически по ходу передачи в зависимости от загрузки сети. Другие задачи:
-
Устранение заторов и перегрузок при циркуляции большого объема пакетов по одинаковым маршрутам
-
Функции учета: как много байт (или символов) послал или получил абонент сети. Если абоненты расположены в разных странах, где действуют разные тарифы, то надо должным образом скорректировать цену услуги.
-
Если пакет адресован в другую сеть, то надо предпринять надлежащие меры: в ней может быть другой формат пакетов, способ адресации, размер пакетов, другие протоколы и т.д. - все эти проблемы решаются на сетевом уровне.
-
В сетях с вещательной передачей проблемы маршрутизации просты, и этот уровень часто отсутствует.
1.7.1.4. Транспортный уровень
Основная функция транспортного уровня - принять данные с уровня сессии, разделить, если надо, на более мелкие единицы, передать на сетевой уровень и позаботиться, чтобы все они дошли в целостности до адресата. Все это должно быть сделано эффективно и так, чтобы вышележащий уровень не зависел от того, как именно это было сделано. В нормальных условиях транспортный уровень должен создавать специальное сетевое соединение для каждого транспортного соединения по запросу уровня сессии. Если транспортное соединение требует высокую пропускную способность, то транспортный уровень может потребовать у сетевого уровня создать несколько сетевых соединений, между которыми транспортный уровень буден распределять передаваемые данные. И наоборот, если требуется обеспечить недорогое транспортное соединение, то транспортный уровень может использовать одно и то же соединение на сетевом уровне для нескольких транспортных соединений. В любом случае такое мультиплексирование должно быть незаметным на уровне сессии. Сетевой уровень определяет, какой тип сервиса предоставить вышележащим уровням и пользователям сети. Наиболее часто используемым сервисом является канал «точка-точка» без ошибок, обеспечивающий доставку сообщений или байтов в той последовательности, в какой они были отправлены. Другой вид сервиса - доставка отдельных сообщений без гарантии сохранения их последовательности или, например, рассылка одного сообщения многим в режиме вещания. В каждом конкретном случае сервис определяют при установлении транспортного соединения. Транспортный уровень - это уровень, обеспечивающий соединение «точка-точка». Активности транспортного уровня на машине отправителя общаются с равнозначными активностями транспортного уровня на машине получателя. Этого нельзя сказать про активности на нижележащих уровнях. Они общаются с равнозначными активностями на соседних машинах. В этом одно из основных отличий уровней 1-3 от уровней 4-7. Последние уровни обеспечивают соединение «точка-точка». Это хорошо видно на рисунке 1-13. Многие хост-машины - мультипрограммные, поэтому транспортный уровень для одной такой машины должен поддерживать несколько транспортных соединений. Чтобы определить, к какому соединению относится тот или иной пакет, в его заголовке (H4 на рисунке 1-9) помещается необходимая информация. Транспортный уровень также отвечает за установление и разрыв транспортного соединения в сети. Это предполагает наличие механизма именования, что значит, что процесс на одной машине должен уметь указать, с кем в сети ему надо обменяться информацией. Транспортный уровень также должен предотвращать «захлебывание» получателя в случае «очень быстро говорящего» отправителя. Механизм для этого называется управление потоком. Он есть и на других уровнях. Однако, как мы увидим ниже, управление потоком между хостами отличен от управления потоком между маршрутизаторами.