forked from Alexey/DAS_2024_1
37 lines
4.3 KiB
Markdown
37 lines
4.3 KiB
Markdown
|
# Отчет. Лабораторная работа 7
|
|||
|
|
|||
|
## Балансировка нагрузки в распределённых системах при помощи открытых технологий на примерах
|
|||
|
|
|||
|
### Какие алгоритмы и методы используются для балансировки нагрузки?
|
|||
|
В распределенных системах балансировка нагрузки может осуществляться на разных уровнях:
|
|||
|
- балансировка нагрузки на сетевом уровне
|
|||
|
- балансировка нагрузки на транспортном уровне
|
|||
|
- балансировка нагрузки на прикладном уровне
|
|||
|
|
|||
|
На сетевом уровне балансировка может реализовываться с помощью таких алгоритмов, как Round Robin, Weighted Round Robin или Least Connections.
|
|||
|
Алгоритм Round Robin основывается на принципе выделения одному доменному имени несколько IP, которые выбираются
|
|||
|
при поступлении запроса по очереди.
|
|||
|
|
|||
|
Weighted Round Robin - усовершенствованный алгоритм Round Robin, который подразумевает указание весов каждому серверу
|
|||
|
в зависимости от доступных мощностей.
|
|||
|
|
|||
|
Алгоритм Least Connections вносит в предыдущий алгоритм еще одно условие выбора сервера - количество активных подключений к нему,
|
|||
|
избегая перегруженности имеющихся узлов.
|
|||
|
|
|||
|
### Какие открытые технологии существуют для балансировки нагрузки?
|
|||
|
Среди самых популярных открытых технологий можно выделить Nginx и Kubernetes. Nginx позволяет управлять нагрузкой на
|
|||
|
компоненты системы с помощью различных алгоритмов и перенаправляет запросы от клиента к сервисам, выстпая в качестве реверс-прокси.
|
|||
|
Kubernetes представляет собой платформу для управления контейнерами, которая включает встроенные механизмы для балансировки
|
|||
|
нагрузки между подами.
|
|||
|
### Как осуществляется балансировка нагрузки на базах данных?
|
|||
|
|
|||
|
Можно уменьшить нагрузку на базу данных путем использования механизма кэширования на уровне приложения
|
|||
|
или с помощью нереляционных БД (Redis и др.). Или с помощью шардирования данных, размещенных в базе.
|
|||
|
|
|||
|
Для балансировки нагрузки на базах данных на прикладном уровне, например, существует утилита pgpool —
|
|||
|
прокси между клиентом и сервером СУБД PostgreSQL, с помощью которого задаются правила перенаправления
|
|||
|
запросов к БД в зависимости от их содержания (чтение/запись).
|
|||
|
### Реверс-прокси как один из элементов балансировки нагрузки.
|
|||
|
Реверс-прокси перенаправляет входящие запросы на соотвествующие сервисы, может выступать при этом и в качестве балансировщика нагрузки, реализуя один из ранее озвученных алгоритмов.
|
|||
|
Как уже было сказано, примером такого компонента РС может выступать Nginx, в котором с помощью настройки конфигурационного файла можно указать как настройки проксирования,
|
|||
|
так и добавить логику балансировки.
|