SpringBoot 2.0+알 리 바 바 Sentinel 동적 흐름 제한 실전(소스 코드 첨부)

Sentinel 이 뭐 예요?
마이크로 서비스 가 유행 하면 서 서비스 와 서비스 간 의 안정성 이 점점 중요 해 졌 다.Sentinel 은 유량 을 착안점 으로 하고 유량 제어,퓨즈 강등,시스템 부하 보호 등 여러 차원 에서 서비스의 안정성 을 보호 한다.
Sentinel 은 다음 과 같은 특징 을 가지 고 있다.
4.567917.풍부 한 응용 장면:Sentinel 은 알 리 바 바 가 최근 10 년 동안 쌍 십일 대 유량 을 촉진 하 는 핵심 장면 을 이 어 받 았 다.예 를 들 어 초 살(즉,돌발 유량 은 시스템 용량 이 감당 할 수 있 는 범위 에서 제어),정보 삭 봉 충전 곡,클 러 스 터 유량 통제,실시 간 으로 하 류 를 녹 여 응용 할 수 없다 는 등 이다4.567917.완 비 된 실시 간 모니터링:Sentinel 은 실시 간 모니터링 기능 을 동시에 제공한다.콘 솔 에서 응용 프로그램 에 접속 한 단일 기기 의 초 단위 데이터,심지어 500 대 이하 규모 의 클 러 스 터 의 총 운행 상황 을 볼 수 있 습 니 다4.567917.광범 위 한 개원 생태:Sentinel 은 상 자 를 열 면 바로 사용 할 수 있 는 다른 개원 구조/라 이브 러 리 와 의 통합 모듈 을 제공 합 니 다.예 를 들 어 Spring Cloud,Dubbo,gRPC 와 의 통합 입 니 다.해당 의존 도 를 도입 하고 간단 한 설정 을 하면 Sentinel 에 빠르게 접속 할 수 있 습 니 다
  • 완벽 한 SPI 확장 점:Sentinel 은 간단 하고 사용 하기 쉬 우 며 완벽 한 SPI 확장 인 터 페 이 스 를 제공 합 니 다.확장 인 터 페 이 스 를 통 해 논 리 를 빠르게 맞 출 수 있 습 니 다.예 를 들 어 맞 춤 형 규칙 관리,동적 데이터 원본 적합 등
  • Sentinel 의 주요 특성:
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    Sentinel 의 개원 생태:
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    Sentinel 은 두 부분 으로 나 뉜 다.
  • 핵심 라 이브 러 리(자바 클 라 이언 트)는 어떠한 프레임 워 크/라 이브 러 리 에 도 의존 하지 않 고 모든 자바 가 실 행 될 때 환경 에서 실 행 될 수 있 으 며 Dubbo/Spring Cloud 등 프레임 워 크 에 도 좋 은 지원 을 합 니 다
  • 콘 솔(Dashboard)은 Spring Boot 개발 을 바탕 으로 포장 후 직접 실행 할 수 있 으 며 추가 적 인 Tomcat 등 응용 용기 가 필요 하지 않 습 니 다
  • 콘 솔 설정
    Sentinel 컨트롤 러 는 최소한 다음 과 같은 기능 을 포함해 야 합 니 다.
    4.567917.기계 목록 과 건강 상 태 를 확인 합 니 다.Sentinel 클 라 이언 트 가 보 낸 심장 박동 가방 을 수집 하여 기계 의 온라인 여 부 를 판단 합 니 다4.567917.모니터링(단기 와 클 러 스 터 취 합):Sentinel 클 라 이언 트 가 노출 된 모니터링 API 를 통 해 정기 적 으로 모니터링 정 보 를 끌 어 들 이 고 취 합 하여 응용 하면 초 단위 의 실시 간 감 시 를 실현 할 수 있다4.567917.규칙 관리 와 푸 시:푸 시 규칙 을 통일 적 으로 관리 합 니 다감독 권:생산 환경 에서 감독 권 이 매우 중요 하 다.여기 서 모든 개발 자 는 자신의 실제 상황 에 따라 맞 춤 형 제작 을 해 야 합 니 다[release 페이지]에서 바로(https://github.com/alibaba/Sentinel/releases 'release 페이지')최신 버 전의 콘 솔 jar 패 키 지 를 다운로드 하고 Sentinel 콘 솔 을 시작 하려 면 JDK 버 전이 1.8 이상 이 어야 합 니 다.
    시작 스 크 립 트 sentinel.sh:
    
    #!/bin/bash
    java -Dsentinel.dashboard.auth.username=admin \
    -Dsentinel.dashboard.auth.password=admin \
    -Dserver.port=8084 -Dcsp.sentinel.dashboard.server=localhost:8084 \
    -Dproject.name=sentinel-dashboard \
    -jar sentinel-dashboard-1.6.3.jar &
    
    사용 자 는 다음 매개 변 수 를 통 해 설정 할 수 있 습 니 다.
  • -Destinel.dashboard.auth.username=admin 은 콘 솔 의 로그 인 사용자 이름 을 admin 으로 지정 합 니 다
  • -Destinel.dashboard.auth.password=admin 은 콘 솔 의 로그 인 비밀 번 호 를 admin 으로 지정 합 니 다.이 두 인 자 를 생략 하면 기본 사용자 와 비밀 번 호 는 모두 sentinel 입 니 다
  • -Dserver.servlet.session.timeout=7200 은 Spring Boot 서버 session 의 만 료 시간 을 지정 하 는 데 사 용 됩 니 다.예 를 들 어 7200 은 7200 초 를 표시 합 니 다.60m 는 60 분 을 표시 하고 기본 값 은 30 분 입 니 다.
  • SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    클 라 이언 트 설정
    pom.xml 다음 의존 도입:
    
     <!-- https://blog.52itstyle.vip -->
    <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.1.5.RELEASE</version>
     <relativePath/>
    </parent>
    <dependencies>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
     </dependency>
    </dependencies>
    <dependencyManagement>
     <!--    SpringBoot      2.1.x for Spring Boot 2.1.x-->
     <dependencies>
     <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-alibaba-dependencies</artifactId>
     <version>2.1.0.RELEASE</version>
     <type>pom</type>
     <scope>import</scope>
     </dependency>
     </dependencies>
    </dependencyManagement>
    
    프로필:
    
    #      https://blog.52itstyle.vip
    spring.application.name=blog
    spring.cloud.sentinel.transport.port=8720
    #            
    spring.cloud.sentinel.transport.dashboard=116.190.247.112:8084
    
    이 곳 의 spring.cloud.sentinel.transport.port 포트 설정 은 해당 하 는 기기 에서 Http Server 를 시작 합 니 다.이 서버 는 Sentinel 콘 솔 과 상호작용 을 합 니 다.예 를 들 어 Sentinel 콘 솔 에 스 트림 제한 규칙 을 추가 하면 규칙 데 이 터 를 이 Http Server 에 받 아들 이 고 Http Server 는 규칙 을 Sentinel 에 등록 합 니 다.
    코드 설정:
    
    /**
     *    https://blog.52itstyle.vip
     */
    @RequestMapping("{id}.shtml")
    @SentinelResource("blogView")
    public String page(@PathVariable("id") Long id, ModelMap model) {
     try{
     Blog blog = blogService.getById(id);
     String key = "blog_"+id;
     Long views = redisUtil.size(key);
     blog.setViews(views+blog.getViews());
     model.addAttribute("blog",blog);
     } catch (Throwable e) {
     return "error/404";
     }
     return "article";
    }
    
    @Sentinel Resource 주 해 는 자원 의 흐름 제한,강등 여 부 를 표시 하 는 데 사 용 됩 니 다.상기 예 에서 이 주해 의 속성 인'blogView'는 자원 이름 을 표시 합 니 다.
    기본 적 인 상황 에서 Sentinel 은 모든 Controller 요청 을 차단 합 니 다.여기 서 자원 이름 을 표시 하 는 것 은 모든 글 이 이 요청 을 하기 때 문 입 니 다.통계 와 흐름 통 제 를 편리 하 게 하기 위해 자원 표 지 를 사용자 정의 합 니 다.
    더 많은 주석 지원,참고:Sentinel/wiki/주석 지원.
    클 라 이언 트 프로젝트 를 방문 하여 몇 페이지 를 클릭 한 다음 에 Sentinel 콘 솔 에 로그 인 합 니 다.다음 화면 을 보면 설정 이 성공 적 이라는 것 을 설명 합 니 다.
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    흐름 제한 설정,방금 설정 한 자원 이름 을 검색 하고 흐름 제어 기능 을 선택 하 십시오.
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    한도 값 파 라 메 터 를 입력 하 십시오.테스트 편 의 를 위해 2 를 직접 입력 하고 브 라 우 저 를 연속 으로 새로 고 칩 니 다.배경 에 다음 과 같은 오류 가 발생 하면 프론트 페이지 에 설명 설정 이 제대로 표시 되 지 않 습 니 다.
    Caused by: com.alibaba.csp.sentinel.slots.block.flow.FlowException: null
    물론 Sentinel 프로 세 스 기능 은 이렇게 간단 할 뿐만 아니 라 클 러 스 터 모델 도 지원 합 니 다.최종 판 10 만 블 로그 에서 우 리 는 클 러 스 터 중의 노드 를 위해 단기 평균 점 수 를 설정 할 수 있 고 전체적인 한도 값 도 설정 할 수 있 습 니 다.
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    생산 환경 에서 사용
    Sentinel 핵심 라 이브 러 리 는 현재 생산 환경 에 사용 할 수 있 으 며,현재 알 리 바 바 를 제외 한 여러 기업 이 생산 환경 에서 사용 하고 있다.
    규칙 관리 및 푸 시
    네 이 티 브 버 전의 규칙 관 리 는 API 를 통 해 클 라 이언 트 에 규칙 을 전송 하고 메모리 에 직접 업데이트 하 며 생산 환경 에 직접 사용 할 수 없습니다.
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    그러나 Sentinel 은 확장 읽 기 데이터 원본 인 ReadableDataSource 를 제공 하고 규칙 센터 는 통일 적 으로 푸 시 합 니 다.클 라 이언 트 는 감청 기 를 등록 하 는 방식 으로 항상 변 화 를 감청 합 니 다.예 를 들 어 Nacos,Zookeeper 등 설정 센터 를 사용 합 니 다.이런 방식 은 더욱 좋 은 실시 성과 일치 성 을 보장 한다.
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    감시 하 다
    Sentinel 은 자원 접근 의 초 단위 데 이 터 를 기록 하고 로 컬 로그 에 저장 합 니 다.Sentinel 콘 솔 은 Sentinel 클 라 이언 트 가 예약 한 HTTP API 를 통 해 초 단위 모니터링 로그 에서 모니터링 데 이 터 를 끌 어 와 취 합 할 수 있 습 니 다.
    현재 Sentinel 콘 솔 에 서 는 모니터링 데이터 가 취 합 된 후 메모리 에 직접 존재 하 며 지속 되 지 않 고 최근 5 분 동안 의 모니터링 데이터 만 유지 하고 있 습 니 다.데이터 의 지속 화 를 감시 하 는 기능 이 필요 하 다 면 스스로 확장 하여 실현 할 수 있다.
    SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
    주의 사항
    처음에 문 서 를 열심히 읽 지 않 았 기 때문에 콘 솔 을 외부 네트워크 에 배 치 했 고 클 라 이언 트 가 내부 네트워크 에서 시작 하여 클 라 이언 트 가 접근 할 수 없 었 고 실시 간 링크 와 클 라 이언 트 링크 데 이 터 를 정상적으로 표시 할 수 없 었 습 니 다.
    테스트 파트너 는 원본 모드 에서 클 라 이언 트 와 콘 솔 은 서로 방문 해 야 합 니 다.클 라 이언 트 는 콘 솔 에 정기 적 으로 심장 박동 요 구 를 보 냅 니 다.콘 솔 은 클 라 이언 트 에 게 규칙 을 전송 하고 흐름 제어 데 이 터 를 끌 어 올 리 며 취 합 됩 니 다.
    소스 코드
    https://gitee.com/52itstyle/spring-boot-blog
    SpringBoot 2.0+알 리 바 바 Sentinel 동적 스 트림 제한 실전(소스 코드 첨부)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 2.0 Sentinel 동적 스 트림 제한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많이 응원 해 주세요!

    좋은 웹페이지 즐겨찾기