Spring Boot 인터페이스 멱 등 플러그 인 용법 예시 분석

멱 등 개술
멱 등 성 은 원래 수학 적 개념 으로 공식:f(x)=f(f(x))가 성립 할 수 있 는 수학 적 성질 이 더 라 도.프로 그래 밍 분야 에 사용 하면 같은 시스템 에 대해 같은 조건 을 사용 하고 한 번 의 요청 과 중복 되 는 여러 번 의 요청 이 시스템 자원 에 미 치 는 영향 이 일치 하 다 는 뜻 이다.
멱 등 성 은 분포 식 시스템 디자인 에서 매우 중요 한 개념 이다.이런 성질 을 가 진 인 터 페 이 스 는 디자인 할 때 항상 이러한 이념 을 가진다.인 터 페 이 스 를 호출 하 는 데 이상 이 발생 하고 반복 적 으로 시도 할 때 시스템 이 감당 할 수 없 는 손실 을 초래 하기 때문에 이런 현상의 발생 을 막 아야 한다.
멱 등 을 실현 하 는 방식 은 매우 많 으 며,현재 요청 토 큰 체 제 를 바탕 으로 적용 범위 가 비교적 넓다.그 핵심 사상 은 모든 조작 에 유일한 증 거 를 만 드 는 것 이다.즉,token 이다.하나의 token 은 작업 의 모든 단계 에서 한 번 의 실행 권 만 있 고 실행 에 성공 하면 실행 결 과 를 저장 합 니 다.중 복 된 요청 에 대해 같은 결 과 를 되 돌려 줍 니 다《멱 등 성 평론》을 참고 하 다.
멱 등 처리 가입 의존 실현
 com.pig4cloud.plugin idempotent-spring-boot-starter 0.0.1
Redis 설정
링크 는 기본적으로 설정 하지 않 아 도 됩 니 다.이론 은 지원redisson-spring-boot-starter모든 배치

spring:
 redis:
  host: 127.0.0.1
  port: 6379
인터페이스

@Idempotent(key = "#key", expireTime = 10, info = "      ")
@GetMapping("/test")
public String test(String key) {
  return "success";
}
독립 스 레 드 10 개 테스트 요청

보기 결 과 를 실행 하면 10 개의 요청 이 한 개 만 성공 합 니 다.

백 스테이지 이상 보고 오류,9 개 이상 보고 오류 가 예상 을 만족 시 킵 니 다.

idempotent 설명
  • key:멱 등 작업 의 유일한 표 지 는 spring el 표현 식 을 사용 하여\#로 방법 적 인 파 라 메 터 를 참조 합 니 다.비어 있 으 면 현재 url+args 를 요청 하 는 유일한 표지 입 니 다
  • expireTime:유효기간 기본 값:1 유효기간 은 프로그램 실행 시간 보다 커 야 합 니 다.그렇지 않 으 면 요청 이 들 어 올 수 있 습 니 다
  • timeUnit:시간 단위 기본 값:s(초)
  • info:멱 등 실패 알림 정보,사용자 정의
  • delKey:업무 완료 후 key true 를 삭제 할 지 여부:false 삭제:삭제 하지 않 음멱 등 처리 설계 원리
    프로 세 스 디자인 참조
    1.요청 이 시작 되 기 전에 key 조회 에 따라 결 과 를 찾 을 수 있 습 니 다.오류 가 발생 했 습 니 다.결 과 를 찾 을 수 없습니다:key-value-expireTime key=ip+url+args 에 저장 합 니 다.
    2.요청 이 끝 난 후 키 를 삭제 합 니 다.키 가 존재 하 든 없 든 삭제 할 지 설정 할 수 있 습 니 다.
    3.expireTime 만 료 시간,요청 카드 가 죽 는 것 을 방지 하고 계속 막 힐 것 입 니 다.만 료 시간 을 초과 하면 자동 으로 만 료 시간 이 업무 수행 시간 보다 많 고 대충 평가 해 야 합 니 다.
    4.이 방안 은 인터페이스 요청 차원 에서 직접 자 릅 니 다.
    5.기한 이 지난 시간 은 업무 수행 시간 보다 커 야 한다.그렇지 않 으 면 업무 요청 1 이 들 어 와 서 아직 실행 중이 다.전단 에 마스크 를 하지 않 았 거나 사용자 가 페이지 를 넘 긴 후에 다시 중복 요청 을 한다.2.업무 차원 에서 볼 때 결 과 는 기대 에 부합 되 지 않 는 다.
    6.delKey=false 를 권장 합 니 다.업무 가 완료 되 더 라 도 키 를 삭제 하지 않 고 expireTime 을 강제로 잠 그 는 시간 입 니 다.예방 5 의 상황 발생.
    7.사고 실현:같은 요청 ip 과 인터페이스,같은 매개 변수 에 대한 요청 은 expireTime 에서 여러 번 요청 하면 한 번 만 성공 할 수 있 습 니 다.
    8.페이지 커버,데이터베이스 차원 의 유일한 색인,먼저 조회 하고 추가 하 는 등 처리 방식 을 모두 처리 해 야 합 니 다.
    9.이 주 해 는 멱 등에 만 사용 되 며 잠 금 에 사용 되 지 않 습 니 다.100 개 와 이런 압력 측정 을 병행 하면 문제 가 발생 할 수 있 습 니 다.이런 장면 에서 도 의미 가 없습니다.실제 사용자 도 1s 또는 3s 내 에 50 개 또는 100 개의 중복 요 구 를 수 동 으로 보 냈 거나 약 한 네트워크 에서 100 개의 중복 요 구 를 하지 않 습 니 다.
    총결산
    pig-mesh/pig
    pig-mesh/idempotent-spring-boot-starter
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기