SpringCloud-Alibaba-Sentinel 서비스 강등,핫 이 슈 제한,서비스 융단

선언:
유량 통 제 를 제외 하고 링크 에서 불안정 한 자원 을 호출 하여 등급 을 낮 추 는 것 도 사용 가능 한 중요 한 조치 중 하나 이다.하나의 서 비 스 는 항상 다른 모듈 을 호출 하 는데,아마도 다른 원 격 서비스,데이터베이스,또는 제3자 API 등 일 것 이다.예 를 들 어 지불 할 때 은 련 이 제공 하 는 API 를 원 격 으로 호출 해 야 할 수도 있 습 니 다.어떤 상품 의 가격 을 조회 하려 면 데이터베이스 조 회 를 해 야 할 수도 있다.그러나 이 의존 서비스의 안정성 은 보장 되 지 않 는 다.의존 하 는 서비스 가 불안정 하고 요청 한 응답 시간 이 길 어 지면 서 비 스 를 호출 하 는 방법 에 대한 응답 시간 도 길 어 지고 스 레 드 가 쌓 이 며 최종 적 으로 업무 자체 의 스 레 드 풀 을 소모 할 수 있 으 며 서비스 자체 도 사용 할 수 없 게 될 것 이다.
在这里插入图片描述
퓨즈 전략
Sentinel 은 다음 과 같은 몇 가지 퓨즈 정책 을 제공 합 니 다.
슬 로 우 호출 비율(SLOWREQUEST_RATIO):느 린 호출 비율 을 한도 값 으로 선택 하고 허용 되 는 느 린 호출 RT(즉 최대 응답 시간)를 설정 해 야 합 니 다.요청 한 응답 시간 이 이 값 보다 많 으 면 느 린 호출 으로 통 계 됩 니 다.단위 통계 시간(statIntervalMs)내 요청 수량 이 설정 한 최소 요청 수량 보다 많 고 느 린 호출 비율 이 한도 값 보다 크 면 다음 의 용 단 시간 내 요청 은 자동 으로 용 단 됩 니 다.녹 아내 린 후 녹 아내 린 용 단 기 는 탐지 회복 상태(HALF-OPEN 상태)에 들 어 갑 니 다.다음 요청 응답 시간 이 설 정 된 느 린 호출 RT 보다 적 으 면 녹 아내 리 고 설 정 된 느 린 호출 RT 보다 크 면 다시 녹 습 니 다.
이상 비율(ERRORRATIO):단위 통계 시간(statIntervalMs)내 요청 수량 이 설 정 된 최소 요청 수량 보다 많 고 이상 한 비율 이 한도 값 보다 크 면 다음 의 용 단 시간 내 요청 은 자동 으로 용 단 됩 니 다.녹 아내 린 시간 이 지나 면 녹 아내 린 퓨즈 가 탐지 회복 상태(HALF-OPEN 상태)에 들 어가 고,다음 요청 이 성공 적 으로 완료 되면(오류 없 음)녹 아내 린 상태 가 종료 되 며,그렇지 않 으 면 다시 녹 아내 린 다.이상 비율의 한도 값 범 위 는[0.0,1.0]으로 0%-100%를 대표 한다.
이상 수(ERRORCOUNT):단위 통계 시간 내 이상 수량 이 한도 값 을 초과 하면 자동 으로 용 단 됩 니 다.녹 아내 린 시간 이 지나 면 녹 아내 린 퓨즈 가 탐지 회복 상태(HALF-OPEN 상태)에 들 어 갑 니 다.다음 요청 이 성공 적 으로 완료 되면(오류 없 음)녹 아내 린 상태 가 종 료 됩 니 다.그렇지 않 으 면 다시 녹 아내 립 니 다.
在这里插入图片描述
느 린 호출 비율:
최대 RT:200 은 이 요청 을 200 밀리초 에 처리 한 다 는 뜻 입 니 다.
비례 밸브 값:1 은 200 밀리초 에 하 나 를 처리 하 라 는 뜻 입 니 다.
녹 아내 리 는 시간:1 초 간 사용 불가
최소 요청 수:5 초 5 회 요청
在这里插入图片描述
在这里插入图片描述
이상 비율:
비례 밸브 값:홈 페이지:(이상 비율의 한도 값 범 위 는[0.0,1.0],0%-100%를 의미 함)
녹 아내 린 시간:1 초 동안 사용 할 수 없다 는 뜻
최소 요청 수:51 초 5 개
在这里插入图片描述
이상 수
이상 수:3 개 이상 을 초과 한 다 는 뜻 입 니 다.4 번 째 퓨즈 서비스 에 들 어가 서 레벨 을 낮 추 는 것 입 니 다.다섯 번 째 요청 이 맞 으 면 회복 합 니 다.
녹 아내 리 는 시간:1 초
在这里插入图片描述
핫 이 슈 매개 변수 제한 흐름
무엇이 이 슈 입 니까?핫 이 슈 는 자주 방문 하 는 데이터 입 니 다.많은 경우 에 우 리 는 특정한 핫 이 슈 데이터 중에서 방문 빈도 가 가장 높 은 Top K 데 이 터 를 통계 하고 그 방문 을 제한 하 기 를 원한 다.예 를 들 면:
상품 ID 는 매개 변수 로 일정 기간 가장 많이 구 매 하 는 상품 ID 를 집계 하여 제한 합 니 다.
사용자 ID 는 매개 변수 로 일정 기간 자주 방문 하 는 사용자 ID 를 제한 합 니 다.
핫 이 슈 매개 변수 제한 흐름 은 매개 변수 에 들 어 오 는 핫 이 슈 매개 변 수 를 통계 하고 설정 한 제한 흐름 한도 값 과 모델 에 따라 핫 이 슈 매개 변 수 를 포함 한 자원 호출 을 제한 합 니 다.핫 이 슈 매개 변수 제한 흐름 은 특수 한 데이터 제어 로 볼 수 있 으 며 핫 이 슈 매개 변 수 를 포함 한 자원 호출 에 만 적 용 됩 니 다.
在这里插入图片描述
예시:
여기에 두 개의 매개 변수 가 있 는데 하 나 는 A 이 고 하 나 는 B 핫 이 슈 제한 흐름 은 설정 매개 변수 에 따라 아래 표 시 를 설정 한 것 입 니 다.아래 표 는 0 부터 시작 합 니 다.@SentinelResource 주해 설정 흐름 제한 id,blockHandler 설정 은 예측 가능 한 응답 체 를 되 돌려 줍 니 다.

 @GetMapping(value = "select/test")
 @SentinelResource(value = "test",blockHandler = "teat1")
 public String test(@RequestParam(value = "a",required = false) Integer a,@RequestParam(value = "b",required = false) Integer b){

 return "  :Sentinel";

 }
예상 가능 한 응답 체 를 설정 합 니 다.이 BlockException 은 필수 인자 입 니 다.

 public String teat1(@RequestParam(value = "a",required = false) Integer a,@RequestParam(value = "b",required = false)Integer b, BlockException e){

 return "       ";

 }
배치 하 다.
test 는 @SentinelResource(value = "test",blockHandler = "teat1") 입 니 다.
매개 변수 색인:0 은 0 아래 표 시 됩 니 다.
단기 밸브 값:1 처리 개수
통계 창 시간 1 초 처리 완료
在这里插入图片描述
고급 옵션
在这里插入图片描述
매개 변수 형식:매개 변수의 데이터 형식 선택
매개 변수 값:1 매개 변수 가 1 이면 흐름 제한
제한 밸브:3 번 은 3 번 이다.
在这里插入图片描述
이 건 스스로 테스트 할 수 있어 요.
在这里插入图片描述
서비스 중단
Sentinel 은 자원 을 정의 하 는 데@Sentinel Resource 주 해 를 제공 하고 AspectJ 의 확장 을 제공 하여 자원 을 자동 으로 정의 하고 BlockException 을 처리 하 는 데 사용 합 니 다.
@SentinelResource 주석
@Sentinel Resource 는 자원 을 정의 하고 선택 할 수 있 는 이상 처리 와 fallback 설정 항목 을 제공 합 니 다.@Sentinel 리 소스 주 해 는 다음 과 같은 속성 을 포함 합 니 다.
value:자원 이름,필수 항목(비어 있 으 면 안 됨)
entry Type:entry 형식,옵션 가능(기본 값 은 Entry Type.OUT)
BlockHandler/blockHandler Class:blockHandler 는 BlockException 을 처리 하 는 함수 이름 에 대응 하여 옵션 을 선택 할 수 있 습 니 다.BlockHandler 함수 접근 범 위 는 Public 이 어야 합 니 다.반환 유형 은 원래 의 방법 과 일치 해 야 합 니 다.매개 변수 유형 은 원래 의 방법 과 일치 하고 마지막 으로 추가 적 인 매개 변 수 를 추가 해 야 합 니 다.유형 은 BlockException 입 니 다.BlockHandler 함 수 는 기본적으로 원래 방법 과 같은 클래스 에 있어 야 합 니 다.다른 종류의 함 수 를 사용 하려 면 BlockHandlerClass 를 대응 하 는 클래스 의 Class 대상 으로 지정 할 수 있 습 니 다.대응 하 는 함 수 는 static 함수 여야 합 니 다.그렇지 않 으 면 해석 할 수 없습니다.
fallback/fallback Class:fallback 함수 이름,옵션 을 선택 할 수 있 습 니 다.이상 을 던 질 때 fallback 처리 논 리 를 제공 합 니 다.fallback 함 수 는 모든 종류의 이상(exceptions ToIgnore 에서 제 외 된 이상 유형 제외)을 처리 할 수 있 습 니 다.fallback 함수 서명 과 위치 요구:
반환 값 형식 은 원 함수 반환 값 형식 과 일치 해 야 합 니 다.
방법 매개 변수 목록 은 원 함수 와 일치 하거나 Throwable 형식의 매개 변 수 를 추가 하여 대응 하 는 이상 을 받 을 수 있 습 니 다.
fallback 함 수 는 기본적으로 원래 방법 과 같은 클래스 에 있어 야 합 니 다.다른 종류의 함 수 를 사용 하려 면 fallback Class 를 대응 하 는 클래스 의 Class 대상 으로 지정 할 수 있 습 니 다.대응 하 는 함 수 는 static 함수 여야 합 니 다.그렇지 않 으 면 해석 할 수 없습니다.
default Fallback(since 1.6.0):기본 fallback 함수 이름 입 니 다.옵션 을 선택 할 수 있 습 니 다.일반적인 fallback 논리(즉,많은 서비스 나 방법 에 사용 할 수 있 습 니 다)에 사 용 됩 니 다.기본 fallback 함 수 는 모든 종류의 이상(exceptions ToIgnore 에서 제 외 된 이상 유형 제외)을 처리 할 수 있 습 니 다.fallback 과 default Fallback 을 동시에 설정 하면 fallback 만 적 용 됩 니 다.defaultFallback 함수 서명 요구 사항:
반환 값 형식 은 원 함수 반환 값 형식 과 일치 해 야 합 니 다.
방법 매개 변수 목록 이 비어 있 거나 Throwable 형식의 매개 변 수 를 추가 하여 해당 하 는 이상 을 받 을 수 있 습 니 다.
default Fallback 함 수 는 기본적으로 원래 방법 과 같은 클래스 에 있어 야 합 니 다.다른 종류의 함 수 를 사용 하려 면 fallback Class 를 대응 하 는 클래스 의 Class 대상 으로 지정 할 수 있 습 니 다.대응 하 는 함 수 는 static 함수 여야 합 니 다.그렇지 않 으 면 해석 할 수 없습니다.
exceptions ToIgnore(since 1.6.0):어떤 이상 이 제거 되 었 는 지 지정 하 는 데 사 용 됩 니 다.이상 통계 에 포함 되 지 않 고 fallback 논리 에 들 어가 지 않 고 그대로 던 집 니 다.
1.8.0 버 전부터 default Fallback 은 클래스 단계 에서 설정 할 수 있 습 니 다.
주:1.6.0 이전 버 전의 fallback 함 수 는 강등 이상(Degrade Exception)만 처리 하고 업무 이상 에 대해 처리 할 수 없습니다.
특히,BlockHandler 와 fallback 이 모두 설정 되 어 있 으 면 흐름 이 제한 되 어 BlockException 을 던 질 때 blockHandler 처리 논리 에 만 들 어 갑 니 다.BlockHandler,fallback,default Fallback 이 설정 되 어 있 지 않 으 면 흐름 제한 이 강 등 될 때 BlockException 을 직접 던 집 니 다(방법 자체 가 throws BlockException 을 정의 하지 않 으 면 JVM 에 의 해 Undeclared ThrowableException 으로 포 장 됩 니 다).
예시:
1,fallback 자바 이상 처리

@SentinelResource(value = "select",fallback = "ErrorFallback")
코드

 @GetMapping(value = "select/{id}")
 @SentinelResource(value = "select",fallback = "ErrorFallback")
 public CommonResult getid(@PathVariable Long id){

  if(id>3) {
  throw new NullPointerException(id+"    ");
  }else {
  return restTemplate.getForObject(URL + "/select/" + id, CommonResult.class);
  }

 }
fallback 처리 방법

public CommonResult ErrorFallback(@PathVariable Long id,Throwable e){

 return new CommonResult<>(500,"   ,     ");
 }
처리 결과
在这里插入图片描述

blockHandler   sentinel     java       

@SentinelResource(value = "select",blockHandler = "ErrorFallback")

 public CommonResult ErrorFallback(@PathVariable Long id, BlockException e){

 return new CommonResult<>(500,"   ,     "+e.getMessage());
 }
테스트
이 설정 은 이상 비율 이상 이 30%에 이 르 러 용 단 됩 니 다.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
두 개의 주 해 를 동시에 사용 하 다.

 @SentinelResource(value = "select",blockHandler = "ErrorFallback",fallback = "ErrorFallback1")

public CommonResult ErrorFallback1(@PathVariable Long id, Throwable e){

 return new CommonResult<>(500,"fallback:   ,     "+e.getMessage());
 }
 public CommonResult ErrorFallback(@PathVariable Long id, BlockException e){

 return new CommonResult<>(500,"blockHandler:   ,     "+e.getMessage());
 }
在这里插入图片描述
在这里插入图片描述
하지만 BlockHandler 와 fallback 이 동시에 설정 되면 흐름 제한 등급 이 내 려 가 이상 BlockException 처리 가 됩 니 다.

exceptionsToIgnore 

 @SentinelResource(value = "select",blockHandler = "ErrorFallback",fallback = "ErrorFallback1"
   ,exceptionsToIgnore = {IllegalAccessException.class})

blockHandlerClass=          .class
비 즈 니스

@GetMapping(value = "select/test")
 @SentinelResource(value = "test",blockHandlerClass= MySentinel.class,blockHandler = "a")
 public String test(@RequestParam(value = "a",required = false) Integer a,@RequestParam(value = "b",required = false) Integer b){

 return "  :Sentinel";

 }
융단 강등

package com.tang.cloud.mysentinel;

import com.alibaba.csp.sentinel.slots.block.BlockException;
import jdk.nashorn.internal.ir.Block;
import org.bouncycastle.crypto.engines.BlowfishEngine;
import org.springframework.web.bind.annotation.RequestParam;

/**
 *         
 */
public class MySentinel {

 //                 ,          
 public static String a(@RequestParam(value = "a",required = false) Integer a, @RequestParam(value = "b",required = false) Integer b, BlockException excep){

 return "             ";
 }
 }
스프링 클 라 우 드-알 리 바 바-센티 널 서비스 강등 핫 이 슈 스 트림 서비스 가 녹 아내 린 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.스프링 클 라 우 드-알 리 바 바-센티 널-서비스 강등 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기