集計レイヤ/ APIゲートウェイがマイクロサービスを呼び出すマイクロサービスベースのアプリケーションを設定しています。 Eurekaはサービス発見に使用され、リボンはRestTemplateの負荷分散を提供します。ユーレカリボンLoadBalancerキャッシュ更新の遅延
アグリゲーション - >集約コールユーリカ/リボン/レストテンプレートを使用したマイクロサービス。
私は4つの異なるポート上で自分のマシン上で動作する1つのマイクロサービスタイプのインスタンスを4つ持っています。同じRESTエンドポイントを繰り返し押すと、リクエストはラウンドロビン方式で適切にロードバランスされます。
マイクロサービスインスタンスの1つを停止すると、サービスはユーレカから登録抹消されますが、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