Merge pull request '[Л/Р 7] Островская Софья' (#97) from ostrovsofa/distributed-computing:ostrovskaya-sf-lab-7 into main
Reviewed-on: http://student.git.athene.tech/v.moiseev/distributed-computing/pulls/97
This commit is contained in:
commit
274f304374
58
tasks/ostrovskaya-sf/lab_7/README.md
Normal file
58
tasks/ostrovskaya-sf/lab_7/README.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# Отчет по лабораторной работе №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.
|
Loading…
Reference in New Issue
Block a user