Rate Limiting
개요
Rate Limiting 정책은 API에 요청이 전송되는 속도를 제어하는 데 사용됩니다. 이는 남용을 방지하고, 트래픽 부하를 효율적으로 관리하며, 과도한 요청으로 인해 백엔드 서비스가 압도당하는 것을 보호하는 데 도움이 됩니다. 이 정책은 요청 한도를 관리하기 위해 다양한 Redis 저장소 옵션으로 구성할 수 있습니다.
Rate Limiting 정책을 구성함으로써 API 제공자는 트래픽을 효과적으로 관리하고, 공정한 자원 할당을 보장하며, 백엔드 서비스를 과도한 부하로부터 보호할 수 있습니다.
구성 세부정보
다음 표는 Rate Limiting 정책에 대해 사용할 수 있는 주요 구성 옵션을 설명합니다:
필드 이름 | 설명 | 예제 값 |
---|---|---|
Maximum requests per second | API에 대해 초당 허용되는 최대 요청 수를 정의합니다. | 100 |
Redis timeout (ms) | 밀리초 단위로 Redis 작업의 타임아웃 값을 설정합니다. | 2000 |
Redis DB Select | 속도 제한 카운터를 위한 Redis 저장소 유형을 선택할 수 있습니다. 옵션에는 APIMRedis, CustomRedis 또는 RedisCluster가 포함됩니다. | APIMRedis |
Redis 저장소 옵션
시스템의 요구 사항에 따라 사용자는 다음 Redis 저장소 유형 중에서 선택할 수 있습니다:
- APIMRedis (기본값) - 시스템의 내장 Redis 인스턴스를 사용합니다.
- CustomRedis - 사용자가 상세한 연결 매개변수를 지정하여 자신의 Redis 인스턴스를 구성할 수 있습니다.
- RedisCluster - 확장성과 내결함성을 위해 Redis 클러스터 설정을 사용합니다.
APIMRedis은 표준 사용 사례에 권장되며, CustomRedis 및 RedisCluster은 전용 Redis 구성이 필요한 고급 시나리오에 사용해야 합니다.
사용자 정의 Redis 구성 필드
CustomRedis을 선택하는 경우, 다음 추가 필드를 구성해야 합니다:
필드 이름 | 설명 | 예시 값 |
---|---|---|
redisHost | Redis 서버의 호스트 이름입니다. | 127.0.0.1 |
redisPort | Redis 연결에 사용되는 포트입니다. | 6379 |
redisPassword | Redis 인증을 위한 비밀번호입니다 (필요한 경우). | password |
redisDatabase | 사용할 Redis 데이터베이스를 지정합니다. | 1 |
redis_pool_size | 풀에 유지할 수 있는 Redis 연결의 수를 정의합니다. | 1000 |
redis_pool_backlog | 풀이 가득 찼을 때 대기할 수 있는 요청의 수를 지정합니다. | 30 |
Redis 클러스터 구성 필드
RedisCluster을 선택하는 경우, 추가 필드를 설정해야 합니다:
필드 이름 | 설명 | 예시 값 |
---|---|---|
redis_cluster_nodes | Redis 클러스터 노드의 주소입니다. | redis-cluster.apim:6379 |
redis_cluster_password | Redis 클러스터에 접근하기 위한 비밀번호입니다 (해당하는 경우). | password |
redis_cluster_name | Redis 클러스터의 이름을 정의합니다. | kong_redis_cluster |
redis_connect_timeout | Redis 연결을 설정하는 타임아웃 (ms 단위)입니다. | 1000 |
redis_read_timeout | Redis로부터 응답을 읽는 타임아웃 (ms 단위)입니다. | 1000 |
redis_send_timeout | Redis에 요청을 보내는 타임아웃 (ms 단위)입니다. | 1000 |
redis_pool_size | Redis 풀에서 할당할 수 있는 최대 연결 수입니다. | 1000 |
redis_pool_backlog | 풀이 가득 찼을 때 허용되는 대기 요청의 수입니다. | 30 |
redis_keepalive_timeout | 유휴 연결을 유지해야 하는 시간 (ms 단위)입니다. | 55000 |