SpringCloud Ribbonの例
6793 ワード
ターゲット
eurekaに基づいて、バックエンドサービスを作成し、異なるポートで3つのインスタンスを実行し、clientサービスを作成し、ribbonによってバックエンドサービスを呼び出し、負荷分散効果を検証します.
eureka serverの作成
artifactId:eureka-server,spring boot: 1.5.16、依存:
起動クラス注釈
起動、ページの表示http://localhost:8082、正常に表示されているかどうかを確認します.
バックエンドサービスの作成
artifactId:backend-service,依存:
起動クラス
テストインタフェース:
起動して、インタフェースにアクセスして、正常かどうかを確認します.
ribbon clientサービスの作成
artifactId:ribbon-client,依存:
プロファイル:
ribbon構成クラス:
起動クラス:
テストクラス:
テストの実行
eureka serverを起動し、3つのバックエンドサービスを起動します.
ribbon clientを起動し、テストインタフェースにアクセスします.
複数のリフレッシュを行うと、異なるポート番号が表示され、ロード・バランシングが有効になることを示します.
eurekaに基づいて、バックエンドサービスを作成し、異なるポートで3つのインスタンスを実行し、clientサービスを作成し、ribbonによってバックエンドサービスを呼び出し、負荷分散効果を検証します.
eureka serverの作成
artifactId:eureka-server,spring boot: 1.5.16、依存:
org.springframework.cloud
spring-cloud-starter-eureka-server
com.fasterxml.jackson.core
jackson-databind
2.9.6
com.fasterxml.jackson.core
jackson-core
2.9.6
com.fasterxml.jackson.core
jackson-annotations
2.9.6
起動クラス注釈
@EnableEurekaServer
、プロファイル:spring.application.name=eurekaserver
server.port=8082
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
起動、ページの表示http://localhost:8082、正常に表示されているかどうかを確認します.
バックエンドサービスの作成
artifactId:backend-service,依存:
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-eureka
com.fasterxml.jackson.core
jackson-databind
2.9.6
com.fasterxml.jackson.core
jackson-core
2.9.6
com.fasterxml.jackson.core
jackson-annotations
2.9.6
起動クラス
@EnableEurekaClient
、プロファイル:spring.application.name=server
server.port = 9090
eureka.client.serviceUrl.defaultZone= http://localhost:8082/eureka/
eureka.client.healthcheck.enabled= true
eureka.instance.leaseRenewalIntervalInSeconds= 1
eureka.instance.leaseExpirationDurationInSeconds= 2
テストインタフェース:
@RestController
public class MyRestController {
@Autowired
Environment environment;
@GetMapping("/")
public String health() {
return "I am Ok";
}
@GetMapping("/backend")
public String backend() {
System.out.println("Inside MyRestController::backend...");
String serverPort = environment.getProperty("local.server.port");
System.out.println("Port : " + serverPort);
return "Hello form Backend!!! " + " Host : localhost " + " :: Port : " + serverPort;
}
}
起動して、インタフェースにアクセスして、正常かどうかを確認します.
ribbon clientサービスの作成
artifactId:ribbon-client,依存:
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-starter-ribbon
com.fasterxml.jackson.core
jackson-databind
2.9.6
com.fasterxml.jackson.core
jackson-core
2.9.6
com.fasterxml.jackson.core
jackson-annotations
2.9.6
プロファイル:
spring.application.name=client
server.port=8888
eureka.client.serviceUrl.defaultZone= http://localhost:8082/eureka/
eureka.client.healthcheck.enabled= true
eureka.instance.leaseRenewalIntervalInSeconds= 1
eureka.instance.leaseExpirationDurationInSeconds= 2
server.ribbon.eureka.enabled=true
server.ribbon.ServerListRefreshInterval=1000
ribbon構成クラス:
public class RibbonConfiguration {
@Autowired
IClientConfig config;
@Bean
public IPing ribbonPing(IClientConfig config) {
return new PingUrl();
}
@Bean
public IRule ribbonRule(IClientConfig config) {
return new AvailabilityFilteringRule();
}
}
起動クラス:
@SpringBootApplication
@EnableDiscoveryClient
@RibbonClient(name = "server", configuration = RibbonConfiguration.class)
public class RibbonClientApplication {
@Bean
@LoadBalanced
public RestTemplate proviceRestTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(RibbonClientApplication.class, args);
}
}
テストクラス:
@RestController
public class HelloController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/hi")
public String hi() {
return restTemplate.getForObject("http://server/backend", String.class);
}
}
テストの実行
eureka serverを起動し、3つのバックエンドサービスを起動します.
java -jar -Dserver.port=9090 target/backend-service-0.0.1-SNAPSHOT.jar
java -jar -Dserver.port=9091 target/backend-service-0.0.1-SNAPSHOT.jar
java -jar -Dserver.port=9092 target/backend-service-0.0.1-SNAPSHOT.jar
ribbon clientを起動し、テストインタフェースにアクセスします.
http://localhost:8888/hi
複数のリフレッシュを行うと、異なるポート番号が表示され、ロード・バランシングが有効になることを示します.