У меня вопрос по балансировке нагрузки в рамках Spring и Ribbon.
У меня архитектура микросервисов с несколькими службами. Скажем, службы: A, B, C и D. Все службы развернуты в облаке. Перед службами остается LB, который пересылает запросы соответствующей службе.
Все службы реализованы в Spring Boot. Для каждой службы создается Docker образов. Каждая служба контейнерна. В моей локальной настройке я могу запустить все свои службы в моем локальном кластере кубернетов. Например:
kubectl get deployment
приведет к:
NAME READY UP-TO-DATE AVAILABLE AGE
A 1/1 1 1 9h
B 2/2 2 2 59m
C 1/1 1 1 9h
....
Запуск в K8S служба B может получить доступ к службе A, C или любой другой службе в пространстве имен с помощью:
public String getResponseFromService() {
return this.restTemplate.getForObject("http://service-a:8080/deals", String.class);
}
Если у меня N экземпляров службы A, по умолчанию активируется правило циклического перебора, и каждый раз, когда узел B вызывает службу A, выбирается случайный сервер.
Вопрос. означают, что k8s сам действует как балансировщик нагрузки и перенаправляет запросы, поступающие от узла B, на службу A к одному из экземпляров?
Если вышесказанное верно, зачем мне вообще нужен ленточный клиент LB. Я знаю, что он использует клиент обнаружения для проверки с помощью k8s, которые являются зарегистрированными службами в реестре служб, но если меня не интересует реестр, нужна ли мне вообще лента?
Мне нужно несколько экземпляров для каждой службы и связь между службами через одну конечную точку (как в примере выше).
Извините за вопрос, но я новичок в Spring Cloud Kubernete. Я много читаю, но до сих пор не могу понять эту часть.
Заранее спасибо!