Spinner Rate limit#

Rate Limiting là gì?#

Rate limit là tùy chọn tính năng của Sun Spinner cho phép người dùng cài đặt giới hạn lượng request tiếp nhận trên mỗi route. Trong đó route là một địa chỉ kết nối mà người dùng lựa chọn để expose dịch vụ ra ngoài Internet

Điều này có nghĩa số lượng request sẽ bị giới hạn trước khi container phải tiếp nhận và xử lý.

Tác dụng của Rate Limiting#

Trong một số trường hợp người dùng sẽ muốn giới hạn số lượng request có thể tiếp nhận của ứng dụng.

  • Ngăn chặn DDoS/brute force: Các hành vi này có điểm chung là tạo ra một lượng lớn request đột biến, khác hẳn hành vi truy cập hoặc sử dụng ứng dụng một cách bình thường. Khi hệ thống xảy ra DDoS hoặc các hành vi brute force qua request, hệ thống sẽ chặn các request vượt ngoài policy limit, giúp bảo vệ hệ thống và giảm nguy cơ hệ thống bị treo và downtime

  • Giảm nguy cơ data scraping: Thông thường các hệ thống không muốn bị khai thác dữ liệu ví dụ như các content về hình ảnh sản phẩm, nội dung bài viết. Một ví dụ điển hình cho Data Scraping là crawler data từ các website thương mại điện tử.

  • Giới hạn tài nguyên có hạn: Tài nguyên xử lý(CPU/RAM) của container hoặc performance của ứng dụng không đủ để xử lý một lượng lớn request.

Cách hoạt động#

Step

Giao diện rate limit của Sunteco Cloud.

Rate limit hoạt động dựa trên việc tracking địa chỉ IP và số lượng request từ địa chỉ đó, từ đó đưa ra quyết định có giới hạn các request hay không. Rate limit sẽ giải quyết các vấn đề cốt lõi

  • Giới hạn số lượng IP được truy cập đến hệ thống trong cùng một thời điểm (i)

  • Giới hạn số lượng max request từ mỗi IP gọi đến hệ thống cùng một thời điểm (rpi)

Để đơn giản hóa quá trình cài đặt Sun Spinner sẽ ẩn đi cả hai thông số này, người dùng chỉ cần cung cấp số lượng tổng request mà route chấp nhận trong một thời điểm.

Ví dụ: R là tổng số request route chấp nhận. R = i * rpi

Trong đó R là số lượng request người dùng nhập trên giao diện, rpi có giá trị bằng 10 do hệ thống mặc định, i sẽ được tính toán bằng R/rpi.

Với giá trị mặc định: R= 300 request/s , rpi = 10, i =30

Với những giới hạn truy cập như trên, nếu các request đến từ người dùng native vẫn có thể được hệ thống chấp nhận và xử lý, các request có dấu hiệu vi phạm sẽ bị chặn. Người dùng có thể tùy chọn tắt tính năng này nếu việc limit không phù hợp với kịch bản thực tế của ứng dụng.