SpringBoot 2.0+알 리 바 바 Sentinel 동적 흐름 제한 실전(소스 코드 첨부)
8665 단어 SpringBootSentinel동적 흐름 제한
마이크로 서비스 가 유행 하면 서 서비스 와 서비스 간 의 안정성 이 점점 중요 해 졌 다.Sentinel 은 유량 을 착안점 으로 하고 유량 제어,퓨즈 강등,시스템 부하 보호 등 여러 차원 에서 서비스의 안정성 을 보호 한다.
Sentinel 은 다음 과 같은 특징 을 가지 고 있다.
4.567917.풍부 한 응용 장면:Sentinel 은 알 리 바 바 가 최근 10 년 동안 쌍 십일 대 유량 을 촉진 하 는 핵심 장면 을 이 어 받 았 다.예 를 들 어 초 살(즉,돌발 유량 은 시스템 용량 이 감당 할 수 있 는 범위 에서 제어),정보 삭 봉 충전 곡,클 러 스 터 유량 통제,실시 간 으로 하 류 를 녹 여 응용 할 수 없다 는 등 이다4.567917.완 비 된 실시 간 모니터링:Sentinel 은 실시 간 모니터링 기능 을 동시에 제공한다.콘 솔 에서 응용 프로그램 에 접속 한 단일 기기 의 초 단위 데이터,심지어 500 대 이하 규모 의 클 러 스 터 의 총 운행 상황 을 볼 수 있 습 니 다4.567917.광범 위 한 개원 생태:Sentinel 은 상 자 를 열 면 바로 사용 할 수 있 는 다른 개원 구조/라 이브 러 리 와 의 통합 모듈 을 제공 합 니 다.예 를 들 어 Spring Cloud,Dubbo,gRPC 와 의 통합 입 니 다.해당 의존 도 를 도입 하고 간단 한 설정 을 하면 Sentinel 에 빠르게 접속 할 수 있 습 니 다
Sentinel 의 개원 생태:
Sentinel 은 두 부분 으로 나 뉜 다.
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 &
사용 자 는 다음 매개 변 수 를 통 해 설정 할 수 있 습 니 다.클 라 이언 트 설정
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 콘 솔 에 로그 인 합 니 다.다음 화면 을 보면 설정 이 성공 적 이라는 것 을 설명 합 니 다.
흐름 제한 설정,방금 설정 한 자원 이름 을 검색 하고 흐름 제어 기능 을 선택 하 십시오.
한도 값 파 라 메 터 를 입력 하 십시오.테스트 편 의 를 위해 2 를 직접 입력 하고 브 라 우 저 를 연속 으로 새로 고 칩 니 다.배경 에 다음 과 같은 오류 가 발생 하면 프론트 페이지 에 설명 설정 이 제대로 표시 되 지 않 습 니 다.
Caused by: com.alibaba.csp.sentinel.slots.block.flow.FlowException: null
물론 Sentinel 프로 세 스 기능 은 이렇게 간단 할 뿐만 아니 라 클 러 스 터 모델 도 지원 합 니 다.최종 판 10 만 블 로그 에서 우 리 는 클 러 스 터 중의 노드 를 위해 단기 평균 점 수 를 설정 할 수 있 고 전체적인 한도 값 도 설정 할 수 있 습 니 다.
생산 환경 에서 사용
Sentinel 핵심 라 이브 러 리 는 현재 생산 환경 에 사용 할 수 있 으 며,현재 알 리 바 바 를 제외 한 여러 기업 이 생산 환경 에서 사용 하고 있다.
규칙 관리 및 푸 시
네 이 티 브 버 전의 규칙 관 리 는 API 를 통 해 클 라 이언 트 에 규칙 을 전송 하고 메모리 에 직접 업데이트 하 며 생산 환경 에 직접 사용 할 수 없습니다.
그러나 Sentinel 은 확장 읽 기 데이터 원본 인 ReadableDataSource 를 제공 하고 규칙 센터 는 통일 적 으로 푸 시 합 니 다.클 라 이언 트 는 감청 기 를 등록 하 는 방식 으로 항상 변 화 를 감청 합 니 다.예 를 들 어 Nacos,Zookeeper 등 설정 센터 를 사용 합 니 다.이런 방식 은 더욱 좋 은 실시 성과 일치 성 을 보장 한다.
감시 하 다
Sentinel 은 자원 접근 의 초 단위 데 이 터 를 기록 하고 로 컬 로그 에 저장 합 니 다.Sentinel 콘 솔 은 Sentinel 클 라 이언 트 가 예약 한 HTTP API 를 통 해 초 단위 모니터링 로그 에서 모니터링 데 이 터 를 끌 어 와 취 합 할 수 있 습 니 다.
현재 Sentinel 콘 솔 에 서 는 모니터링 데이터 가 취 합 된 후 메모리 에 직접 존재 하 며 지속 되 지 않 고 최근 5 분 동안 의 모니터링 데이터 만 유지 하고 있 습 니 다.데이터 의 지속 화 를 감시 하 는 기능 이 필요 하 다 면 스스로 확장 하여 실현 할 수 있다.
주의 사항
처음에 문 서 를 열심히 읽 지 않 았 기 때문에 콘 솔 을 외부 네트워크 에 배 치 했 고 클 라 이언 트 가 내부 네트워크 에서 시작 하여 클 라 이언 트 가 접근 할 수 없 었 고 실시 간 링크 와 클 라 이언 트 링크 데 이 터 를 정상적으로 표시 할 수 없 었 습 니 다.
테스트 파트너 는 원본 모드 에서 클 라 이언 트 와 콘 솔 은 서로 방문 해 야 합 니 다.클 라 이언 트 는 콘 솔 에 정기 적 으로 심장 박동 요 구 를 보 냅 니 다.콘 솔 은 클 라 이언 트 에 게 규칙 을 전송 하고 흐름 제어 데 이 터 를 끌 어 올 리 며 취 합 됩 니 다.
소스 코드
https://gitee.com/52itstyle/spring-boot-blog
SpringBoot 2.0+알 리 바 바 Sentinel 동적 스 트림 제한 실전(소스 코드 첨부)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 2.0 Sentinel 동적 스 트림 제한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많이 응원 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.