센티넬 개요 :
인기 마이크로 서비스, 및 서비스의 안정성이 더욱 중요 해지고있다. 출발점, 유량 제어, 퓨즈 하향 부하 보호 시스템 치수 안정성 보호 복수의 서비스로 유량 감시.
센티넬의 특징은 다음과 같습니다
풍부한 응용 프로그램 시나리오 : 센티넬은 알리바바가 XI는 스파이크로 10 년 과거의 흐름을 촉진 비스 핵심 시나리오를 수행 (즉, 용량 범위를 견딜 수있는 버스 티 트래픽 제어 시스템), 뉴스 클리핑 채우기 이러한 날려 다운 스트림 사용할 수없는 등의 밸리 클러스터 트래픽 제어, 실시간 애플리케이션.
전체 실시간 모니터링 : 센티넬를 실시간 모니터링을 제공하면서. 당신은 콘솔에서 단일 시스템의 두 번째 레벨 데이터 액세스 응용 프로그램을 참조하거나 (500) 이하의 클러스터 크기의 작동도 요약 할 수 있습니다.
넓은 OSS 에코 : 센티넬은 예를 들어, 통합의 SpringCloud, 두보, gRPC를 들어, 상자 밖으로 다른 오픈 소스 프레임 워크 / 라이브러리 통합 모듈과 함께 제공. 당신은 신속하게 센티넬에 액세스 할 수 있습니다 적절한 의존하고 간단한 구성을 소개합니다.
SPI 완벽한 확장 점 : 센티넬은 잘 SPI 확장 인터페이스, 사용하기 쉬운 제공합니다. 빠르게 확장 인터페이스를 통해 사용자 지정 논리를 구현할 수 있습니다. 이러한 사용자 정의 규칙 관리, 동적 데이터 소스에의 적응 등.
센티넬이 주요 특징이다 :
센티넬 센티넬은 단순히 핵심 라이브러리 및 대시 보드로 나눌 수 있습니다. 핵심 라이브러리는 대시 보드를 의존하지 않는,하지만 대시 보드의 조합은 최상의 결과를 얻을 수 있습니다.
퓨즈 보호에 사용 센티넬은 여러 단계로 나누어 져 있습니다 :
자원 정의 1.
규칙을 정의 2.
규칙이 적용되고 있는지 확인합니다
자료 : 당신은 아무것도, 서비스, 서비스 방식, 또는 코드의 경우에도 조각이 될 수 있습니다.
규칙 : 트래픽 제어 규칙, 퓨즈 다운 그레이드 규칙, 시스템 보호 규칙, 원산지 및 핫스팟 액세스 제어 규칙 매개 변수의 규칙 : 센티넬은 다음과 같은 규칙을 지원합니다.
센티넬은 모든 규칙 즉시 수정 한 후, 효과적인 동적 쿼리 수 및 메모리 상태를 수정할 수있는
자원의 정의가 재 배열 규칙에 따라, 먼저 선을 보호하기 위해 필요할 수 있습니다. 또한 자원, 우리가 언제든지 다양한 흐름 제어 규칙을 정의 할 수있는 유연성을 가지고 있음을 알 수있다. 코딩 시간에, 단지 우리는 자원으로 정의하고, 필요가 보호하는 경우 코드는 보호를 필요에 있는지 여부를 고려해야합니다.
센티넬 구성 요소 :
관리 콘솔을
얻을 센티넬 콘솔 https://github.com/alibaba/Sentinel
저장 항아리 패키지 디렉토리에서 콘솔을 시작하려면 다음 명령을 사용합니다 :
자바 -Dserver.port = 8080 = -Dcsp.sentinel.dashboard.server 로컬 호스트 : 8080 -Dproject.name = 전초 대시 -jar 전초 계기판 xxxjar
항 - Dserver.port = 8080 센티넬 콘솔 포트 8080를 지정하는 데 사용 .
브라우저에서 액세스 에 http : // localhost를 : 8080 / 로그인에 계정 암호를 입력
이후 센티넬 1.6.0에서 센티넬 콘솔 기본 로그인 기능을 도입, 기본 사용자 이름과 암호를 감시하다
시작 센티넬 콘솔은 JDK에게 위 1.8이 필요합니다.
관리 콘솔에 모든 서비스 :
클라이언트 액세스 콘솔 :
클라이언트 (마이크로 서비스를 관리 할 필요가) 좌표를 도입
전송 모듈은 센티넬 콘솔과 통신하는 고객의 요구를 통합. JAR 패키지의 pom.xml에 의해 도입 될 수 있습니다 :
< 의존성 > < 의 groupId > com.alibaba.csp </ 의 groupId > < artifactId를 > 전초 운송 단순 HTTP </ artifactId를 > </ 의존성 >
클라이언트에서 시작 매개 변수 구성
봄:
# 구성 요청 경로 콘솔.
구름:
보초:
수송:
대시 보드 : 로컬 호스트 : 8080
기계와 건강 목록보기 : 방문 통해 http : // localhost : 8080 / 볼 수 있습니다 만 액세스 클라이언트
기본적으로 클라이언트의 최초의 호출은, 콘솔에 하트 비트 패킷을 전송하기 시작하면 센티넬은 초기화됩니다. 또한 구성 sentinel.eager = 진정한 취소 센티넬 콘솔 게으른 로딩 할 수 있습니다.
센티넬 기반 서비스 보호 :
유니버설 자원 보호 :
1. 의존 소개
SpringCloud와 해당 버전 SpringCloud - 알리바바 관계를 참고
아버지는 SpringCloud의 알리바바 프로젝트 구현을 도입
< 의존성 > < 의 groupId > com.alibaba.cloud </ 의 groupId > < artifactId를 > 스프링 클라우드 알리바바 의존성 </ artifactId를 > < 버전 > 2.1.0.RELEASE </ 버전 > < 유형 > POM </ 입력 > < 범위 > 수입 </ 범위 > </ 의존성 >
감시에 도입 하위 프로젝트 (서비스 소비자)
< 의존성 > < 의 groupId > com.alibaba.cloud </ 의 groupId > < artifactId를 > 스프링 클라우드 스타터 알리바바 센티넬 </ artifactId를 > </ 의존성 >
융합 다운 그레이드의 구성 방법
/ ** * 주문 제어 층 * / @RestController @RequestMapping ( "/ 위해" ) 공개 수업 OrderController { @Autowired 개인 나머지 템플릿 나머지 템플릿; / ** * 주문 시스템으로 정보 서비스 전화 번호 상품 무역 문의에 따라 * @param의 ID * @return * / @GetMapping ( "/ 구매 / {ID}" ) @SentinelResource (값 = "순서", blockHandler = "orderBlockHandler"대체 = "orderFallback" ) 공공 제품 findById 메소드 (@PathVariable ( "ID" ) 롱 ID가) { 반환 (restTemplate.getForObject을. "HTTP : // 서비스 제품 / 제품 /"+ ID, 제품 클래스 ); } // 융합 방법이 저하 공공 제품 orderBlockHandler (긴 ID) { 제품 제품 = 새로운 제품을 (); product.setId ( -2l ); product.setProductName ( "날려 다운 그레이드 트리거 방법" ); 반환 제품; } // 던져 예외는 방법 다운 그레이드 공공 제품 orderFallback (롱 언급 ID 위) { 제품 제품 = 새로운 제품을 (); product.setId ( -1L ); product.setProductName는 ( "트리거 하향 방식은 예외가 발생" ) 반환 제품; } }
방법에 대한 사용 @SentinelResource 주석 구성의 퓨즈 보호합니다. 차이는 Hystrix로하는 예외의 센티넬 발생되는 비정상적인 실행 지정된 트리거 대체 방법에 의해 지정된 다운 그레이드 blockHandler 법에 의해 상세한 구별 퓨즈 다운 그레이드 할 하향 송풍이다.
@SentinelResource 다른 구성을 위해 다음과 같이
참고 : 비즈니스에 대한 예외를 처리 할 수없는 버전 1.6.0 대체 기능 이전 만 다운 그레이드 이상 (DegradeException) 처리를 위해
특히 blockHandler 및 대체가 구성되어있는 경우, 하향 전용 blockHandler 처리 로직과 슬로우 BlockException 들어갈 것이다 제한적이었다.
당신은 대체 blockHandler 및 defaultFallback을 구성하지 않으면 다운 그레이드를 제한 할 때, BlockException 직접 발생 된 것입니다.
융합 달성 척하기 :
척하기 구성 요소의 센티넬 적응. 사용할 경우, 의존 -starter 감시의 도입뿐만 아니라 두 단계를 필요합니다 :
feign.sentinel.enabled = true를 열기 감시 체하다 지원 프로필
자동 구성 클래스 감시 스타터 걸릴 효과에 따라 추가 openfeign 스타터
1. 의존 소개
< 의존성 > < 의 groupId > com.alibaba.cloud </ 의 groupId > < artifactId를 > 스프링 클라우드 스타터 알리바바 센티넬 </ artifactId를 > </ 의존성 > < 의존성 > < 의 groupId > org.springframework.cloud </ 의 groupId > < artifactId를 > 스프링 클라우드 스타터 openfeign </ artifactId를 > </ 의존성 >
2. 감시 지원
# 구성 체하다 가장하다 : 보초: 활성화 : 사실
3. 구성 FeignClient
쓰기 FeignClient 인터페이스 구현 클래스
척하기는 선박 (@Component)에 스캔이 필요한 사용자 인터페이스와 구현 클래스를 구현하는 디그레이 ProductFeginClient의 필요성을 융합 달성을 기반으로 다운 그레이드 방법은 하나의 구현 인터페이스입니다
@Component 공공 클래스 ProductFeignClientImpl 구현 ProductFeignClient { / ** * 취입 분해법 * @param의 ID * @return * / @우세하다 공공 제품 findById 메소드 (긴 ID) { 제품 제품 = 새로운 제품을 (); product.setId ( -1L ); product.setProductName ( "퓨즈 그레이드 트리거링 방법" ); 반환 제품; } }
추가 hystrix 날려 수정 FeignClient
/ ** * 서비스 이름 문 전화를 걸 * @FeignClient * 이름 : 서비스 제공자의 서비스의 이름 * 대체 : 방법 강등 구성 퓨즈 구현 클래스를 발생 * / @FeignClient (이름 = "서비스 상품"대체 = ProductFeignClientImpl. 클래스 ) 공용 인터페이스 ProductFeignClient { / ** 전화 마이크로 서비스 인터페이스 * 구성 필요 * / @GetMapping (값 = "/ 제품 / {ID}" ) 공공 제품 findById 메소드 (@PathVariable ( "ID" ) 긴 ID); }
httpmethod : 프로토콜 : // requesturl 척하기 정책은 자원 이름 해당 인터페이스를 정의합니다. 모든 속성의 @FeignClient 주석, 센티넬 호환 만들어집니다.
HTTP : findById 메소드에게 GET라는 이름의 자원에 해당하는 ProductFeginClient 인터페이스 방법 // 제품 - 서비스 - / 제품 / {ID}
4. 시작 테스트 .........