# Отчет по лабораторной работе №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. Реверс-прокси – это сервер, который принимает запросы от клиентов и перенаправляет их на внутренние серверы. Он может использоваться для балансировки нагрузки, распределяя запросы между несколькими серверами в зависимости от состояния системы и доступности ресурсов. Подводя итог, балансировка нагрузки это необходимый элемент для построения надёжных и масштабируемых распределённых систем, а использование современных открытых технологий помогает эффективно распределять запросы между серверами, улучшая производительность систем.