DAS_2024_1/polevoy_sergey_lab_7/README.md

19 lines
3.7 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. Балансировка нагрузки в распределённых системах при помощи открытых технологий на примерах
В распределённых системах может использоваться как вертикальное, так и горизонтальное масштабирование. Горизонтальное масштабирование предполагает создание большего количества экземляров одного компонента системы. И для того, чтобы определять, какому *работающему* экземпляру передать запрос/задачу(при этом не допустив ситуации, когда один экземпляр постоянно работает, а остальные простаивают), применяется балансировщик нагрузки.
Существует несколько алгоритмов реализации балансировки нагрузки:
- Циклический перебор (Round Robin): запросы распределяются между серверами по очереди.
- Взвешенный циклический перебор (Weighted Round Robin): каждый сервер имеет вес в зависимости от производительности, более мощные серверы берут на себя больше запросов.
- Наименьшее количество подключений (Least Connections): запросы направляются на сервер с наименьшим количеством активных соединений.
Имеются и открытые технологии для балансировки нагрузки, например:
- Nginx: Известный балансировщик на уровне http/tcp
- Apache: В каком-то смысле похож на nginx, но применяет иные подходы к реализации
- Kubernetes Ingress: Управляет балансировкой в контейнерных средах.
Применять балансировку нагрузки можно и для баз данных. Используются разные подходы, например:
- Репликация: Данные можно копировать по нескольким базам данных, возможно, размещённых в разных местах. Таким образом клиент может обращаться к ближайшей реплике или использовать другую в случае сбоя.
- Шардинг: При таком подходе создаётся некоторое количество шардов(осколков), каждый из которых хранит свои данные(что и отличает шардинг от репликаций баз данных). Простейший и наивный пример с двумя шардами - в первой инсталляции находятся сущности с нечётными идентификаторами, во второй - с чётными.
Реверс-прокси - один из ключевых элементов балансировки нагрузки. В его задачи входит получение запроса, его перенаправление на нужный сервер и возврат ответа. Таким образом подобный сервер выступает в качестве посредника в цепочке запрос-ответ.