SpringCloud-Hystrix 구성 요소 사용 방법
11820 단어 SpringCloudHystrix구성 요소
분포 식 환경 에서 많은 서비스 의존 항목 은 실패 할 수 밖 에 없다.Hystrix 는 지연 용인 과 잘못 사용 논 리 를 추가 하여 분포 식 서비스 간 의 상호작용 을 제어 하 는 데 도움 을 주 는 라 이브 러 리 입 니 다.Hystrix 는 격 리 서비스 간 의 방문 점,이들 간 의 직렬 고장 을 중단 하고 예비 옵션 을 제공 함으로써 이 를 실현 할 수 있다.이 모든 것 은 시스템 의 전체적인 탄력 을 향상 시 킬 수 있다.
통속 적 인 정의:Hystrix 는 분포 식 시스템 의 지연 과 용 오 를 처리 하 는 오픈 소스 라 이브 러 리 로 분포 식 시스템 에서 많은 의존 이 불가피 하 게 호출 실패,시간 초과,이상 등 을 할 수 있다.Hystrix 는 문제 에 의존 하 는 상황 에서 전체 서비스 실 패 를 초래 하지 않 고 직렬 고장(서비스 눈사태 현상)을 피하 고 분포 식 시스템 의 탄력 을 높 일 수 있다.
1.봉사 눈사태
1.서비스 눈사태 가 마이크로 서비스 간 에 서비스 호출 을 하 는 것 은 특정한 서비스 고장 으로 인해 직렬 서비스 고장 현상 을 눈사태 효과 라 고 한다.눈사태 효 과 는 제공 자가 사용 할 수 없 기 때문에 소비 자가 사용 할 수 없고 점차적으로 확대 할 수 없 는 과정 을 묘사 한 것 이다.
2.도해 눈사태 효 과 는 다음 과 같은 호출 링크 가 존재 한다.
이때 Service A 의 유량 변동 이 매우 커서 유량 이 갑자기 증가 합 니 다!그렇다면 이 경우 Service A 가 요청 을 견 딜 수 있다 고 해도 Service B 와 Service C 가 갑 작 스 러 운 요청 을 견 딜 수 있 는 것 은 아니다.이때 Service C 가 요청 을 견 디 지 못 해 사용 할 수 없 게 된다.그러면 Service B 의 요청 도 막 히 고 Service B 의 스 레 드 자원 을 천천히 소모 하면 Service B 는 사용 할 수 없 게 됩 니 다.이어서 Service A 도 사용 할 수 없 을 것 이다.이 과정 은 다음 과 같다.
2.서비스 중단
1.서비스 가'퓨즈'자 체 를 녹 이 는 것 은 스위치 장치 이다.특정한 서비스 유닛 이 고장 이 난 후에 차단기 의 고장 감 측 을 통 해 특정한 이상 조건 이 촉발 되 고 전체 서 비 스 를 직접 녹 인 다.호출 방법 에 대해 기대 에 부합 되 고 처리 가능 한 예비 응답(FallBack)을 되 돌려 줍 니 다.장시간 기다 리 거나 호출 방법 으로 처리 할 수 없 는 이상 을 던 지면 서비스 호출 자의 스 레 드 가 장시간 점용 되 지 않 고 고장 이 분포 식 시스템 에서 만연 하거나 눈사태 가 발생 하지 않도록 보장 합 니 다.목표 서비스 상황 이 호전 되면 호출 을 재 개 합 니 다.서비스 융단 은 서비스 눈사태 를 해결 하 는 중요 한 수단 이다.
2.서비스 퓨즈 그림
3.서비스 강등
1.서비스 강등 설명
타 오 바 오 삭제 주소 확인 수령 삭제 주문서 취소 지불 절약 cpu 메모리
4.강등 과 융단 총화
1.공통점
5.서비스 융단 의 실현
서비스 융단 의 실현 방향
<!-- hystrix-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2.차단기 켜 기
@SpringBootApplication
@EnableCircuitBreaker //
public class Products9998Application {
public static void main(String[] args) {
SpringApplication.run(Products9998Application.class, args);
}
}
3.Hystrixcand 주 해 를 사용 하여 차단
//
@GetMapping("/product/break")
@HystrixCommand(fallbackMethod = "testBreakFall" )
public String testBreak(int id){
log.info(" id : "+ id);
if(id<=0){
throw new RuntimeException(" !!!");
}
return " id: "+id;
}
//
public String testBreakFall(int id){
return " : "+id;
}
4.방문 테스트
오류 매개 변 수 를 계속 사용 하면 정상 적 인 매개 변 수 를 사용 하여 접근 하 는 것 도 비합법적 입 니 다.차단기 가 작 동 되 었 으 나 시간 이 지나 면 자동 으로 닫 히 고 접근 도 합 법 적 입 니 다.
5.위 에서 보 여 주 는 과정 에서 일정한 조건 의 차단 기 를 터치 하면 자동 으로 열 리 고 시간 이 지나 면 다시 닫 힌 다 는 것 을 알 수 있 습 니 다.그러면 차단기 가 켜 지 는 조건 은 무엇 입 니까?
6.차단기 오픈 조건 홈 페이지:https://cloud.spring.io/spring-cloud-netflix/2.2.x/reference/html/
A service failure in the lower level of services can cause cascading failure all the way up to the user. When calls to a particular service exceed
circuitBreaker.requestVolumeThreshold
(default: 20 requests) and the failure percentage is greater than circuitBreaker.errorThresholdPercentage
(default: >50%) in a rolling window defined by metrics.rollingStats.timeInMilliseconds
(default: 10 seconds),회로 가 열 리 고 호출 이 이 루어 지지 않 습 니 다.오류 및 개방 회로 의 경우 개발 자가 폴 백 을 제공 할 수 있 습 니 다.원문 을 번역 한 후 닫 힌 조건 을 정리 합 니 다.
1 일정한 밸브 값 을 만족 시 킬 때(기본 10 초 간 20 개 요청 횟수 초과)
2,실패 율 일정 시(기본 10 초 간 50%초과 요청 실패)
3,이상 밸브 값 에 도달,차단기 가 열 립 니 다
4.열 렸 을 때 모든 요청 은 5,1 시간 후에(기본 값 은 5 초)퍼 가기 하지 않 습 니 다.이때 차단기 가 반 열 린 상태 이 고 그 중의 한 요청 을 퍼 가기 합 니 다.
성공 하면 차단기 가 꺼 지고 실패 하면 계속 켜 집 니 다.4 와 5 를 반복 하 다.
7.기본 적 인 서비스 FallBack 처리 방법 이 모든 서비스 방법 을 위해 강등 을 개발 하면 우리 에 게 대량의 코드 가 불필요 하고 유지 에 불리 할 수 있 습 니 다.이 럴 때 기본 서비스 강등 처리 방법 을 추가 해 야 합 니 다.
@GetMapping("/product/hystrix")
@HystrixCommand(defaultFallback = "testHystrixFallBack") // HystrixCommand
public String testHystrix(String name) {
log.info(" : " + name);
int n = 1/0;
return " [" + port + "] , :" + name;
}
//
public String testHystrixFallBack(String name) {
return port + " !!!, : "+name;
}
6.서비스 강등 의 실현
아니면 이전 프로젝트 의 기초 위 에서
1.클 라 이언 트 openfeign+hystrix 서비스 강등 실현
feign.hystrix.enabled=true # openfeign
3.openfeign 클 라 이언 트 에 Hystrix 를 추가 합 니 다.
// ProductClientFallBack , ,
// openfeign ,value
@FeignClient(value = "products",fallback = ProductClientFallBack.class)
public interface ProductClient {
@GetMapping("/product/findOne")
Map<String, Object> findOne(@RequestParam("productId") String productId);
}
4.fallback 처리 류 개발
package com.md.fallback;
@Component
public class ProductClientFallBack implements ProductClient {
@Override
public Map<String, Object> findOne(String productId) {
HashMap<String, Object> map = new HashMap<>();
map.put("status","false");
map.put("msg"," , ");
return map;
}
}
정상 방문그리고 제품 서 비 스 를 직접 닫 고 방문 합 니 다.
주의:서버 의 강등 과 클 라 이언 트 의 강등 이 동시에 열 리 면 서버 의 강등 방법 에 대한 반환 값 은 클 라 이언 트 방법 강등 의 반환 값 과 일치 해 야 합 니 다!!!
7.Hystrix Dashboard
0.Hystrix Dashboard 의 주요 장점 은 모든 Hystrix Command 에 대한 도량 을 수집 한 것 이다.Hystrix 계기판 은 모든 차단기 의 운행 상황 을 효율 적 인 방식 으로 표시 한다.
UI 페이지 가 있 는 구성 요소 일 뿐 새로운 프로젝트 를 만 들 거나 이전 springcloud 환경 에 따라 만 들 수 있 습 니 다.
1.프로젝트 에 의존 도입
<!-- hystrix dashboard -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
2.입구 클래스 에서 hystrix dashboard 열기
@SpringBootApplication
@EnableHystrixDashboard //
public class Hystrixdashboard9990Application {
public static void main(String[] args) {
SpringApplication.run(Hystrixdashboard9990Application.class, args);
}
}
설정 파일 에 포트 번호 9990 을 지정 합 니 다.3.Hstrix dashboard 응용 http://localhost:9990(dashboard 포트)/hystrix 시작
4.모니터링 프로젝트 의 입구 클래스 에 모니터링 경로 설정[새 버 전 구덩이]을 추가 하고 모니터링 프로젝트 를 시작 합 니 다.
@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;
}
5.모니터링 인터페이스 로 모니터링
뒤에 Hstrix.stream 은 고정 되 어 있 습 니 다.
6.모니터링 을 클릭 하여 일치 loading,콘 솔 을 열 면 오류 가 발생 합 니 다[특별 구덩이]
#
- springcloud jquery 3.4.1, monitor.ftlh ,js :
$(window).load(function()
- jquery 3.4.1
- monitor.ftlh :
$(window).on("load",function()
- jar , , 。
8.Hystrix 유지보수 중단
공식 주소:https://github.com/Netflix/Hystrix
스프링 클 라 우 드-하 이 스 트 릭 스 구성 요소 의 사용 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.스프링 클 라 우 드-하 이 스 트 릭 스 구성 요소 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Spring Cloud] LoadBancer-01discoveryservice-eureka 라는 프로젝트를 생성한다 3개 항목을 추가한다. 1. DiscoveryserviceEurekaApplication.java 생성된 -application에 @EnableEu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.