Chuyển tới nội dung chính

Rate Limiting

Tổng Quan

Chính sách Rate Limiting được sử dụng để kiểm soát tỷ lệ mà các yêu cầu được gửi đến một API. Điều này giúp ngăn chặn lạm dụng, quản lý tải lưu lượng hiệu quả và bảo vệ các dịch vụ backend khỏi bị quá tải bởi các yêu cầu quá mức. Chính sách này có thể được cấu hình với các tùy chọn lưu trữ Redis khác nhau để quản lý giới hạn yêu cầu.

Bằng cách cấu hình chính sách Rate Limiting, các nhà cung cấp API có thể quản lý lưu lượng hiệu quả, đảm bảo phân bổ tài nguyên công bằng và bảo vệ các dịch vụ backend khỏi tải quá mức.

Chi Tiết Cấu Hình

Bảng sau đây phác thảo các tùy chọn cấu hình chính có sẵn cho chính sách Giới Hạn Tỷ Lệ:

Tên TrườngMô TảGiá Trị Ví Dụ
Maximum requests per secondXác định số lượng yêu cầu tối đa được phép mỗi giây cho API.100
Redis timeout (ms)Đặt giá trị thời gian chờ cho các hoạt động Redis tính bằng mili giây.2000
Redis DB SelectCho phép chọn loại lưu trữ Redis cho các bộ đếm giới hạn tỷ lệ. Các tùy chọn bao gồm APIMRedis, CustomRedis hoặc RedisCluster.APIMRedis

Giới Hạn Tỷ Lệ

Tùy Chọn Lưu Trữ Redis

Tùy thuộc vào yêu cầu của hệ thống, người dùng có thể chọn từ các loại lưu trữ Redis sau:

  • APIMRedis (Mặc định) - Sử dụng phiên bản Redis tích hợp sẵn của hệ thống.
  • CustomRedis - Cho phép người dùng cấu hình phiên bản Redis của riêng họ bằng cách chỉ định các tham số kết nối chi tiết.
  • RedisCluster - Sử dụng thiết lập cụm Redis để mở rộng quy mô và chịu lỗi.

APIMRedis được khuyến nghị cho các trường hợp sử dụng tiêu chuẩn, trong khi CustomRedisRedisCluster nên được sử dụng cho các kịch bản nâng cao yêu cầu cấu hình Redis chuyên dụng.

Các Trường Cấu Hình Redis Tùy Chỉnh

Nếu chọn CustomRedis, các trường bổ sung sau đây phải được cấu hình:

Tên TrườngMô TảGiá Trị Ví Dụ
redisHostTên máy chủ của máy chủ Redis.127.0.0.1
redisPortCổng được sử dụng cho các kết nối Redis.6379
redisPasswordMật khẩu cho xác thực Redis (nếu cần).password
redisDatabaseXác định cơ sở dữ liệu Redis nào sẽ sử dụng.1
redis_pool_sizeXác định số lượng kết nối Redis có thể được giữ trong pool.1000
redis_pool_backlogXác định số lượng yêu cầu đang chờ có thể được xếp hàng khi pool đầy.30

Các Trường Cấu Hình Cụm Redis

Nếu chọn RedisCluster, các trường bổ sung phải được thiết lập:

Tên TrườngMô TảGiá Trị Ví Dụ
redis_cluster_nodesĐịa chỉ của nút cụm Redis.redis-cluster.apim:6379
redis_cluster_passwordMật khẩu để truy cập cụm Redis (nếu có).password
redis_cluster_nameXác định tên của cụm Redis.kong_redis_cluster
redis_connect_timeoutThời gian chờ để thiết lập các kết nối Redis (tính bằng ms).1000
redis_read_timeoutThời gian chờ để đọc phản hồi từ Redis (tính bằng ms).1000
redis_send_timeoutThời gian chờ để gửi yêu cầu đến Redis (tính bằng ms).1000
redis_pool_sizeSố lượng kết nối tối đa có thể được phân bổ trong pool Redis.1000
redis_pool_backlogSố lượng yêu cầu đang chờ được phép nếu pool đầy.30
redis_keepalive_timeoutXác định thời gian mà các kết nối nhàn rỗi nên được giữ sống (tính bằng ms).55000