SprigCloud教程第9編:docker-hystrix-b 2 c小プログラム電子商取引を勉強します.
docker-hystrix-dashboard-turbine:
Hystrixの主要な利点の一つは、各HystrixCommandに関する指標を収集することである.
springcloudアーキテクチャを理解するには、各ブレーカーの運行状況を効果的に表示し、Hystrix Dashboardを通じて、各Hystrix Commandのブレーカーがオンされているかどうか、応答時間を要求し、失敗率を要求し、タイムアウトなどのデータを直感的に見ることができます.
しかし、Hystrix Dashboardだけを使うと、単一のアプリケーション内のサービス情報しか見られません.これは明らかに足りません.システム内の複数のサービスのデータをまとめて、Hystrix Dashboardに表示するツールが必要です.このツールはTurbineです.今回はどのようにturbine+hstrix-dashboardで消費者サービスをモニターするかを検討します.
一、モニターモジュールのmicroservice-consumer-movie-feign-with-hystrixブレーカーの運行状況
二、モニターモジュールのmicroservice-consumer-movie-ribron-with-hystrix 1遮断器の運行状況
2.1、モジュールmicroservice-consumer-movie-ribron-with-hystrix 1を作成する
プロジェクトの構造は以下の通りです.2.2、pom.xmlファイル
Hystrixの主要な利点の一つは、各HystrixCommandに関する指標を収集することである.
springcloudアーキテクチャを理解するには、各ブレーカーの運行状況を効果的に表示し、Hystrix Dashboardを通じて、各Hystrix Commandのブレーカーがオンされているかどうか、応答時間を要求し、失敗率を要求し、タイムアウトなどのデータを直感的に見ることができます.
しかし、Hystrix Dashboardだけを使うと、単一のアプリケーション内のサービス情報しか見られません.これは明らかに足りません.システム内の複数のサービスのデータをまとめて、Hystrix Dashboardに表示するツールが必要です.このツールはTurbineです.今回はどのようにturbine+hstrix-dashboardで消費者サービスをモニターするかを検討します.
一、モニターモジュールのmicroservice-consumer-movie-feign-with-hystrixブレーカーの運行状況
二、モニターモジュールのmicroservice-consumer-movie-ribron-with-hystrix 1遮断器の運行状況
2.1、モジュールmicroservice-consumer-movie-ribron-with-hystrix 1を作成する
プロジェクトの構造は以下の通りです.2.2、pom.xmlファイル
microservice-spring-cloud
com.jacky
1.0-SNAPSHOT
4.0.0
microservice-consumer-movie-ribbon-with-hystrix1
jar
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.boot
spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.cloud
spring-cloud-starter-zipkin
com.spotify
docker-maven-plugin
build-image
install
build
http://192.168.6.130:5678
true
${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version}
java:openjdk-8-jdk-alpine
["java", "-jar", "/${project.build.finalName}.jar"]
/
${project.build.directory}
${project.build.finalName}.jar
2.3、プロファイルappration.ymlspring:
application:
name: microservice-consumer-movie-ribbon-with-hystrix1
sleuth:
sampler:
percentage: 1.0
#zipkin:
#base-url: http://localhost:7788
server:
port: 8010
eureka:
client:
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://jacky:admin@peer1:8761/eureka/,http://jacky:admin@peer2:8762/eureka/,http://jacky:admin@peer3:8763/eureka/
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000
#security:
#oauth2:
# resource:
# id: microservice-consumer-movie-ribbon-with-hystrix1
# user-info-uri: http://localhost:9999/uaa/user
#prefer-token-info: false
2.4、実体類User.javapackage com.jacky.cloud.entity;
import java.math.BigDecimal;
public class User {
private Long id;
private String username;
private String name;
private Short age;
private BigDecimal balance;
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return this.age;
}
public void setAge(Short age) {
this.age = age;
}
public BigDecimal getBalance() {
return this.balance;
}
public void setBalance(BigDecimal balance) {
this.balance = balance;
}
}
2.5、制御層Movie Controller.javapackage com.jacky.cloud.controller;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.jacky.cloud.entity.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
@RestController
public class MovieController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/movie/{id}")
@HystrixCommand(groupKey="UserGroup1", commandKey = "findUserByIdCommand1",commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000"),
@HystrixProperty(name = "execution.timeout.enabled", value = "false")},fallbackMethod = "findByIdFallback")
public User findById(@PathVariable Long id) {
return this.restTemplate.getForObject("http://microservice-provider-user/simple/" + id, User.class);
}
/**
* fallback
* @param id
* @return
*/
public User findByIdFallback(Long id) {
User user = new User();
user.setId(5L);
return user;
}
}