1
我正在建立一個基於微服務的應用程序,其中聚合層/ API網關調用微服務。尤里卡用於服務發現和功能區提供負載均衡RestTemplate。Eureka Ribbon LoadBalancer緩存更新延遲
郵遞員調用匯總 - >彙總調用使用Eureka/Ribbon/RestTemplate的微服務。
我有4個不同的端口上運行我的機器上的一個微服務類型的實例。重複觸發相同的REST端點郵差導致請求以循環方式適當地獲得負載平衡。
當我停止其中一個微服務實例時,該服務從Eureka註銷,但LoadBalancer仍然向死服務發送請求並且呼叫失敗。
下面是我的代碼:
聚合:
@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
尤里卡服務器:
@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