알리바바 센티넬

센티넬 개요 :

  인기 마이크로 서비스, 및 서비스의 안정성이 더욱 중요 해지고있다. 출발점, 유량 제어, 퓨즈 하향 부하 보호 시스템 치수 안정성 보호 복수의 서비스로 유량 감시.

  센티넬의 특징은 다음과 같습니다
    풍부한 응용 프로그램 시나리오 : 센티넬은 알리바바가 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. 시작 테스트 .........

추천

출처www.cnblogs.com/roadlandscape/p/12501576.html