Балансировка нагрузки с помощью feign и kubernetes

#spring-boot #kubernetes #spring-cloud-feign #feign

#весенняя загрузка #kubernetes #весенняя загрузка в облаке-feign #feign

Вопрос:

Я использую feign, через spring feign, и балансировка нагрузки, похоже, отключена. У меня есть один экземпляр службы A и 2 экземпляра службы B. Служба A вызывает службу B через притворного клиента. Я отобразил входящие запросы в службе B, и все они, похоже, попадают на один и тот же узел, а через некоторое время переключаются на другой узел, и все они снова попадают на этот узел. Не совсем то, чего я хочу. Я использую kubernetes DNS для получения узла. Я упускаю какую-то часть головоломки? получает ли feign ip-адрес и использует ли его какое-то время?

Я использую последнюю версию spring cloud, но использую httpclient вместо стандартного клиента.

Моя весенняя симулированная аннотация выглядит следующим образом:

 @FeignClient(name = "serviceB", url="http://serviceb:8080")
  

где serviceb — это имя службы в kubernetes DNS.

Ответ №1:

Вы имеете в виду модуль по узлу?

Чтобы проверить свою теорию, вы можете постоянно вызывать serviceb и резко запускать один из модулей и смотреть, получает ли другой модуль запрос!

k8s, похоже, следует случайному алгоритму балансировки нагрузки — так что есть вероятность, что он может отправить запрос в тот же модуль, который я также видел, когда запросов недостаточно. Когда вы можете отправлять несколько одновременных запросов непрерывно в течение определенного времени, я видел, что запросы распределяются по всем модулям.