1

Я настраиваю приложение на основе микросервиса, где уровень агрегирования/шлюз API выполняет вызовы на микросервисы. Eureka используется для обнаружения услуг и ленты для обеспечения балансировки нагрузки RestTemplate.Eureka Ribbon LoadBalancer Задержка обновления кэша

Postman calls Aggregation -> Агрегирование звонков Микросертификация с использованием Eureka/Ribbon/RestTemplate.

У меня есть 4 экземпляра одного типа микросервисов, работающих на моей машине, на 4 разных портах. Нажатие одной и той же конечной точки REST неоднократно. Почтальон заставляет запросы правильно распределять нагрузку в круговом режиме.

Когда я останавливаю один из экземпляров микросервиса, служба отменяется с регистрации из Eureka, но LoadBalancer по-прежнему отправляет запросы мертвой службе, а вызов завершается с ошибкой.

Ниже мой код:

Aggregation:

@Configuration 
    @ComponentScan(basePackages = {"com.mycompany.aggregator"}) 
    @EnableAutoConfiguration 
    @EnableEurekaClient 
    public class AggregatorApplication { 

     public static void main(String[] args) { 
      SpringApplication.run(AggregatorApplication.class, args); 
     } 
    } 

**Configuration:** 
@Configuration 
public class AggregatorConfig { 

    @Bean 
    @LoadBalanced 
    public RestTemplate restTemplate() { 
     return new RestTemplate(); 
    } 
} 

@Configuration 
@RibbonClient(name="microservice", configuration = FooConfig.class) 
public class TestConfig { 
} 

// FooConfig исключается из компонента сканирования

@Configuration 
public class FooConfig { 

    @Bean 
    public IPing ribbonPing(IClientConfig config) { 
     return new NIWSDiscoveryPing(); 
    } 

    @Bean 
    public IRule ribbonRule(IClientConfig config) { 
     return new AvailabilityFilteringRule(); 
    } 
} 

restTemplate вызов:

ResponseEntity<Object> responseEntity = restTemplate.getForEntity(myUrl, Object.class); 

Свойства:

spring.application.name=aggregator 
server.contextPath=/ott 
server.port = 8090 
my.url=http://microservice 
eureka.instance.leaseRenewalIntervalInSeconds=1 
eureka.instance.leaseExpirationDurationInSeconds=2 

MicroService Код:

@SpringBootApplication 
@EnableEurekaClient 
public class MicroServiceApplication 

Свойства:

spring.application.name=microservice 
server.contextPath=/ott 
server.port = 9000 
eureka.instance.leaseRenewalIntervalInSeconds=1 
eureka.instance.leaseExpirationDurationInSeconds=2 

Eureka Сервер:

@SpringBootApplication 
@EnableEurekaServer 
public class EurekaserverApplication { 

Свойства:

server.port=8761 

eureka.server.enableSelfPreservation=false 
eureka.client.registerWithEureka=false 
eureka.client.fetchRegistry=false 

logging.level.com.netflix.eureka=OFF 
logging.level.com.netflix.discovery=OFF 

ответ

0

от выпуска причиной этого является то, что Eureka IntelliSense дает экземпляру Shutdown больше времени, чтобы придумать. Intellisense работает таким образом для нескольких микросервисов с тем же именем, которые работают в одном и том же поле.

Когда службы развертываются в разных блоках, этот вопрос не возникает.

Смежные вопросы