Web-приложения и их особенности
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

Причины создания распределенных приложений

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

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

Принципы построения

1. Функциональное разделение. Узлы выполняют различные задачи (клиент / сервер, хост / терминал, сбор данных / обработка данных). Решение – создание разделяемых сервисов, которые управляют набором ресурсов и предоставляют услуги пользователям.

2. Естественное разделение. Разделение определяется задачей (система обслуживания сети супермаркетов, сеть для обеспечения коллективной работы). Функциональная нагрузка одинаковая у однотипных узлов.

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

Последствия распределенности

1. Параллельность. Параллельное выполнение (вопросы синхронизации, «гонки потоков»), совместное использование ресурсов (коллизии при доступе к данным, сервисам, устройствам), типичные проблемы (взаимные блокировки, ненадежные коммуникации).

2. Нет “глобального” времени(асинхронная передача сообщений, ограниченная точность синхронизации часов).

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

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

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

1. Открытость.

2. Безопасность.

3. Масштабируемость.

4. Механизмы обработки ошибок и восстановления после сбоев.

5. Методы решения проблем параллелизма.

6. Прозрачность.

7. Управляемость.

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

2. Безопасность. Физическая распределенность означает возможность доступа злоумышленников к компонентам. Необходимо обеспечить посылку важной информации по сети безопасно и эффективно. Это достигается, например, с помощью аутентификации (процедуры проверки подлинности данных) и авторизации (предоставление определённому лицу или группе лиц прав на выполнение определённых действий; а также процесс проверки данных прав при попытке выполнения этих действий), шифрования данных.

3. Масштабируемость. Распределенная система масштабируема, если она остается эффективной при увеличении числа обслуживаемых пользователей или ресурсов. Возникает проблема стоимости физических ресурсов (растет при увеличении числа пользователей) и потери производительности (увеличиваются с ростом размера данных и количества пользователей). Для «обхода узких мест» используется децентрализация алгоритмов (Пример – DomainNameService (DNS)), тиражирование и кэширование данных.

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

5. Прозрачность. Это сокрытие гетерогенной (разнородной) и распределенной структуры системы таким образом, чтобы пользователю система представлялась монолитной. Степень прозрачности взаимосвязана с производительностью. Различают:

n Прозрачность доступа.
Скрывается разница в представлении данных и доступе к ресурсам.

n Прозрачность расположения.
Скрывается местоположения ресурса.

n Прозрачность переноса.
Скрывается факт перемещения ресурса в другое место.

n Прозрачность смены местоположения.
Скрывается факт перемещения ресурса в другое место в процессе обработки.

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

n Прозрачность параллелизма.
Возможность нескольким процессам параллельно работать с ресурсами, не оказывая влияния друг на друга.

n Прозрачность обработки ошибок.
Защита программных компонентов от сбоев, произошедших в других программных компонентах; восстановление после сбоев.

Критически важными являются:

o Прозрачность доступа.

o Прозрачность расположения.

o Прозрачность паралеллизма.

6. Управляемость. Распределенные ресурсы не имеют центральной точки управления. Локальная оптимизация не всегда означает глобальную оптимизацию (нужно учитывать гетерогенность и другие особенности, нужен глобальный взгляд на проблему, он не всегда возможен (есть системы, никому конкретно не принадлежащие)).








Сложности при реализации

1. Выбор архитектуры. Важнейшие характеристики системы очень сильно зависят от выбранной архитектуры. Практически невозможно отказаться от принятых в начале проектирования неверных решений.
Решение: использование широко известных шаблонов (образцов) архитектур.

2. Гетерогенность среды (разнородность). Различаются:

o Сетевые инфраструктуры.

o Оборудование (например, Intel и Motorolla).

o Программное обеспечение (например, UNIX sockets и Winsock calls).

o Языки программирования.

o Представления данных.

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

Решения:

· Использование распространенных открытых стандартов и протоколов.

· Использование промежуточного программного обеспечения (middleware).

Middleware: промежуточный программный слой:

o Позволяет гетерогенным узлам взаимодействовать.

o Определяет однородную вычислительную модель.

o Поддерживает один или несколько языков программирования.

o Обеспечивает поддержку распределенных приложений (вызов удаленных объектов, удаленный вызов SQL, распределенную обработку транзакций).

Примеры: CORBA, JavaEE, Microsoft DCOM.


Сложность развертывания.

l Фрагментация (разделение приложения на модули развертывания).

l Конфигурация (связь модулей друг с другом (зависимости)).

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

4. Сложность отладки. Нет глобального состояния.Параллельность приводит к неповторяемости (невоспоизводимости) результатов выполнения. Компоненты распределены по разным узлам.

Дата: 2019-02-19, просмотров: 205.