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