Введение

Это термин, состоящий из двух слов «Нагрузка + балансировщики». Таким образом, устройство или подход, который может помочь нам разделить нагрузку, известен как балансировщик нагрузки.

В микросервисной архитектуре, чтобы сделать приложение более отказоустойчивым и надежным, мы должны использовать балансировщики нагрузки.

Если процесс потребляет больше ЦП, мы можем запускать экземпляры на разных узлах (серверах), иначе мы будем запускать приложение на разных портах одного и того же приложения.

Балансировка нагрузки — это процесс маршрутизации запроса на разные экземпляры или серверы. Мы можем использовать концепцию согласованного хеширования, чтобы сделать то же самое.

Подход

По каждому запросу мы получаем идентификатор запроса (r1), и к этому идентификатору мы применяем хеш-функцию, после чего она выдает число (m1), равное идентификатору машины, это подход хеширования,Но если когда-нибудь мы получим больше запросов и захотим добавить больше машин, в этом случае только хеширование не будет работать, потому что оно зависит от количества серверов, поэтому увеличение/уменьшение количества серверов будет дорогостоящей операцией, чтобы преодолеть Для решения этой проблемы мы будем использовать концепцию непротиворечивого хеширования.

Существует несколько способов маршрутизации запроса:

  1. Алгоритм циклического перебора: следование порядку выбора экземпляра
  2. Случайный выбор: случайный выбор экземпляра.
  3. Наименьшее количество подключений: выберите экземпляр с наименьшим количеством подключений.
  4. Хэш IP: используя хеш-функцию, получите конкретный идентификатор экземпляра.

Для реализации балансировки нагрузки мы можем использовать как программное, так и аппаратное обеспечение.

Если наше приложение развернуто, мы можем использовать другой сервер балансировки нагрузки перед нашими серверами или ту же задачу, которую мы можем выполнить с помощью некоторых библиотек.

Балансировщики нагрузки AWS https://aws.amazon.com/elasticloadbalancing/

В Spring Boot мы можем использовать зависимость Spring Cloud Load Balancer для создания приложения, которое будет работать как балансировщик нагрузки (клиент). И тогда другие приложения только с одной конечной точкой могут работать как сервер.

Таким образом, наше клиентское приложение, которое использует Spring Cloud Load Balancer для чередования запросов между разными экземплярами сервера, мы можем запускать сервер на разных портах, а затем клиентская библиотека будет использовать алгоритм для маршрутизации трафика к соответствующему экземпляру.

В большинстве приложений шлюз API работает как балансировщик нагрузки. У него есть собственные реализации базового алгоритма, и на их основе он направляет запрос экземпляру.

Вот так просто мы можем создать балансировщик нагрузки и добавить его в нашу микросервисную архитектуру.

Спасибо за прочтение!!