DAS_2024_1/turner_ilya_lab_7/README.md

35 lines
4.2 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 - Балансировка нагрузки в распределённых системах при помощи открытых технологий на примерах
## ПИбд-42 || Тюрнер Илья
### Задание:
Написать небольшое эссе (буквально несколько абзацев) своими словами.
1. Какие алгоритмы и методы используются для балансировки нагрузки?
2. Какие открытые технологии существуют для балансировки нагрузки?
3. Как осуществляется балансировка нагрузки на базах данных?
4. Реверс-прокси как один из элементов балансировки нагрузки.
### Эссе на тему: "Балансировка нагрузки в распределённых системах при помощи открытых технологий"
Балансировка нагрузки - это очень важная задача при проектировании распределенных систем. Ее цель - грамотное распределение
запросов/задач между серверами или узлами системы для того, чтобы минимизировать вероятность перегрузки одного из них.
Для выполнения этой задачи существуют различные алгоритмы и методы. Их применяют, опираясь на специфику системы и требования
к производительности.
Приведем примеры некоторых таких алогритмов. К одним из самых популярных относится "круговое распределение" (**Round Robin**) -
запросы равномерно направляются на доступные серверы. Также довольно известно "взвешенное распределение" (**Weighted Round Robin**).
Его отличие в том, что запросы отправляются на основе некоторых весов, обычно формируеммых из производительностей серверов.
Ну и третьим можно выделить **Least Connections**. В первую очередь запросы отправляются на сервера с меньшим числом активных
подключений.
Есть решения для балансировки нагрузки и среди открытых технологий. Яркие примеры: **Nginx**, **HAProxy** и **Kubernetes**.
**Nginx** и **HAProxy** поддерживают балансировку, применяя различные алгоритмы. **Kubernetes** - это платформа для управления
контейнерами со встроенными механизмами балансировки.
Есть иной подход к балансировке - на базах данных. Там применяют механизм **репликации**, т.е. запросы от пользователей
распределяются по резличным копиям БД. Это повышает производительность и отказоустойчивость.
**Реверс-прокси** - это некий посредник между клиентом и серверными ресурсами. Он может кэшировать информацию, сжимать
данные и фильтровать трафик. Примеры: **Nginx** и **Traefik**.
Можно сделать вывод, что балансировка нагрузки с помощью различных технологий и алгоритмов нужна для того, чтобы эффективно
распределять ресурсы, повышать отказоустойчивость и масштабируемость различных распределенных систем.