DAS_2024_1/zhimolostnova_anna_lab_7/README.md
2024-10-22 20:19:09 +03:00

49 lines
5.5 KiB
Markdown
Raw Permalink 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
## Задание:
Написать небольшое эссе (буквально несколько абзацев) своими словами.
1. Какие алгоритмы и методы используются для балансировки нагрузки?
2. Какие открытые технологии существуют для балансировки нагрузки?
3. Как осуществляется балансировка нагрузки на базах данных?
4. Реверс-прокси как один из элементов балансировки нагрузки.
## Эссе на тему: "Балансировка нагрузки в распределённых системах при помощи открытых технологий"
Чтобы распределить входящие запросы между несколькими серверами для обеспечения равномерного
использования ресурсов и предотвращения перегрузок, существует множество алгоритмов, справляющихся
с балансировкой нагрузки, в зависимости от специфики системы и требований к производительности.
В данном случае будет рассмотрено 3 самых популярных алгоритма.
К примеру, Round Robin и Weighted Round Robin. Оба алгоритма являются циклическими и поочередно
распределяют запросы между серверами. Однако в отличие от обычного Round Robin, Weighted Round Robin
учитывает мощность серверов, поэтому серверы с большей производительностью получают большее
количество запросов.
С наименьшим количество отброшенных запросов работает алгоритм Least Connections, суть которого заключается
в том, что сначала отправляются запросы серверу с наименьшим количеством активных подключений. Это помогает
равномерно распределять нагрузку в реальном времени.
Чтобы реализовать балансировку нагрузки, можно обратиться к NGINX. Он широко известен как веб-сервер,
но также может быть использован для балансировки нагрузки на уровне приложений и HTTP-запросов. Остаётся
универсальным решением с хорошей производительностью и гибкостью, но его придётся настраивать вручную в
некоторых сценариях, где HAProxy и Traefik предоставляют автоматизированные и специализированные решения.
Для высокопроизводительных и масштабируемых систем, требующих тонкого управления на уровне TCP и HTTP лучше
выбрать HAProxy, а Traefik идеально подходит для современных облачных архитектур и микросервисов благодаря
автоматическому обнаружению и динамической конфигурации.
Что же касается баз данных, то балансировка нагрузки на них может осуществляться на нескольких уровнях:
уровне чтения, записи или репликации. Например, в системах с репликацией данных (как в MySQL) запросы на
чтение могут направляться на реплики, а на запись только на мастер-узел. Это позволяет снизить нагрузку
на основной сервер базы данных и увеличить производительность системы.
Упомянутые выше Traefik, HAProxy и NGINX являются также реверс-прокси, обеспечивая балансировку на
уровне HTTP или TCP. Реверс-прокси это сервер, который принимает запросы от клиентов и перенаправляет
их на внутренние серверы. Он может использоваться для балансировки нагрузки, распределяя запросы между
несколькими серверами в зависимости от состояния системы и доступности ресурсов.
Подводя итог, балансировка нагрузки это необходимый элемент для построения надёжных и
масштабируемых распределённых систем, а использование современных открытых технологий помогает эффективно
распределять запросы между серверами, улучшая производительность систем.