From c8b312407442fe0cedd09ecfe05bd586252d8f70 Mon Sep 17 00:00:00 2001 From: KuzarinM Date: Sat, 19 Oct 2024 18:34:37 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=8D=D1=81=D1=81=D0=B5=20=D0=B2=20=D0=B2=D0=B8?= =?UTF-8?q?=D0=B4=D0=B5=20MD=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kuzarin_maxim_lab_7/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 kuzarin_maxim_lab_7/README.md diff --git a/kuzarin_maxim_lab_7/README.md b/kuzarin_maxim_lab_7/README.md new file mode 100644 index 0000000..b1646a6 --- /dev/null +++ b/kuzarin_maxim_lab_7/README.md @@ -0,0 +1,12 @@ +# Балансировка нагрузки в распределённых системах +*Балансировка нагрузки в распределенных системах* – это метод распределения сетевого трафика по пулу ресурсов приложения. Для этого существует достаточно большое число инструментов. +## Алгоритмы балансировки +Всё множество алгоритмов для балансировки можно условно разделить на 2 большие группы: рассчитанные на сохранение состояния и не рассчитанные. +- Первые, по большому счёту, балансируют подключения пользователей. Но это никак не гарантирует равномерного распределения их запросов. +- Вторые – балансируют запросы между ресурсами. Это позволяет распределять нагрузку чуть более равномерно, но при этом необходимо задумываться о том, что бы система могла работать в режиме без сохранения состояния. +Сами же алгоритмы, по большому счёту, отличаются только механизмом выбора экземпляра ресурса, к которому перенаправляется запрос. Это может быть равномерное распределение (алгоритм **Round Robin**) или вариации взвешенного (алгоритм **Weighted Round Robin**). +На сегодняшний день существует множество открытых технологий балансировки нагрузки. Например, всем известный **Nginx** предоставляет инструменты для настройки подобной функции. Так же есть ряд проектов, полностью заточенных под балансировку нагрузки в Kubernetes (**OpenELB**, **MetalLB**). +## Балансировка нагрузки на БД +Балансировка нагрузки на БД – более сложный и комплексный вопрос. Он предполагает, что у СУБД должен быть механизм репликации данных, или шардинга. Например, такое умеет **PostgreSQL** и **MongoDB** +## Реверс-прокси +Реверс-прокси в данном случае напрямую не является инструментом балансировки нагрузки. Скорее это инструмент, эту балансировку и распределённость в целом, скрывающий за единым фасадом. Самым известным представителем этого семейства можно назвать уже упомянутый ранее **Nginx** \ No newline at end of file From ef603a80566c07e99e3e7eecc2228b4355aae21d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D1=83=D0=B7=D1=8F=D1=80=D0=B8=D0=BD=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BA=D1=81=D0=B8=D0=BC?= Date: Sat, 19 Oct 2024 19:36:31 +0400 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20kuzarin=5Fmaxim=5Flab=5F7/README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Небольшая проблема с двум \n --- kuzarin_maxim_lab_7/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/kuzarin_maxim_lab_7/README.md b/kuzarin_maxim_lab_7/README.md index b1646a6..1286984 100644 --- a/kuzarin_maxim_lab_7/README.md +++ b/kuzarin_maxim_lab_7/README.md @@ -4,6 +4,7 @@ Всё множество алгоритмов для балансировки можно условно разделить на 2 большие группы: рассчитанные на сохранение состояния и не рассчитанные. - Первые, по большому счёту, балансируют подключения пользователей. Но это никак не гарантирует равномерного распределения их запросов. - Вторые – балансируют запросы между ресурсами. Это позволяет распределять нагрузку чуть более равномерно, но при этом необходимо задумываться о том, что бы система могла работать в режиме без сохранения состояния. + Сами же алгоритмы, по большому счёту, отличаются только механизмом выбора экземпляра ресурса, к которому перенаправляется запрос. Это может быть равномерное распределение (алгоритм **Round Robin**) или вариации взвешенного (алгоритм **Weighted Round Robin**). На сегодняшний день существует множество открытых технологий балансировки нагрузки. Например, всем известный **Nginx** предоставляет инструменты для настройки подобной функции. Так же есть ряд проектов, полностью заточенных под балансировку нагрузки в Kubernetes (**OpenELB**, **MetalLB**). ## Балансировка нагрузки на БД