높 은 병발 유량 제어 사고
2. 슬라이딩 창 제어
예 를 들 어 어떤 서 비 스 는 최대 초당 100 개의 요청 만 처리 할 수 있다.우 리 는 1 초 동안 미끄럼 창 을 설정 할 수 있 습 니 다. 창 에는 10 개의 칸 이 있 습 니 다. 각 칸 은 100 밀리초 이 고 100 밀리초 마다 이동 할 수 있 습 니 다. 이동 할 때마다 현재 서비스 요청 횟수 를 기록 해 야 합 니 다.메모리 에 10 번 의 횟수 를 저장 해 야 합 니 다.데이터 구조 링크 리스트 로 구현 할 수 있 습 니 다.칸 은 이동 할 때마다 한 번 씩 판단 합 니 다. 현재 방문 횟수 와 LinkedList 의 마지막 차 이 는 100 을 초과 하 는 지, 초과 하면 흐름 을 제한 해 야 합 니 다.
3. 물통
누 통 알고리즘 의 주요 개념 은 다음 과 같다.
어떤 경우 에는 누 통 알고리즘 이 네트워크 자원 을 효과적으로 사용 할 수 없다.누 출 통 의 누 출 속 도 는 고정된 매개 변수 이기 때문에 네트워크 에 자원 충돌 (정체 가 발생 하지 않 음) 이 존재 하지 않 더 라 도 누 출 통 알고리즘 은 특정한 단독 흐름 을 포트 속도 로 돌발 시 킬 수 없다.따라서 누 출 통 알고리즘 은 갑 작 스 러 운 특성 이 있 는 유량 에 효율 이 떨어진다.토 큰 통 알고리즘 은 갑 작 스 러 운 특성 을 가 진 트 래 픽 을 만족 시 킬 수 있다.일반적으로 누 출 통 알고리즘 과 토 큰 통 알고리즘 을 결합 하여 네트워크 트 래 픽 에 더욱 큰 통 제 를 제공 할 수 있다.
대형 인터넷 서비스 에서 핫 이 슈 트 래 픽 은 불 균형 성 이 있 기 때문에 일반적으로 누 출 통 알고리즘 을 사용 하 는 것 을 권장 하지 않 는 다.
4. 영패 통
누 출 통 의 출 수 속 도 는 일정 하 다 는 것 을 알 게 되면 순간 대 유량 이 있 으 면 대부분의 요청 이 버 려 진 다 는 뜻 이다.이 문 제 를 해결 하기 위해 토 큰 통 은 알고리즘 개선 을 진행 했다.
토 큰 을 만 드 는 속 도 는 일정 하지만 토 큰 을 가 져 오 라 고 요청 하 는 것 은 속도 제한 이 없다.이 는 순간 대 유량 에 직면 하여 이 알고리즘 은 짧 은 시간 안에 대량의 토 큰 을 받 을 수 있 고 토 큰 을 받 는 과정 이 큰 소모 가 되 지 않 는 다 는 뜻 이다.(토 큰 을 생산 하고 토 큰 을 소비 하 는 의미 가 있다)
토 큰 통 이 토 큰 을 받 지 못 하고 거절당 하 든 통 이 새 는 물이 넘 치 든 대부분 유량 의 정상 적 인 사용 을 확보 하기 위해 일부 유량 을 희생 하 는 것 은 합 리 적 인 것 이다. 만약 에 일부 유량 이 보장 해 야 한다 면 시스템 이 한계 에 이 르 러 끊 어 지고 얻 는 것 보다 잃 는 것 이 많 을 수 있다.
토 큰 통 알고리즘 에 따 르 면 통 에 있 는 토 큰 은 지속 적 으로 생 성 되 어 저장 되 어 있 습 니 다. 요청 이 있 을 때 통 에서 토 큰 을 받 아야 실행 할 수 있 습 니 다. 누가 토 큰 저장 을 지속 적 으로 생 성 합 니까?
하나의 해법 은 정시 퀘 스 트 를 열 고 정시 퀘 스 트 에서 토 큰 을 지속 적 으로 생 성 하 는 것 이다.이러한 문 제 는 시스템 자원 을 크게 소모 하 는 것 이다. 예 를 들 어 특정한 인 터 페 이 스 는 각 사용자 에 게 방문 빈도 제한 을 해 야 한다. 시스템 에 6W 사용자 가 존재 한다 고 가정 하면 기껏해야 6W 개의 정시 임 무 를 열 어 각 통 의 토 큰 수 를 유지 해 야 한다. 이런 비용 은 매우 크다.
또 다른 해법 은 지연 계산 으로 위
resync
함수 와 같다.이 함 수 는 토 큰 을 가 져 오기 전에 호출 됩 니 다. 현재 시간 이 nextFreeTicketMicros 보다 늦 으 면 이 기간 에 토 큰 을 얼마나 생 성 할 수 있 는 지 계산 하고 생 성 된 토 큰 을 토 큰 통 에 넣 고 데 이 터 를 업데이트 하 는 것 입 니 다.이렇게 되면 영 패 를 가 져 올 때 한 번 만 계산 하면 된다.구 글 이 오픈 한 Rate Limiter 의 실현 방향 을 참고 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.