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 " ";
}
}
스프링 클 라 우 드-알 리 바 바-센티 널 서비스 강등 핫 이 슈 스 트림 서비스 가 녹 아내 린 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.스프링 클 라 우 드-알 리 바 바-센티 널-서비스 강등 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringCloud OAuth2 + JWT 인증 인증(一) 인증 서버Spring Cloud oAuth2(1) 라이센스 서버 구축 및 액세스 Spring Cloud oAuth2(2) 리소스 서버 구축 및 테스트 SpringCloud OAuth2 + JWT 인증 인증(一) 인증 서버 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.