distributed-computing/tasks/ostrovskaya-sf/lab_7/README.md
Софья Островская 7c9f835e1e laba done
2023-12-17 15:48:27 +04:00

58 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отчет по лабораторной работе №7
Выполнила студентка гр. ИСЭбд-41 Островская С. Ф.
## Какие алгоритмы и методы используются для балансировки нагрузки?
Балансировка нагрузки - это процесс распределения рабочей нагрузки между серверами или ресурсами с целью оптимизации производительности и обеспечения стабильной работы системы. Вот несколько алгоритмов и методов, которые используются для балансировки нагрузки.
1. Round-Robin DNS (Round Robin): DNS-серверы возвращают IP-адреса серверов в последовательности, обеспечивая равномерное распределение нагрузки.
2. Весовая балансировка (Weighted Round Robin): DNS возвращает IP-адреса в зависимости от их веса, который может быть связан с производительностью сервера.
3. Распределенная хэш-функция (Distributed Hash Tables, DHT): Каждый сервер отвечает за свою часть IP-пространства, что позволяет быстро и эффективно распределять нагрузку.
4. Балансировка на основе IP: Сервер балансировки использует IP-адрес клиента для определения, на какой сервер направить запрос.
5. Балансировка на основе порта: Сервер балансировки определяет, на какой порт отправить запрос, исходя из информации о портах, полученных от клиента.
6. Балансировка с использованием состояния (Stateful Load Balancing): Сервер балансировки учитывает состояние каждого сервера, чтобы определить, какой из них наиболее подходит для обработки запроса.
## Какие открытые технологии существуют для балансировки нагрузки?
Существуют различные открытые технологии для балансировки нагрузки:
1. NGINX: популярный веб-сервер и обратный прокси, который может выполнять функции балансировки нагрузки. Он поддерживает много различных алгоритмов балансировки нагрузки и имеет гибкую конфигурацию.
2. HAProxy: программа предоставляет возможность балансировки нагрузки между серверами приложений. Она обладает мощными возможностями, поддерживает много различных протоколов и содержит ряд алгоритмов балансировки нагрузки.
3. Apache HTTP Server: этот веб-сервер также может выполнять функции балансировки нагрузки. Он имеет модуль mod_proxy_balancer, который позволяет распределить трафик между несколькими серверами.
4. Varnish: высокопроизводительный обратный кэш и прокси-сервер, который также может выполнять балансировку нагрузки. Он особенно полезен для кэширования динамического контента и ускорения обработки запросов.
5. Traefik: современный HTTP-реверс-прокси и балансировщик нагрузки, разработанный специально для использования в контейнерных средах, таких как Docker и Kubernetes. Он обладает простым в использовании интерфейсом и автоматическим обнаружением новых сервисов.
6. Envoy: быстрый и гибкий прокси-сервер с открытым исходным кодом, разработанный для современных архитектур микросервисов. Он поддерживает различные алгоритмы балансировки и предоставляет расширенные возможности маршрутизации и управления трафиком.
## Как осуществляется балансировка нагрузки на базах данных?
Балансировка нагрузки на базах данных может быть сложной задачей, так как базы данных являются критическими компонентами веб-приложений. Однако, есть несколько подходов и методов, которые помогают решить эту задачу:
1. Репликация данных - процесс создания копий базы данных на нескольких серверах. Один сервер назначается сервером мастер, который принимает записи, а остальные серверы являются серверами слейвами, которые получают обновления из мастер-сервера. Запросы на чтение могут быть перенаправлены на любой из серверов слейвов, распределяя нагрузку между ними.
2. Шардинг - разделение данных на несколько независимых фрагментов, называемых шардами, и их распределение по разным серверам или узлам. Каждый шард содержит только часть данных, что позволяет распределить нагрузку между серверами. Шардинг может быть реализован на уровне приложения или в самой базе данных.
3. Кластеризация - объединение нескольких серверов баз данных в логическую группу, которая представляет собой единую базу данных для приложений. Запросы от клиентов распределяются между узлами кластера, обрабатывая нагрузку более равномерно и обеспечивая высокую доступность.
## Реверс-прокси как один из элементов балансировки нагрузки.
Реверс-прокси - технология, используемая для балансировки нагрузки и защиты веб-серверов. Он представляет собой промежуточный сервер, который принимает запросы от клиентов и перенаправляет их на один или несколько серверов приложений.
Реверс-прокси выполняет следующие функции:
1. Балансировка нагрузки;
2. Кеширование;
3. Шифрование и безопасность;
4. Обработка статических файлов;
5. Фильтрация запросов;
Использование реверс-прокси в архитектуре веб-приложения позволяет более эффективно распределить нагрузку, улучшить производительность и обеспечить безопасность. Популярными реверс-прокси-серверами являются Nginx и Apache HTTP Server.