Rate Limiting
Tổng Quan
Chính sách Rate Limiting được sử dụng để kiểm soát tốc độ 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 một cách 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 một cách 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ốc Độ:
Tên Trường | Mô Tả | Giá Trị Ví Dụ |
---|---|---|
Maximum requests per second | Định nghĩa 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 Select | Cho phép chọn loại lưu trữ Redis cho các bộ đếm giới hạn tốc độ. Các tùy chọn bao gồm APIMRedis, CustomRedis hoặc RedisCluster. | APIMRedis |
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 CustomRedis và RedisCluster 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ường | Mô Tả | Giá Trị Ví Dụ |
---|---|---|
redisHost | Tên máy chủ của máy chủ Redis. | 127.0.0.1 |
redisPort | Cổng được sử dụng cho các kết nối Redis. | 6379 |
redisPassword | Mật khẩu cho xác thực Redis (nếu cần). | password |
redisDatabase | Chỉ định cơ sở dữ liệu Redis nào sẽ sử dụng. | 1 |
redis_pool_size | Định nghĩa số lượng kết nối Redis có thể được giữ trong pool. | 1000 |
redis_pool_backlog | Chỉ đị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 Cluster Redis
Nếu chọn RedisCluster, các trường bổ sung phải được thiết lập:
Tên Trường | Mô Tả | Giá Trị Ví Dụ |
---|---|---|
redis_cluster_nodes | Địa chỉ của nút cluster Redis. | redis-cluster.apim:6379 |
redis_cluster_password | Mật khẩu để truy cập cluster Redis (nếu có). | password |
redis_cluster_name | Định nghĩa tên của cluster Redis. | kong_redis_cluster |
redis_connect_timeout | Thời gian chờ để thiết lập các kết nối Redis (tính bằng ms). | 1000 |
redis_read_timeout | Thời gian chờ để đọc phản hồi từ Redis (tính bằng ms). | 1000 |
redis_send_timeout | Thời gian chờ để gửi yêu cầu đến Redis (tính bằng ms). | 1000 |
redis_pool_size | Số lượng kết nối tối đa có thể được phân bổ trong pool Redis. | 1000 |
redis_pool_backlog | Số lượng yêu cầu đang chờ được phép nếu pool đầy. | 30 |
redis_keepalive_timeout | Định nghĩa 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 |