From a3c467e8673a093745ca8d125acc34536ac80e12 Mon Sep 17 00:00:00 2001 From: BlasphemyGod Date: Tue, 3 Dec 2024 04:36:38 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B5=D0=B4=D1=8C=D0=BC=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- polevoy_sergey_lab_7/README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 polevoy_sergey_lab_7/README.md diff --git a/polevoy_sergey_lab_7/README.md b/polevoy_sergey_lab_7/README.md new file mode 100644 index 0000000..add2d6e --- /dev/null +++ b/polevoy_sergey_lab_7/README.md @@ -0,0 +1,19 @@ +### Лабораторная работа № 7. Балансировка нагрузки в распределённых системах при помощи открытых технологий на примерах + +В распределённых системах может использоваться как вертикальное, так и горизонтальное масштабирование. Горизонтальное масштабирование предполагает создание большего количества экземляров одного компонента системы. И для того, чтобы определять, какому *работающему* экземпляру передать запрос/задачу(при этом не допустив ситуации, когда один экземпляр постоянно работает, а остальные простаивают), применяется балансировщик нагрузки. + +Существует несколько алгоритмов реализации балансировки нагрузки: +- Циклический перебор (Round Robin): запросы распределяются между серверами по очереди. +- Взвешенный циклический перебор (Weighted Round Robin): каждый сервер имеет вес в зависимости от производительности, более мощные серверы берут на себя больше запросов. +- Наименьшее количество подключений (Least Connections): запросы направляются на сервер с наименьшим количеством активных соединений. + +Имеются и открытые технологии для балансировки нагрузки, например: +- Nginx: Известный балансировщик на уровне http/tcp +- Apache: В каком-то смысле похож на nginx, но применяет иные подходы к реализации +- Kubernetes Ingress: Управляет балансировкой в контейнерных средах. + +Применять балансировку нагрузки можно и для баз данных. Используются разные подходы, например: +- Репликация: Данные можно копировать по нескольким базам данных, возможно, размещённых в разных местах. Таким образом клиент может обращаться к ближайшей реплике или использовать другую в случае сбоя. +- Шардинг: При таком подходе создаётся некоторое количество шардов(осколков), каждый из которых хранит свои данные(что и отличает шардинг от репликаций баз данных). Простейший и наивный пример с двумя шардами - в первой инсталляции находятся сущности с нечётными идентификаторами, во второй - с чётными. + +Реверс-прокси - один из ключевых элементов балансировки нагрузки. В его задачи входит получение запроса, его перенаправление на нужный сервер и возврат ответа. Таким образом подобный сервер выступает в качестве посредника в цепочке запрос-ответ. \ No newline at end of file