artamonova_tatyana_lab_7 is ready
This commit is contained in:
parent
131dc39f6c
commit
31381ab310
66
artamonova_tatyana_lab_7/README.md
Normal file
66
artamonova_tatyana_lab_7/README.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
## Лабораторная работа №7
|
||||||
|
|
||||||
|
### Эссе на тему "Балансировка нагрузки в распределённых системах при помощи открытых технологий на примерах"
|
||||||
|
|
||||||
|
При масштабировании приложения появляется необходимость в
|
||||||
|
добавлении новых серверов. В таком случае нужно пользоваться
|
||||||
|
балансировщиком нагрузок для распределения запросов.
|
||||||
|
|
||||||
|
А что делать, если серверов больше сотни или тысячи?
|
||||||
|
|
||||||
|
Балансировка нагрузки позволяет обеспечить равномерное распределение
|
||||||
|
нагрузки между несколькими серверами. Без неё один сервер может
|
||||||
|
перегрузиться, а другой простаивать. Это приводит к неэффективной
|
||||||
|
работе системы.
|
||||||
|
|
||||||
|
Для решения этой проблемы используют различные алгоритмы.
|
||||||
|
|
||||||
|
1. **"Round-robin"** - балансировка нагрузок циклическим перебором.
|
||||||
|
Алгоритм можно описать так: балансировщик нагрузок отправляет
|
||||||
|
запрос каждому серверу по очереди. Это решает проблему "отбрасывания"
|
||||||
|
входящих запросов, когда предыдущий запрос еще не был обработан.
|
||||||
|
Такой алгоритм подойдет для серверов с одинаковой мощностью и
|
||||||
|
одинаково затратных запросов.
|
||||||
|
|
||||||
|
2. **Очереди запросов** - балансировка нагрузок с помощью создания очередей
|
||||||
|
запросов.
|
||||||
|
Редко встречаются ситуации, когда все запросы одинаково обрабатываются.
|
||||||
|
Очереди запросов позволяют справиться с этой проблемой, но со своими
|
||||||
|
недостатками.
|
||||||
|
"Отбрасываться" будет меньше запросов, но некоторые из них будут иметь
|
||||||
|
задержку при обработке (так как будут ожидать в очереди)
|
||||||
|
|
||||||
|
3. **"Weighted round-robin"** - взвешенный цикличный перебор.
|
||||||
|
Алгоритм заключается в назначении веса каждому серверу. Вес определяет,
|
||||||
|
сколько запросов сможет обработать сервер. Это нужно, для подстраивания
|
||||||
|
к мощности каждого сервера.
|
||||||
|
|
||||||
|
В качестве открытых технологий для балансировки нагрузки используются **HAProxy** и **Nginx**.
|
||||||
|
Они выступают в роли обратного прокси-сервера: принимают запросы от клиентов
|
||||||
|
и перенаправляют их на один из доступных серверов. Они предлагают
|
||||||
|
гибкую настройку алгоритмов балансировки и отслеживания состояния серверов.
|
||||||
|
Кроме того, существуют решения на основе Kubernetes или других
|
||||||
|
оркестраторов контейнеров, которые управляют распределением нагрузки
|
||||||
|
по микросервисам.
|
||||||
|
|
||||||
|
Балансировка нагрузки на базах данных — специфическая задача, решаемая
|
||||||
|
с помощью механизмов репликации и кластеризации.
|
||||||
|
|
||||||
|
**Репликация** создает копии данных на нескольких серверах. Это обеспечивает
|
||||||
|
отказоустойчивость и повышение производительности за счет распределения
|
||||||
|
нагрузки чтения.
|
||||||
|
|
||||||
|
**Кластеризация** объединяет несколько баз данных в единую систему. Это позволяет
|
||||||
|
распределять нагрузку записи и чтения между несколькими базами.
|
||||||
|
Выбор оптимального подхода зависит от специфики приложения
|
||||||
|
и требований к доступности и производительности.
|
||||||
|
|
||||||
|
**Реверс-прокси** играет ключевую роль в балансировке нагрузки.
|
||||||
|
Он принимает все входящие запросы, контролирует доступность серверов
|
||||||
|
на бэке и перенаправляет запросы на доступные и наименее загруженные сервера.
|
||||||
|
Кроме распределения нагрузки, реверс-прокси выполняет другие важные функции:
|
||||||
|
кэширование, SSL-терминирование и защита от атак. Благодаря своей гибкости
|
||||||
|
и функциональности, реверс-прокси является важным компонентом
|
||||||
|
высокопроизводительных и отказоустойчивых распределенных систем.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user