LoadShed
Last updated
Last updated
LoadShed 미들웨어는 Fiber를 위해 설계되었으며, 특정 로드 기준에 따라 요청을 차단하여 서버 로드를 관리하는데 도움을 줍니다.
참고: Go 1.19 이상 필요
이 미들웨어는 Fiber v2를 지원합니다.
Fiber 애플리케이션에서 LoadShed 미들웨어를 사용하려면 임포트하고 Fiber 앱에 적용하세요. 다음은 예제입니다:
Fiber의 LoadShed 미들웨어는 애플리케이션의 요구사항에 따라 로드 제한 동작을 조정할 수 있는 다양한 구성 옵션을 제공합니다.
Next
func(*fiber.Ctx) bool
true를 반환할 때 이 미들웨어를 건너뛰는 함수.
nil
Criteria
LoadCriteria
로드 제한 기준을 정의하기 위한 인터페이스.
&CPULoadCriteria{...}
LoadCriteria는 LoadShed 미들웨어의 인터페이스로, 시스템에서 로드를 제한할 시기를 결정하는 기준을 정의합니다. 이 인터페이스의 다른 구현은 다양한 메트릭과 알고리즘을 사용하여 시스템 성능을 유지하기 위해 들어오는 요청을 언제 그리고 어떻게 제한할지 결정할 수 있습니다.
CPULoadCriteria
는 CPU 로드를 메트릭으로 사용하여 요청을 제한할지 여부를 결정하는 LoadCriteria
인터페이스의 구현입니다.
Properties
LowerThreshold
float64
분수 형태의 하한 CPU 사용률 (0.0에서 1.0). CPU 사용률이 이 임계값을 초과하면 요청이 제한 대상으로 간주됩니다.
UpperThreshold
float64
분수 형태의 상한 CPU 사용률 (0.0에서 1.0). CPU 사용률이 이 임계값을 초과하면 모든 요청이 제한됩니다.
Interval
time.Duration
CPU 사용률을 평균화하여 결정을 내리는 시간 간격입니다.
Getter
CPUPercentGetter
CPU 사용률 퍼센트를 가져오는 인터페이스.
작동 방식
CPULoadCriteria
는 CPU 사용률을 기반으로 시스템의 로드를 결정하고 들어오는 요청을 제한할지 여부를 결정합니다. 다음과 같은 원칙으로 작동합니다:
CPU 사용률 측정: 지정된 간격 동안 CPU 사용률을 측정합니다.
임계값: 요청 제한을 시작할 시점을 결정하기 위해 LowerThreshold
와 UpperThreshold
값을 사용합니다.
비례 거부 확률:
LowerThreshold
미만: 시스템이 허용 가능한 로드 아래에 있는 것으로 간주되므로 요청이 거부되지 않습니다.
LowerThreshold
와 UpperThreshold
사이: CPU 사용률이 UpperThreshold
에 접근함에 따라 요청이 거부될 확률이 높아집니다. 이는 다음 공식을 사용하여 계산됩니다:
UpperThreshold
초과: 시스템 과부하를 방지하기 위해 모든 요청이 거부됩니다.
이 메커니즘은 시스템이 다양한 트래픽 조건에서 안정성과 성능을 유지하면서 로드를 적응적으로 관리할 수 있도록 합니다.
다음은 LoadShed 미들웨어의 LoadCriteria
에 대한 기본 구성입니다.