exam26 - stankin/inet-2022 GitHub Wiki

Билет 26

1. Понятие распределенных вычислений. Технологии организации распределенных вычислений. Особенности параллельных алгоритмов.

2. Использование встроенных средств отладка клиентской части веб-приложений в браузере.

◀️ Реферат к вопросам экзамена по дисциплине Интернет-технологии 1 курса магистратуры ▶️

Выполнили: Быков Егор ИДМ-22-01, Чурилова Диана ИДМ-22-03, Светличный Егор ИДМ-22-04

Понятие распределенных вычислений. Технологии организации распределенных вычислений. Особенности параллельных алгоритмов

Развитие технологий распределенных вычислений в конце 1990-х годов позволило объединить географически-распределенные по всему миру гетерогенные ресурсы. Появились технические возможности для решения масштабных задач в области науки, техники и коммерции на территориально-распределенных ресурсах, принадлежащих разным владельцам. Исследования данной тематики привело к возникновению концепции грид вычислений (grid computing), и затем — к новой концепции облачных вычислений (cloud computing). Для раскрытия всех потенциальных возможностей использования распределенных вычислительных ресурсов принципиально важно наличие результативных и эффективных алгоритмов планирования, используемых менеджерами ресурсов.

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

Распределенные вычисления – это способ объединения нескольких компьютеров для решения общей проблемы. Он превращает компьютерную сеть в мощный единый компьютер, который предоставляет широкомасштабные ресурсы для решения сложных задач.

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

Технологии организации распределенных вычислений

Грид-вычисления

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

На рис. 1 представлена модель системы планирования в распределенных вычислительных средах, в которой функциональные компоненты связывают два типа потоков данных: прерывистая линия определяет поток ресурсов/поток информации о приложении, прямая линия — поток заданий/поток команд планирования заданий.

image

Рис. 1. Логическая архитектура системы планирования в грид

Платформа UNICORE

Проект UNICORE (Uniform Interface to Computing Resources — единый интерфейс к вычислительным ресурсам) появился в 1997 году, и к настоящему моменту представляет собой комплексное решение, ориентированное на обеспечение прозрачного безопасного доступа к ресурсам распределенной вычислительной среды. Архитектура UNICORE 6 формируется из пользовательского, сервисного и системного слоев (рис. 3).

image

Рис. 3. Архитектура UNICORE 6

На пользовательском уровне доступ организуется с использованием графического интерфейса и интерфейса командой строки. Задания могут быть запущены на любой из платформ UNICORE в распределенной вычислительной среде. Пользователь может осуществлять мониторинг и управление запущенными заданиями, используя часть интерфейса, называемую монитором заданий.

Средний слой или слой сервисов включает все сервисы и компоненты сервис-ориентированной архитектуры UNICORE, основанные на WS-RF 1.2 и SOAP, а также на стандартах WS-I.

В основании архитектуры платформы UNICORE находится системный слой. Компонент Target System Interface (TSI) обеспечивает взаимодействие между UNICORE и отдельным ресурсом распределенной вычислительной сети. TSI обеспечивает трансляцию команд, поступающих из распределенной вычислительной среды, в команды для локальной системы.

Особенности параллельных алгоритмов

Параллелизм – это процесс обработки нескольких наборов инструкций одновременно. Это уменьшает общее время вычислений. Параллелизм может быть реализован с помощью параллельных компьютеров, то есть компьютеров со многими процессорами. Параллельные компьютеры требуют параллельного алгоритма, языков программирования, компиляторов и операционной системы, поддерживающей многозадачность. Параллельный алгоритм Задача делится на подзадачи и выполняется параллельно для получения отдельных выходных данных. Позже, эти отдельные выходы объединяются, чтобы получить конечный желаемый результат. Алгоритмы значительно различаются по степени их распараллеливаемости: от легко распараллеливаемых до полностью непараллеливаемых. Кроме того, данная задача может включать в себя различные алгоритмы, которые могут быть более или менее распараллеливаемыми.Некоторые задачи нельзя разделить на параллельные части, поскольку для эффективного выполнения следующего шага требуются результаты предыдущего шага – они называются по своей сути последовательные задачи. Примеры включают итеративные численные методы такие как метод Ньютона, итерационные решения задачи трех тел и большинство доступных алгоритмов для вычисления числа π. Некоторые последовательные алгоритмы могут быть преобразованы в параллельные алгоритмы с использованием автоматического распараллеливания.

2. Использование встроенных средств отладка клиентской части веб-приложений в браузере.

Общие практики

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

Статическая отладка приложений

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

Динамическая отладка приложений

Runtime-логирование Чтобы получить общую картину значений и состояний, которые принимает код в определённые моменты времени, в него добавляют вызов console.log с нужными аргументами на всех интересующих участках. Разумеется, console.log — самый популярный вариант, но далеко не единственный. В отладке помогут и такие методы, как console.trace, console.assert, console.count, console.time. Интерактивные средства отладки Способ предполагает работу в отладчике (дебаггере). Современные браузеры и IDE уже содержат в себе отладчики, так называемые средства разработчика. Локализация проблемы («разделяй и властвуй») Способ заключается в последовательном комментировании или удалении участков кода, пока проблема или ошибка не перестанут воспроизводиться. Популярной имплементацией является бинарный поиск: удалить половину кода и посмотреть, осталась ли ошибка, если да, то удалить половину оставшейся половины и так далее. git bisect использует бинарный поиск по истории коммитов, чтобы помочь разработчику найти коммит, в котором была добавлена ошибка.

DevTools и как ими пользоваться

Клиентский 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 Интерфейс состоит из трёх зон:

  1. В зоне File Navigator показаны файлы HTML, JavaScript, CSS, включая изображения, используемые на странице. Здесь также могут быть файлы различных расширений Chrome.
  2. Зона Code Editor (редактор кода) показывает исходный код.
  3. Зона JavaScript Debugging (панель отладки JavaScript) отведена для отладки. Вкладка Sources (Debugger) Вкладка Sources обычно используется при отладке больших, сложных проектов. С её помощью можно изучить те ресурсы (скрипты, изображения, стилевые файлы), к которым у страницы есть доступ. Как правило, этот доступ можно получить в результате загрузки ресурса по сети, однако некоторые инструменты, например Webpack, инжектят свои собственные ресурсы. Вкладка Network Основная часть вкладки Network — это таблица, в которую динамически подгружается информация о совершённых запросах. Одна строка таблицы соответствует одному запросу. Над таблицей расположены дополнительные инструменты для управления записью и отображением сетевых запросов. Как видно из скриншота, столбцы таблицы обеспечивают разработчика информацией по каждому зарегистрированному запросу: например, можно посмотреть, с каким HTTP-кодом завершился запрос, узнать MIME-тип запрошенного ресурса и сколько времени потребовалось на выполнение запроса.

Варианты отладки

Точки останова (breakpoints) Точка останова – это участок кода, где отладчик автоматически приостановит исполнение JavaScript. Пока исполнение поставлено «на паузу», мы можем просмотреть текущие значения переменных, выполнить команды в консоли, другими словами, выполнить отладку кода. Для начала необходимо выбрать файл, в котором будет выполнятся отладка JavaScript (для этого дважды щелкаем по файлу index.html) После этого устанавливаем точку останова, нажимая на номер строки в центральной панели, которая отображает код выбранного файла. Точка останова отображается синим прямоугольником. Далее мы сможем пошагово выполнять отладку приложения и отслеживать значения переменных в сценарии. С помощью горячей клавиши F10 можно пошагово выполнять приложение и отследить значения переменных. Логирование Чтобы вывести что-то на консоль из нашего кода, существует функция console.log. Обычный пользователь сайта не увидит такой вывод, так как он в консоли. Чтобы увидеть его, либо откройте консольную панель инструментов разработчика, либо нажмите Esc, находясь в другой панели: это откроет консоль внизу. Если правильно выстроить логирование в приложении, то можно и без отладчика разобраться, что происходит в коде. Команда debugger Выполнение кода можно также приостановить с помощью команды debugger прямо изнутри самого кода. Такая команда сработает только если открыты инструменты разработки, иначе браузер ее проигнорирует.

ИСТОЧНИКИ

  1. 📃 Что такое распределенные вычисления?
  2. 📃 Обзор технологий распределенных вычислений
  3. 📃 Как выполнить отладку javascript приложения
  4. 📃 Chrome DevTools
  5. 📃 Отладка в браузере
  6. 💬 Основы отладки клиентских JS-приложений