SpringCloud 의 차단기(Hystrix)와 차단기 모니터링(Dashboard)
10492 단어 springcloud차단기hystrixdashboard
스프링 클 라 우 드 의 차단기(Hystrix)와 차단기 지표 간판(Dashboard)에 관 한 사용 지식 을 소개 한다.
SpringCloud Hystrix
Hystrix 소개
넷 플 릭 스 는 차단기 모드 를 구현 하 는 Hystrix 라 는 라 이브 러 리 를 만 들 었 다.주요 목적 은 서비스 눈사태 효 과 를 해결 하기 위 한 구성 요소 로 서비스 가 사용 가능 한 마지막 방어선 을 보호 하 는 것 이다.
개발 준비
개발 환경
•JDK:1.8
•SpringBoot:2.1.1.RELEASE
•SpringCloud:Finchley
주:꼭 상술 한 버 전 을 사용 하지 않 아 도 상황 에 따라 상응하는 조정 을 할 수 있 습 니 다.주의해 야 할 것 은 SpringBoot2.x 이후 jdk 버 전 은 1.8 이상 이 어야 합 니 다!
개발 환경 을 확인 한 후에 우 리 는 관련 pom 의존 도 를 추가 합 니 다.
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
주:사실 여 기 는 Hystrix 의존 이 필요 없습니다.Fegin 은 Hystrix 의존 을 추 가 했 습 니 다.SpringCloud Hystrix 예시
Hystrix 메커니즘 은 마이크로 서비스 프로젝트 에서 진행 되 고 Fegin 에 이 메커니즘 이 포함 되 어 있 기 때문이다.그래서 여기 서 우 리 는 이전의 springcloud-feign 프로젝트 를 간단하게 개조 하면 된다.
서버
우선 서버 라 는 항목 을 구분 하기 위해 springcloud-hystrix-eureka 프로젝트 를 만 들 고 등록 센터 로 사용 합 니 다.코드 와 설정 은 이전의 기본 과 같다.
application.properties 설정 정보:
설정 정보:
spring.application.name=springcloud-hystrix-eureka-server
server.port=8002
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:8002/eureka/
설정 설명:•spring.application.name:지정 한 서비스 이름 입 니 다.
•server.port:서비스 가 지정 한 포트 입 니 다.
•eureka.client.register-with-eureka:자신 을 Eureka Server 에 등록 할 지 여 부 를 표시 합 니 다.기본 값 은 true 입 니 다.
•eureka.client.fetch-registry:Eureka Server 에서 등록 정 보 를 가 져 올 지 여 부 를 표시 합 니 다.기본 값 은 true 입 니 다.
•eureka.client.serviceUrl.defaultZone:이것 은 Eureka Server 와 상호작용 을 설정 하 는 주소 입 니 다.클 라 이언 트 의 조회 서비스 와 등록 서 비 스 는 모두 이 주소 에 의존 해 야 합 니 다.
서버 쪽 에 서 는 SpringBoot 시작 클래스 에@EnableEureka Server 주 해 를 추가 하면 됩 니 다.이 주 해 는 서비스 등록 센터 서비스 임 을 표시 합 니 다.
코드 예제:
@EnableEurekaServer
@SpringBootApplication
public class HystrixEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixEurekaApplication.class, args);
System.out.println("hystrix ...");
}
}
클 라 이언 트여기 서 우 리 는 이전의
springcloud-fegin-consumer
프로젝트 를 약간 개조 하여 프로젝트 이름 을 springcloud-hystrix-consumer 로 바 꾸 었 다.그리고 application.properties 설정 파일 에 다음 설정 을 추가 합 니 다.feign.hystrix.enabled 설정 은 퓨즈 를 사용 할 지 여 부 를 표시 합 니 다.feign.hystrix.enabled=true
설정 이 추 가 된 후에 저 희 는 이전 fegin 에서 퍼 가기 서 비 스 를 정의 하 는@FeignClient 주 해 를 리 셋 방법 fallback 을 추가 합 니 다.코드 개조 후의 실현 은 다음 과 같다.
@FeignClient(name= "springcloud-hystrix-consumer2",fallback = HelloRemoteHystrix.class)
public interface HelloRemote {
@RequestMapping(value = "/hello")
public String hello(@RequestParam(value = "name") String name);
}
마지막 으로 차단 상황 을 처리 하기 위해 리 셋 클래스 를 추가 합 니 다.여기 서 우 리 는 간단하게 처리 하고 잘못된 정 보 를 되 돌려 주면 됩 니 다!코드 예제:
@Component
public class HelloRemoteHystrix implements HelloRemote{
@Override
public String hello(@RequestParam(value = "name") String name) {
return name+", !";
}
}
나머지 코드 는 보 여주 지 않 습 니 다.이전 springcloud-fegin-consumer 프로젝트 와 일치 합 니 다.그리고 이전 springcloud-feign-consumer 2 를 간단하게 개조 한 다음 프로젝트 이름 을 springcloud-hystrix-consumer 2 로 바 꿉 니 다.그리고 설정 한 포트 를 변경 합 니 다.기능 테스트
위 와 같은 프로젝트 개발 을 마 친 후에 우 리 는 서버 와 클 라 이언 트 의 springcloud-hystrix-eureka,springcloud-hystrix-consumer 와 springcloud-hystrix-consumer 2 세 프로그램 을 차례대로 시작 한 다음 에 브 라 우 저 인터페이스 에 입력 합 니 다.http://localhost:8002/,등록 센터 의 정 보 를 볼 수 있 습 니 다.
우선 브 라 우 저 에 입력:
http://localhost:9004/hello/pancm
콘 솔 인쇄:
요청 인자 수락:pancm,다른 서비스 로 전송
브 라 우 저 반환:
pancm,Hello World
그리고 입력:http://localhost:9005/hello?name=pancm
브 라 우 저 반환:
pancm,Hello World
프로그램 이 정상적으로 작 동 하고 fegin 호출 도 ok 임 을 설명 합 니 다.이때 우 리 는 차단 테스트 를 하고 있다.
이 서 비 스 를 중단 하고 브 라 우 저 에 입력 하 십시오.http://localhost:9004/hello/pancm 정 보 를 조회 하 다.
콘 솔 인쇄:
요청 인자 수락:pancm,다른 서비스 로 전송
브 라 우 저 반환:
pancm,다른 서 비 스 를 요청 하 는 데 실 패 했 습 니 다!
이상 의 결과 가 나 온 것 은 차단기 의 기능 이 이미 실현 되 었 다 는 것 을 설명 한다.
예제 그림:
springcloud-hystrix-consumer2
Hystrix-Dashboard 소개Hystrix-dashboard 는 Hystrix 를 대상 으로 실시 간 으로 모니터링 하 는 도구 로 Hystrix Dashboard 를 통 해 각 Hystrix Command 의 요청 응답 시간,요청 성 공률 등 데 이 터 를 직관 적 으로 볼 수 있 습 니 다.
개발 준비
개발 환경
•JDK:1.8
•SpringBoot:2.1.1.RELEASE
•SpringCloud:Finchley
주:꼭 상술 한 버 전 을 사용 하지 않 아 도 상황 에 따라 상응하는 조정 을 할 수 있 습 니 다.주의해 야 할 것 은 SpringBoot2.x 이후 jdk 버 전 은 1.8 이상 이 어야 합 니 다!
개발 환경 을 확인 한 후에 우 리 는 관련 pom 의존 도 를 추가 합 니 다.
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
주:spring-boot-starter-actuator 이 필요 합 니 다.이 jar 는 SpringBoot 프로젝트 의 다양한 정 보 를 얻 을 수 있 습 니 다.이 jar 가방 의 사용 에 대해 서 는 springboot-actuator 프로젝트 에서 볼 수 있 습 니 다.SpringCloud Hystrix-Dashboard 예시
여기 서 우 리 는 위의 springcloud-hystrix-consumer 프로젝트 를 개조 하여 프로젝트 이름 을 springcloud-hystrix-dashboard-consumer 로 바 꿉 니 다.그리고 시작 클래스 에 다음 설정 을 추가 합 니 다.
•EnableCurctionBreaker:Hstrix 기능 을 사용 하 는 것 을 표시 합 니 다.
•EnableHystrixDashboard:HystrixDashboard 차단기 간판 관련 설정 을 사용 합 니 다.
전체 시작 클래스 설정 은 다음 과 같 습 니 다.
@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrixDashboard
@EnableCircuitBreaker
@EnableFeignClients
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class, args);
System.out.println("hystrix dashboard ...");
}
}
그리고 application.properties 프로필 에 다음 설정 을 추가 합 니 다.SpringCloud Hystrix-Dashboard
이 설정 은 HstrixDashboard 의 접근 경 로 를 지정 하 는 것 입 니 다.SpringBoot 2.x 이상 이 지정 해 야 합 니 다.그렇지 않 으 면 접근 할 수 없습니다.접근 에 Unable to connect to Command Metric Stream 오류 가 발생 할 수 있 습 니 다.설정 을 사용 하지 않 으 려 면 코드 로 도 가능 합 니 다.
실 현 된 코드 는 다음 과 같다.
@Component
public class HystrixServlet extends Servlet{
@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;
}
}
기능 테스트위의 공사 개 조 를 완성 한 후에 우 리 는 이 절 차 를 시작 했다.
그리고 브 라 우 저 에 입력:
http://localhost:9010/hystrix
다음 화면 이 나타 납 니 다:
이 인터페이스 모니터링 을 통 해 Hstrix dashboard 프로젝트 를 사용 할 수 있 습 니 다.여기 서 우 리 는 힌트 에 따라 중간 입력 상자 에 다음 과 같은 주 소 를 입력 합 니 다.
http://localhost:9010/hystrix.stream
다음 화면 이 나타 납 니 다:
이 화면 은 바로 Hystrix Dashboard 가 감시 하 는 화면 입 니 다.이 화면 을 통 해 우 리 는 프로그램의 정 보 를 상세 하 게 볼 수 있 습 니 다.이 정보 들 에 대한 설명 은 인터넷 에서 찾 을 수 있 는 한 장 으로 설명 할 수 있다.
주:만약 인터페이스 가 loading 을 계속 알려 준다 면,접근 을 요청 하지 않 았 기 때문에,브 라 우 저 에 입력 하기 만 하면 됩 니 다:http://localhost:9010/hello/pancm,그리고 이 화면 을 새로 고치 면 볼 수 있 습 니 다.
항목 주소
SpringBoot2.x,SpringCloud 를 기반 으로 한 Finchley 버 전 개발 주소:https://github.com/xuwujing/springcloud-study
SpringBoot1.x,SpringCloud 를 기반 으로 한 Dalston 버 전 개발 주소:https://github.com/xuwujing/springcloud-study-old
총결산
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 SpringCloud 의 차단기(Hystrix)와 차단기 모니터링(Dashboard)입 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud에서 Feign에 대한 일반적인 질문 요약1. FeignClient 인터페이스, @GettingMapping 같은 조합 메모는 사용할 수 없음 코드 예: 이쪽 @RequestMapping(value = "/simple/{id}", method = Reque...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.