SpringCloud Hystrix-Dashboard 계기판 의 실현

Hystrix Dashboard 는 주로 Hystrix 의 각종 지표 정 보 를 실시 간 으로 감시 하 는 데 사용 된다.Hystrix Dashboard 가 피드백 한 실시 간 정 보 를 통 해 시스템 에 존재 하 는 문제점 을 신속하게 발견 할 수 있 습 니 다.다음은 하나의 예 를 통 해 배운다.
하 이 스 트 릭 스-dashboard 라 는 스프링 클 라 우 드 프로젝트 를 새로 만 듭 니 다.
1.1 pom.xml 에 의존 도입

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1.2 spring boot 의 시작 클래스 에 주석@EnableHystrixDashboard 를 도입 하여 Hystrix Dashboard 기능 을 사용 합 니 다.

package org.hope.hystrix.dashboard;

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {
 public static void main(String[] args) {
  SpringApplication.run(HystrixDashboardApplication.class, args);
 }

}
1.3 프로필 수정 application.properties

spring.application.name=hystrix-dashboard
server.port=2001
1.4 응용 프로그램 을 시작 한 다음 에 브 라 우 저 에 입력http://localhost:2001/hystrix하면 다음 과 같은 화면 을 볼 수 있다.

Hystrix Dashboard 홈 페이지 의 문자 소 개 를 통 해 우 리 는 Hystrix Dashboard 가 모두 세 가지 서로 다른 모니터링 방식 을 지원 한 다 는 것 을 알 수 있다.
☞기본 클 러 스 터 모니터링:URL 을 통 해http://turbine-hostname:port/turbine.stream기본 클 러 스 터 에 대한 모니터링 을 실현 합 니 다.
☞지정 한 클 러 스 터 모니터링:URL 을 통 해http://turbine-hostname:port/turbine.stream?cluster=[clusterName]을 켜 서 clusterName 군집 에 대한 감 시 를 실현 합 니 다.
☞단일 응용 모니터링:URL 을 통 해http://hystrix-app:port/hystrix.stream구체 적 인 서비스 사례 에 대한 감 시 를 실현 합 니 다.
☞Delay:서버 에서 모니터링 정 보 를 문의 하 는 지연 시간 을 제어 합 니 다.기본 값 은 2000 밀리초 입 니 다.이 속성 을 설정 하면 클 라 이언 트 의 네트워크 와 CPU 소 모 를 줄 일 수 있 습 니 다.
☞타이틀:이 매개 변 수 는 적당 한 제목 을 보 여 줍 니 다.
2.eureka-server 가 eureka 를 제공 하 는 서비스 등록 센터 가 있어 야 합 니 다.코드 클 라 우 드 에 있어 참고 할 수 있 습 니 다.코드 를 붙 이지 않 습 니 다.
3.eureka-service 가 서 비 스 를 제공 해 야 합 니 다.프로젝트 이름 은 hello-service 이 고 프로젝트 주소 가 같 습 니 다.
4.서비스 가 감 시 된 프로젝트 를 새로 만 듭 니 다.프로젝트 이름 은 ribbon-customer 입 니 다.
4.1pom.xml 관련 의존 도입

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
4.2 시작 클래스 에@EnableCurctionBreaker 를 추가 하여 차단기 기능 을 엽 니 다.

package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableCircuitBreaker //       
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {

 @Bean
 @LoadBalanced
 RestTemplate restTemplate() {
  return new RestTemplate();
 }
 public static void main(String[] args) {
  SpringApplication.run(ConsumerApplication.class, args);
 }

}
4.3 RestController

package com.didispace.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

 @Autowired
 HelloService helloService;

 @RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
 public String helloConsumer() {
  return helloService.hello();
 }

}
4.4 application.properties 프로필

spring.application.name=ribbon-consumer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000
위의 절 차 를 통 해 이미 기본적으로 준비 작업 을 마 쳤 으 니,아래 에 우 리 는 테스트 를 진행 할 것 이다.
1.eureka-server 시작
2.hello-service 시작
3.ribbon-customer 시작
4.Hstrix-dashboard 시작
5.브 라 우 저 에 입력http://localhost:2001/hystrix
6.브 라 우 저의 새 창 에 입력http://localhost:9000/ribbon-consumer
7.Hystrix-Dashboard 의 메 인 화면 에 입력:http://localhost:9000/hystrix.stream그리고 Monitor Stream 버튼 을 누 르 세 요.

모니터링 인터페이스 에는 두 가지 중요 한 도형 정보 가 있다.하 나 는 옹 골 진 원 과 하나의 곡선 이다.
  • 옹 골 진 원:1.색채 의 변 화 를 통 해 사례 의 건강 정 도 를 나타 내 고 건강 정 도 는 녹색,노란색,주황색,빨간색 에서 점점 줄어든다.2.크기 를 통 해 요청 트 래 픽 에 변화 가 생 겼 음 을 나타 내 고 트 래 픽 이 클 수록 이 옹 골 진 원 이 커진다.그래서 대량의 실례 에서 고장 실례 와 고압 실례 를 신속하게 발견 할 수 있다.
  • 곡선:2 분 동안 유랑 의 상대 적 인 변 화 를 기록 하 는 데 사용 되 며 이 를 통 해 유량 의 상승 과 하락 추 세 를 관찰 할 수 있다.
  • 메모:Spring Cloud Zuul 이 구축 한 API 게 이 트 웨 이 를 Hystrix Board 로 감시 할 때 Thread Pool 정 보 는 Loading 상태 에 있 습 니 다.이것 은 Zuul 이 기본적으로 신 호 량 을 사용 하여 격 리 를 실현 하기 때문에 Hystrix 설정 을 통 해 격 리 체 제 를 스 레 드 탱크 로 바 꾸 는 방식 만 보 여줄 수 있 습 니 다.
    참고:
    [1],적 영 초
    [2]블 로그,순결 한 미소,스프링 클 라 우 드 마이크로 서비스 실전
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기