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