DAS_2024_1/tsukanova_irina_lab_7/README.md
2024-11-08 16:19:50 +04:00

4.6 KiB
Raw Blame History

Цуканова Ирина ПИбд-42

Лабораторная работа №7 - Балансировка нагрузки в распределённых системах при помощи открытых технологий на примерах

Задание:

Написать небольшое эссе своими словами.

  1. Какие алгоритмы и методы используются для балансировки нагрузки?
  2. Какие открытые технологии существуют для балансировки нагрузки?
  3. Как осуществляется балансировка нагрузки на базах данных?
  4. Реверс-прокси как один из элементов балансировки нагрузки.

Эссе:

Балансировка нагрузки в распределённых системах это процесс равномерного распределения входящих запросов и вычислительных задач на ресурсы. Это производится для того, чтобы предотвратить перегрузку отдельных компонентов системы, а также улучшить ее общую производительность.

Для балансировки нагрузки существуют специальные алгоритмы и методы, наиболее популярными из них являются следующие:

  1. Круговой алгоритм (Round Robin) - направляет каждый новый запрос на следующий сервер по кругу.
  2. Взвешенный круговой алгоритм (Weighted Round Robin) - расширение для предыдущего, только серверам назначаются веса, в зависимости от этого веса сервера и получаются запросы.
  3. Хеширование клиента (Client Hashing) - запросы от одного клиента всегда направляются на один и тот же сервер.
  4. Least Connections - запрос направляется на сервер с наименьшим числом активных подключений.
  5. Least Response Time - выбирается сервер с наименьшим временем отклика.

Что качается существующих открытых технологий для балансировки нагрузки,

Конечно существуют и уже готовые открытые решения для балансировки нагрузки, позволяющие распределять трафик между серверами и управлять потоками данных. Наиболее популярен веб-сервер NGINX. Он поддерживает различные алгоритмы, такие как Round Robin и Least Connections, и может работать с большими объемами трафика. Также можно выделить HAProxy, который специализируется на обработке больших объемов HTTP и TCP-трафика, и оптимизированный для работы с контейнерами и микросервисами, такими как Docker и Kubernetes, Traefik.

Существует балансировка нагрузки и для баз данных. Это важно для обеспечения высокой производительности и отказоустойчивости. Методы балансировки нагрузки для баз данных включают:

  1. Разделение потоков на чтение и запись.
  2. Разбиение БД на сегменты, каждый из которых хранит определенную часть данных.
  3. Кеширование на уровне базы данных.

Одним из элементов балансировки нагрузки является реверс-прокси (reverse proxy). Его задача - принимать входящий трафик и направлять на внутренние серверы. Это позволяет скрывать внутреннюю архитектуру системы, улучшать безопасность, а также управлять распределением нагрузки.