-
Notifications
You must be signed in to change notification settings - Fork 2
exam26
1. Понятие распределенных вычислений. Технологии организации распределенных вычислений. Особенности параллельных алгоритмов.
2. Использование встроенных средств отладка клиентской части веб-приложений в браузере.
Выполнили: Быков Егор ИДМ-22-01, Чурилова Диана ИДМ-22-03, Светличный Егор ИДМ-22-04
Понятие распределенных вычислений. Технологии организации распределенных вычислений. Особенности параллельных алгоритмов
Развитие технологий распределенных вычислений в конце 1990-х годов позволило объединить географически-распределенные по всему миру гетерогенные ресурсы. Появились технические возможности для решения масштабных задач в области науки, техники и коммерции на территориально-распределенных ресурсах, принадлежащих разным владельцам. Исследования данной тематики привело к возникновению концепции грид вычислений (grid computing), и затем — к новой концепции облачных вычислений (cloud computing). Для раскрытия всех потенциальных возможностей использования распределенных вычислительных ресурсов принципиально важно наличие результативных и эффективных алгоритмов планирования, используемых менеджерами ресурсов.
Распределенные вычисления – это способ объединения нескольких компьютеров для решения общей проблемы. Он превращает компьютерную сеть в мощный единый компьютер, который предоставляет широкомасштабные ресурсы для решения сложных задач.
Например, распределенные вычисления могут шифровать большие объемы данных; решать физические или химические уравнения со многими переменными и выводить высококачественную трехмерную видеоанимацию. Распределенные системы, распределенное программирование и распределенные алгоритмы – это еще несколько терминов, относящихся к распределенным вычислениям.
Грид-вычисления
Вычислительный грид является программно-аппаратной инфраструктурой, которая обеспечивает надежный и прозрачный доступ к высокопроизводительным вычислительным ресурсам. Грид представляет общую среду для развертывания инфраструктуры, ориентированной на сервисы, поддерживающей создание и совместное использование ресурсов распределенных организаций. Под ресурсами понимаются аппаратное обеспечение, инструментарий, программное обеспечение и данные, а также сервисы, подключенные посредством промежуточного слоя программного обеспечения и обеспечивающие безопасность, мониторинг, управление ресурсами и др.
На рис. 1 представлена модель системы планирования в распределенных вычислительных средах, в которой функциональные компоненты связывают два типа потоков данных: прерывистая линия определяет поток ресурсов/поток информации о приложении, прямая линия — поток заданий/поток команд планирования заданий.
Рис. 1. Логическая архитектура системы планирования в грид
Платформа UNICORE
Проект UNICORE (Uniform Interface to Computing Resources — единый интерфейс к вычислительным ресурсам) появился в 1997 году, и к настоящему моменту представляет собой комплексное решение, ориентированное на обеспечение прозрачного безопасного доступа к ресурсам распределенной вычислительной среды. Архитектура UNICORE 6 формируется из пользовательского, сервисного и системного слоев (рис. 3).
Рис. 3. Архитектура UNICORE 6
На пользовательском уровне доступ организуется с использованием графического интерфейса и интерфейса командой строки. Задания могут быть запущены на любой из платформ UNICORE в распределенной вычислительной среде. Пользователь может осуществлять мониторинг и управление запущенными заданиями, используя часть интерфейса, называемую монитором заданий.
Средний слой или слой сервисов включает все сервисы и компоненты сервис-ориентированной архитектуры UNICORE, основанные на WS-RF 1.2 и SOAP, а также на стандартах WS-I.
В основании архитектуры платформы UNICORE находится системный слой. Компонент Target System Interface (TSI) обеспечивает взаимодействие между UNICORE и отдельным ресурсом распределенной вычислительной сети. TSI обеспечивает трансляцию команд, поступающих из распределенной вычислительной среды, в команды для локальной системы.
Параллелизм – это процесс обработки нескольких наборов инструкций одновременно. Это уменьшает общее время вычислений. Параллелизм может быть реализован с помощью параллельных компьютеров, то есть компьютеров со многими процессорами. Параллельные компьютеры требуют параллельного алгоритма, языков программирования, компиляторов и операционной системы, поддерживающей многозадачность.
Параллельный алгоритм Задача делится на подзадачи и выполняется параллельно для получения отдельных выходных данных. Позже, эти отдельные выходы объединяются, чтобы получить конечный желаемый результат.
Алгоритмы значительно различаются по степени их распараллеливаемости: от легко распараллеливаемых до полностью непараллеливаемых. Кроме того, данная задача может включать в себя различные алгоритмы, которые могут быть более или менее распараллеливаемыми.Некоторые задачи нельзя разделить на параллельные части, поскольку для эффективного выполнения следующего шага требуются результаты предыдущего шага – они называются по своей сути последовательные задачи. Примеры включают итеративные численные методы такие как метод Ньютона, итерационные решения задачи трех тел и большинство доступных алгоритмов для вычисления числа π. Некоторые последовательные алгоритмы могут быть преобразованы в параллельные алгоритмы с использованием автоматического распараллеливания.
Отладка – это процесс поиска и исправления ошибок в скрипте. Все современные браузеры и большинство других сред разработки поддерживают инструменты для отладки – специальный графический интерфейс, который сильно упрощает отладку. Он также позволяет по шагам отследить, что именно происходит в нашем коде. Глобально все методы отладки делят на статические и динамические в зависимости от того, исполняется ли программный код. При статической отладке само ПО фактически не задействовано. В процессе динамической отладки программа запущена и выполняется.
Протоколирование и анализ логов
Найти и устранить ошибки в программе помогает анализ файла или сервиса с информацией о событиях, произошедших в приложении во время работы. Протоколирование — это единственно возможный вариант отладки для приложения, которое запускается на компьютере конечного пользователя. В качестве примера сервиса для сбора и анализа логов можно привести Sentry.
Runtime-логирование
Чтобы получить общую картину значений и состояний, которые принимает код в определённые моменты времени, в него добавляют вызов console.log с нужными аргументами на всех интересующих участках. Разумеется, console.log — самый популярный вариант, но далеко не единственный. В отладке помогут и такие методы, как console.trace, console.assert, console.count, console.time.
Интерактивные средства отладки
Способ предполагает работу в отладчике (дебаггере). Современные браузеры и IDE уже содержат в себе отладчики, так называемые средства разработчика.
Локализация проблемы («разделяй и властвуй»)
Способ заключается в последовательном комментировании или удалении участков кода, пока проблема или ошибка не перестанут воспроизводиться. Популярной имплементацией является бинарный поиск: удалить половину кода и посмотреть, осталась ли ошибка, если да, то удалить половину оставшейся половины и так далее. git bisect использует бинарный поиск по истории коммитов, чтобы помочь разработчику найти коммит, в котором была добавлена ошибка.
Клиентский JS-код интерпретируется и выполняется в браузерах, поэтому в них встроены инструменты для разработчиков (DevTools). Они помогают отслеживать и изучать параметры, характеризующие состояние веб-страницы в текущий момент или ранее. Также есть возможность приостанавливать и продолжать выполнение кода, перемещаться по нему и многое другое. К счастью для веб-разработчиков, DevTools современных браузеров (Chrome, Firefox и Safari) имеют схожую структуру и открываются одинаково. Поэтому даже если вы всю жизнь пользовались Chrome, открыв инструменты разработчика в Safari, сможете достаточно быстро освоиться. Открыть инструменты для разработчиков можно из контекстного меню или сочетанием клавиш. Для перехода из контекстного меню кликните правой кнопкой мыши на странице и выберите пункт Inspect («Просмотреть код» в русской локализации).
Сочетания клавиш:
• Windows и Linux — Ctrl+Shift+I или F12.
• macOS — Cmd+Opt+I. Обратите внимание, что в Safari необходимо предварительно активировать инструменты разработчика.
Для отладки JavaScript-кода чаще всего будут полезны вкладки Console, Sources и Network. Обратите внимание, что средства разработчиков могут включать не только собственные инструменты браузера, но и дополнительные инструменты из расширений.
Вкладка Console
Интерфейс состоит из трёх зон:
- В зоне File Navigator показаны файлы HTML, JavaScript, CSS, включая изображения, используемые на странице. Здесь также могут быть файлы различных расширений Chrome.
- Зона Code Editor (редактор кода) показывает исходный код.
- Зона JavaScript Debugging (панель отладки JavaScript) отведена для отладки.
Вкладка Sources (Debugger)
Вкладка Sources обычно используется при отладке больших, сложных проектов. С её помощью можно изучить те ресурсы (скрипты, изображения, стилевые файлы), к которым у страницы есть доступ. Как правило, этот доступ можно получить в результате загрузки ресурса по сети, однако некоторые инструменты, например Webpack, инжектят свои собственные ресурсы.
Вкладка Network
Основная часть вкладки Network — это таблица, в которую динамически подгружается информация о совершённых запросах. Одна строка таблицы соответствует одному запросу. Над таблицей расположены дополнительные инструменты для управления записью и отображением сетевых запросов. Как видно из скриншота, столбцы таблицы обеспечивают разработчика информацией по каждому зарегистрированному запросу: например, можно посмотреть, с каким HTTP-кодом завершился запрос, узнать MIME-тип запрошенного ресурса и сколько времени потребовалось на выполнение запроса.
Точки останова (breakpoints)
Точка останова – это участок кода, где отладчик автоматически приостановит исполнение JavaScript.
Пока исполнение поставлено «на паузу», мы можем просмотреть текущие значения переменных, выполнить команды в консоли, другими словами, выполнить отладку кода.
Для начала необходимо выбрать файл, в котором будет выполнятся отладка JavaScript (для этого дважды щелкаем по файлу index.html)
После этого устанавливаем точку останова, нажимая на номер строки в центральной панели, которая отображает код выбранного файла. Точка останова отображается синим прямоугольником. Далее мы сможем пошагово выполнять отладку приложения и отслеживать значения переменных в сценарии. С помощью горячей клавиши F10 можно пошагово выполнять приложение и отследить значения переменных.
Логирование
Чтобы вывести что-то на консоль из нашего кода, существует функция console.log.
Обычный пользователь сайта не увидит такой вывод, так как он в консоли. Чтобы увидеть его, либо откройте консольную панель инструментов разработчика, либо нажмите Esc, находясь в другой панели: это откроет консоль внизу.
Если правильно выстроить логирование в приложении, то можно и без отладчика разобраться, что происходит в коде.
Команда debugger
Выполнение кода можно также приостановить с помощью команды debugger прямо изнутри самого кода. Такая команда сработает только если открыты инструменты разработки, иначе браузер ее проигнорирует.