springcloud筆記四hystrix
5843 ワード
一、サービスの格下げ(サービスプロバイダ)
1.pom.xml
3.サービスの劣化が必要な方法に@HystrixCommandを追加します.
1.pom.xml
4.サービスの劣化が必要な呼び出しインターフェースに@HystrixCommandを追加する.
三、グローバルサービスダウングレードDefault Properties
1.インターフェースクラスにコメントを追加する@Default Properties
四、通配サービスの格下げ
1.Feign Clientインターフェースを提供する実現類(サービス降級処理類)
1、circeuit Breaker.sleep Window InMilliseconds
hystrix dashboardプロジェクトモジュールの構築
pom.xml
@EnbaleHystrixDashboardコメントを追加します.
dashboardプロジェクトが起動したら、ブラウザで監視画面を開きます.
http://localhost:9001/hystrix
モニタ項目を追加
http://localhost:8008/hystrix.stream
注意
シリコンバレーの授業によると、スプリングクラウドのピットのため、監視対象項目の起動クラスには次のコードが必要です.
1.pom.xml
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
2.起動類追加@EnbleCircuitBreakerコメント3.サービスの劣化が必要な方法に@HystrixCommandを追加します.
@HystrixCommand(fallbackMethod = "paymentInfo_timeout_handler", commandProperties = {
@HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds", value = "2000")
})
4.トリガサービスの降格条件や異常が発生した場合の実行方法を提供します.public String paymentInfo_timeout_handler(Long id){
return " :" + Thread.currentThread().getName() + " ,id:" + id + ",hystrix ";
}
二、サービスの格下げ(消費者サービス)1.pom.xml
org.springframework.cloud
spring-cloud-starter-netflix-hystrix
2.yamlファイルfeign:
hystrix:
enabled: true
client:
config:
default:
ReadTimeout: 15000
ConnectTimeout: 15000 # ribbon
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 15000 # hystrix
3.スタートクラス追加@EnbleHystrixコメント4.サービスの劣化が必要な呼び出しインターフェースに@HystrixCommandを追加する.
@HystrixCommand(fallbackMethod = "paymentInfo_timeout_fallback", commandProperties = {
@HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds", value = "9000")
})
5.トリガサービスの降格条件を提供するか、または呼び出しに異常が発生した場合の実行方法public String paymentInfo_timeout_fallback(@PathVariable("id") Long id){
return " 80, " + id;
}
6.注意:hystrix.com mmand.default.execution.isolation.thread.timeout Inmillisecondsとribbonのタイムアウト時間はデフォルトでは1 sです.ネット上では1つだけ配置すると言われていますが、本人がテストしてみます.この二つの構成はどれも少なくて、呼び出し時間が1 sを超えたらサービスが劣化します.三、グローバルサービスダウングレードDefault Properties
1.インターフェースクラスにコメントを追加する@Default Properties
@DefaultProperties(defaultFallback = "global_fallback")
2.トリガサービスの降格時に実行する方法を提供します. public String global_fallback(){
return " ";
}
3.サービス劣化が必要なインターフェースに@HystrixCommandコメントを追加し、デフォルトトリガサービスが降格した場合、グローバルサービスの降格処理方法を実行します.四、通配サービスの格下げ
1.Feign Clientインターフェースを提供する実現類(サービス降級処理類)
@Component
public class OrderServiceImpl implements OrderService {
@Override
public String paymentInfo(Long id) {
return "paymentIfo fall back ";
}
@Override
public String paymentInfo_timeout(Long id) {
return "paymentIfo time out fall back ";
}
}
2.@Feign Clientのfallback属性を定義することは、サービス劣化処理類を指す.@FeignClient(value = "CLOUD-PROVIDER-HYSTRIX-PAYMENT", fallback = OrderServiceImpl.class)
五、サービスの溶断 : closed , , open , , MTTR( , 5s), half open
:
: , ,
アナログコードは以下の通りです.@HystrixCommand(fallbackMethod = "paymentCircutHandler", commandProperties = {
@HystrixProperty(name="circuitBreaker.enabled", value = "true"), //
@HystrixProperty(name="circuitBreaker.requestVolumeThreshold", value = "10"), //
@HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds", value = "10000"), //
@HystrixProperty(name="circuitBreaker.errorThresholdPercentage", value = "60"), //
})
@GetMapping("/payment/hystrix/circut/{id}")
public String paymentCircutBreaker(@PathVariable Long id){
if (id < 0){
throw new RuntimeException("id ");
}
String result = " :" + Thread.currentThread().getName() + " , :" + IdUtil.simpleUUID();
log.info("******result:{}", result);
return result;
}
public String paymentCircutHandler(Long id){
return "id , ";
}
Hystrix遮断器の三つの重要な指標パラメータ1、circeuit Breaker.sleep Window InMilliseconds
, 。 , 10 (10000)。
2、circeuit Breaker.request VolumeThreshed , 20。 , , 。 。
3、circurit Breaker.errorThresold Perentage , 50( 50% )。 , , 100 , 50 。 , 。 , 51 , fallback 。
六、Hystrixグラフィックスdashboardhystrix dashboardプロジェクトモジュールの構築
pom.xml
org.springframework.cloud
spring-cloud-starter-netflix-hystrix-dashboard
クラスを開始@EnbaleHystrixDashboardコメントを追加します.
dashboardプロジェクトが起動したら、ブラウザで監視画面を開きます.
http://localhost:9001/hystrix
モニタ項目を追加
http://localhost:8008/hystrix.stream
注意
シリコンバレーの授業によると、スプリングクラウドのピットのため、監視対象項目の起動クラスには次のコードが必要です.
@Bean
public ServletRegistrationBean getServlet(){
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/hystrix.stream");
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}