Spring Cloud Alibaba 이전 안내 (1): 한 줄 의 코드 가 Hystrix 에서 Sentinel 로 이전 합 니 다.

요약: 본 고 는 Hystrix, Resilience4j, Sentinel 을 비교 하고 코드 라 는 간단 한 방식 을 어떻게 사용 하여 Hystrix 를 Sentinel 로 이전 하 는 지 연구 하고 자 한다.Hystrix 는 얼마 전 유지 보 수 를 중단 하 겠 다 고 발표 한 이후 지역 사회 에서 resilience4j 를 추천 했다.
스프링 클 라 우 드 가 공식 적 으로 스프링 클 라 우 드 넷 플 릭 스 를 유지보수 상태 로 진입 시 켰 다 고 발표 한 후부 터 우 리 는 '스프링 클 라 우 드 알 리 바 바 이전 가이드' 시 리 즈 를 제작 하여 개발 자 에 게 더 많은 기술 선택 방안 을 제공 하고 이전 과정 에서 의 기술적 난이 도 를 낮 추기 시작 했다.
첫 번 째 편 에서 우 리 는 Hystrix, Resilience4j 와 Sentinel 세 개의 오픈 소스 프로젝트 를 비교 하고 한 줄 의 코드 를 어떻게 사용 하 는 지 에 대해 간단 한 방식 으로 Hystrix 를 Sentinel 로 이전 하 는 지 연구한다.
Hystrix 얼마 전부터 유지 보 수 를 중단 하 겠 다 고 발표 한 후에 지역 사회 에서 추천 했다. resilience4j。이 3 가지 제품 은 각각 장단 점 이 있 고 구체 적 인 기능 차 이 는 다음 표 (이 표 의 출처) 를 참고 한다. Sentinel Wiki):
Sentinel
Hystrix
resilience4j
격 리 정책
신 호 량 격 리 (병렬 스 레 드 수 제한)
스 레 드 탱크 격 리 / 신 호 량 격 리
신 호 량 격 리
융단 강등 전략
응답 시간, 이상 비율, 이상 수 기반
이상 비율 기반
이상 비율 기반 응답 시간
실시 간 통계 실현
슬라이딩 창 (LeapArray)
슬라이딩 창 (RxJava 기반)
Ring Bit Buffer
동적 규칙 설정
다양한 데이터 원본 지원
다양한 데이터 원본 지원
유한 지원
확장 성
다 중 확장 점
플러그 인 형식
인터페이스 형식
주석 기반 지원
지지 하 다.
지지 하 다.
지지 하 다.
흐름 을 제한 하 다
QPS 기반, 호출 관계 기반 흐름 제한 지원
유한 한 지지
Rate Limiter
유량 성형
예열 모드, 등 속기 모드, 예열 대기 모드 지원
지지 하지 않 음
간단 한 Rate Limiter 모드
시스템 적응 보호
지지 하 다.
지지 하지 않 음
지지 하지 않 음
콘 솔
상 자 를 열 때 사용 할 수 있 는 콘 솔 을 제공 하고 규칙 을 설정 할 수 있 으 며 초 단위 모니터링, 기계 발견 등 을 볼 수 있 습 니 다.
간단 한 모니터링
콘 솔 을 제공 하지 않 고 다른 모니터링 시스템 을 연결 할 수 있 습 니 다.
현재 Sentinel 은 Spring Cloud Alibaba 프로젝트 에 Spring Cloud 시스템 이 적합 하여 Hystrix 의 기능 을 완전히 대체 할 수 있 습 니 다.
Spring Cloud Alibaba Sentinel 기능 소개
Spring Cloud Alibaba Sentinel 은 주로 Sentinel 과 Spring Boot / Cloud 기술 스 택 을 통합 하기 위해 서 입 니 다.현재 다음 과 같은 기능 이 완성 되 었 습 니 다.
  • 자동 으로 Servlet 용기 에 적합 합 니 다.url - pattern (모든 요청 을 기본 으로 차단) 만 설정 하면 차단 한 이 url 에 대해 제한 등급 하강 작업 을 할 수 있 습 니 다
  • RestTemplate 를 통합 하여 RestTemplate 를 사용 하여 조작 할 때 제한 등급
  • Feign 을 통합 하여 기 존의 Hystrix 가 Feign 을 지원 하 는 프로 그래 밍 모델
  • 을 호 환 했다.
  • 데이터 원본 을 설정 할 수 있 습 니 다. 설정 파일 에 데이터 원본 정 보 를 설정 하면 동적 로드 규칙
  • Endpoint 는 각종 메타 데 이 터 를 노출 합 니 다. 예 를 들 어 설정 정보, 규칙 데이터
  • 건강 지표 검사 Sentinel 건강상태 (통합 중)
  • Spring Cloud Gateway 와 Zuul (통합 중) 지원
  • Hystrix 대신 Spring Cloud Alibaba Sentinel
    Spring Cloud Alibaba Sentinel 을 사용 하려 면 의존 정보 가 필요 합 니 다.
    
        org.springframework.cloud
        spring-cloud-alibaba-sentinel
        0.2.1.RELEASE
    

    0 코드 수정 호 환 Feign
    게다가 Feign 의 의존 도:
    
      org.springframework.cloud
      spring-cloud-starter-openfeign
      ${latest.version}
    

    Hstrix 의 설정 을 sentinel 로 바 꾸 면 Sentinel 의 흐름 제한 기능 을 사용 할 수 있 습 니 다.
    # feign.hystrix.enabled: true
    feign.sentinel.enabled: true
    @FeignClient(name = "service-provider")
    public interface EchoService {
        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        String echo(@PathVariable("str") String str);
    
          @RequestMapping(value = "/echo/save", method = RequestMethod.POST)
        String save(Foo foo);
    }

    이것 괜찮아요?  EchoService echo 방법 에 대응 하 는 자원 이름 은?  GET:http://service-provider/echo/{str}, save 방법 에 대응 하 는 자원 이름 은?  POST:http://service-provider/echo/save
    이 규칙 들 을 설정 하면 흐름 제한 강등 작업 이 즉시 적 용 됩 니 다.
    한 줄 코드 지원 RestTemplate
    Sentinel 씨 는 또 Spring 과 생태 적 인...  RestTemplate  통합  RestTemplate  요청 과정 에서 흐름 제한 과 강등 작업 을 진행 하려 면 RestTemplate 를 구성 할 때 추가 해 야 합 니 다.  @SentinelRestTemplate  주석 을 달 면 됩 니 다:
    @Bean
    @SentinelRestTemplate
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    @SentinelRestTemplate  주 해 는 대응 하 는 속성 을 드 러 내 며 스 트림 을 제한 할 수 있 는 사용자 정의 오 류 를 드 러 냈 습 니 다. 기본 적 인 행 위 는 'RestTemplate request block by sentinel' 정 보 를 되 돌려 주 는 것 입 니 다.... 에 대하 여  @SentinelRestTemplate  보다 Wiki。
    본문 저자: 중간 부품 작은 형
    원문 을 읽다
    본 고 는 운 서 지역사회 의 오리지널 내용 으로 허락 없 이 전재 할 수 없다.

    좋은 웹페이지 즐겨찾기