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