1 Commits

Author SHA1 Message Date
0959bef234 commit 2024-01-09 18:21:35 +03:00
2 changed files with 31 additions and 24 deletions

View File

@@ -1,24 +0,0 @@
# Отчет по лабораторной работе №7
Выполнил студент гр. ИСЭбд-41 Насыбуллов А.И.
## Задачи
Написать небольшое эссе (буквально несколько абзацев) своими словами. А помогут Вам в этом вопросы из списка:
1. Какие алгоритмы и методы используются для балансировки нагрузки?
2. Какие открытые технологии существуют для балансировки нагрузки?
3. Как осуществляется балансировка нагрузки на базах данных?
4. Реверс-прокси как один из элементов балансировки нагрузки.
## Эссе
Балансировка нагрузки предназначена для равномерного распределения трафика и нагрузки между несколькими серверами или ресурсами. Она осуществляется с целью оптимизации производительности системы, улучшения доступности и минимизации риска перегрузки одного сервера. Классический пример - циклический перебор, когда балансировщик нагрузок отправляет по очереди запрос каждому серверу. Чем больше серверов тем меньше приходится нагрузки на каждого из них. Улучшенной версией является взвешенный циклический перебор, где каждому серверу назначаются веса мощности.
Среди открытых технологий для балансировки нагрузки можно выделить Nginx. Nginx очень популярен для распределения HTTP и HTTPS трафика с целью достижения равномерной загрузки между серверами. В качестве примеров еще можно выделить Apache HTTP Server и HAProxy.
В контексте баз данных можно выделить следующие подходы к реализации балансировки нагрузки:
1. Горизонтальное масштабирование шардирование, т.е. разбиение данные на несколько фрагментов, которые хранятся на отдельных серверах;
2. Вертикальное масштабирование на сервере увеличиваются производительность за счет добавления более мощного оборудования;
3. Репликация распределение нагрузок на чтение данных.
Обратный прокси это добавление прокси-сервера между клиентами и серверами базы данных. Прокси-сервер может распределить запросы от клиентов между несколькими серверами баз данных на основе различных алгоритмов балансировки нагрузки. Одним из таких алгоритмов является вышеупомянутая библиотека NGINX.

View File

@@ -0,0 +1,31 @@
# Отчет по лабораторной работе №8
Выполнил студент гр. ИСЭбд-41 Насыбуллов А.И.
## Задачи
Написать небольшое эссе (буквально несколько абзацев) своими словами. А помогут Вам в этом вопросы из списка:
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
## Эссе
Распределенный стиль разработки сложных систем позволяет обеспечить масштабируемость (добавление новых узлов), отказоустойчивость (продолжение работы, если некоторый узел вышел из строя), эффективное использование ресурсов (параллельное вычисление) и гибкость (параллельная разработка, тестирование), что делает его предпочтительным выбором для многих приложений.
Системы оркестрации приложений созданы для управления и координирования развертывания и выполнения распределенных приложений и сервисов.
Упрощения: автоматизация (автоматическое управление, развертывание, мониторинг), масштабируемость приложения, безопасность (изоляция и защита от отказоустойчивости), мониторинг;
Усложениня: необходимость обучить разработчиков работать с оркестрацией, сложность архитектуры, отладка (может быть сложной из-за взаимодействия нескольких компонентов).
Очереди обработки сообщений - это механизм, который позволяет эффективно управлять и обрабатывать сообщения, поступающие в систему. Сообщения могут представлять собой различные типы данных или события, которые передаются от одного компонента к другому для обработки. Это могут быть задачи, события, уведомления, запросы и ответы.
На мой взгляд, распределенные приложения имеют следующие преимущества и недостатки:
Преимущества: масштабируемость, надежность (отказоустойчивость), эффективность использования ресурсов;
Недостатки: сложность разработки и поддержки, проблемы с целостностью и согласованностью данных, зависимость от сети.
Внедрение параллельных вычислений в сложную распределенную систему может быть целесообразным при обработке больших объемов данных и необходимости распределения нагрузки.
Примеры.
Целесообразно: Система, которая обрабатывает и анализирует огромные объемы данных, параллельные вычисления могут разделить задачи на более мелкие части, что увеличит общую производительность системы.
Нецелесообразно: Если система имеет низкую нагрузку, то параллельные вычисления могут не принести улучшения производительности, или даже наоборот ухудшить ее. Также нецелесообразно использовать паралелльные вычисления в системах, где каждая задача зависит от результатов предыдущей задачи.