- vừa được xem lúc

Rate Limiter in System Design. Phần 1 - Khái niệm và ứng dụng

0 0 11

Người đăng: Kha Leo

Theo Viblo Asia

Rate Limiter là gì?

Một cách hiểu khái quát nhất, Rate Limiter giới hạn số lượng request truy cập một tài nguyên trên hệ thống từ một tác nhân (người dùng, trình duyệt, máy chủ khác...), trong một khoảng thời gian xác định.

Dựa trên một vài kỹ thuật rate limiter, khi vi phạm hoặc đạt một ngưỡng xác định, các requests đó sẽ bị chặn truy cập vào hệ thống.

Ba tác nhân mà mình nhấn mạnh ở trên: số lượng, tác nhân, thời gian cũng chính là Core Conceptscủa Rate Limiter. Cũng là trọng tâm trong bài viết hôm nay.

Rate Limiter với những ví dụ thực tiễn

Chắc hẳn các bạn cũng từng đối mặt hoặc chứng kiến một trong các trường hợp sau:

  • Mã PIN của thẻ đã nhập sai quá 5 lần, vui lòng liên hệ với ngân hàng để mở khoá thẻ

  • Ở một số ứng dụng, khi nhập sai mật khẩu quá nhiều lần bạn sẽ nhận thông báo, đại loại như: Số lượng yêu cầu vượt quá mức cho phép (như lỗi 2027 của một ứng dụng khá nổi tiếng ở VN)

  • Thông thường IP Việt Nam dễ bị block bởi các website thương mại của nước ngoài do các vụ tấn công trước đây

  • Hay khi yêu cầu nhận OTP quá nhiều trong 1 phút, bạn phải đợi hết thời gian quy định mới có thể yêu cầu một tin nhắn OTP mới

Nếu để ý kĩ các bạn sẽ thấy ví dụ 1&2 liên quan đến yếu tố số lượng, ví dụ 3 đề cập đến yếu tố tác nhân, và cuối cùng là yếu tố thời gian. Đây chính là trọng tâm của Rate Limiter, và một Rate Limiter đúng nghĩa thường kết hợp cả 3 yếu tố trên.

Tại sao lại cần Rate Limiter

Nói là cần nhưng thực chất tuỳ thuộc vào hệ thống của bạn, nếu ở quy mô vừa và nhỏ, nghiễm nhiên có hay không một hệ thống phục vụ cho các tác vụ trên không quá quan trọng.

Nhưng khi hệ thống đạt scale lớn hơn, chắc chắn các bạn cần đặt vấn đề và quan tâm hơn dành cho Rate Limiter, như với các vấn đề sau:

  • Bảo mật: kể đến đầu tiên phải là DOS và DDOS, còn đó brute force, credential stuffing attacks hay web scraping... chẳng hạn
  • Cân bằng tài nguyên: Đảm bảo server không bị quá tải, phân chia tài nguyên hợp lý / công bằng cho từng user trên hệ thống
  • Tiết kiệm chi phí: việc truy cập tài nguyên "có kiểm soát", góp phần giảm thiểu sự gia tăng về mặt chi phí hệ thống.

Một số thuật toán được sử dụng trong Rate Limiter

Có thể kể đến một số thuật toán thường dùng nhất như sau:

  • Leaky Bucket
  • Fixed Window Counter
  • Sliding Window Log
  • Sliding Window Counter

Trong bài viết Phần 2, mình sẽ nói chi tiết về các thuật toán này. Các bạn cùng theo dõi nhé

Cảm ơn mọi người đã xem bài viết

Xem thêm

Phần 2: Rate Limiter in System Design. Phần 2 - Các thuật toán thường được sử dụng

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Bài dịch] - Thiết Kế Hệ Thống Cho Hàng Triệu Người Dùng

Thiết kế hệ thống hỗ trợ hàng triệu người dùng là một thử thách không nhỏ, nó đòi hỏi sự cải tiến liên tục và không ngừng. Ở bài viết, chúng ta sẽ xây dựng một hệ thống hỗ trợ một người dùng và dần dầ

0 0 35

- vừa được xem lúc

[System design] - Redis vs Kafka vs RabbitMQ

Khi sử dụng giao tiếp không đồng bộ trong hệ thống microservice, phổ biến nhất đó là chúng ta sẽ sử dụng một message broker. Message broker đảm bảo giao tiếp giữa các microservice một cách đáng tin cậ

0 0 47

- vừa được xem lúc

Nx Workspace - Anh Cả trong việc xây dựng frontend architecture

Chào anh em bạn hữu gần xa. Rãnh rỗi quá không biết làm gì nên chia sẻ cho anh em xíu về System Design.

0 0 85

- vừa được xem lúc

Các Thuật Toán Thường Dùng Cho Bộ Giới Hạn Truy Cập

Trong bất kỳ hệ thống nào thì một bộ giới hạn truy cập cũng là một yêu cầu cần thiết đế đáp ứng các yêu cầu về bảo mật cũng như tính an toàn hệ thống. .

0 0 16

- vừa được xem lúc

[System design] - Redis High Availibility với Sentinel và Replication

Bối cảnh. Bạn dùng redis để đệm dữ liệu cho 1 ứng dụng chat.

0 0 26

- vừa được xem lúc

[System design] - Keepalived High Availability

Đối với những mô hình dịch vụ cần đảm bảo tính sẵn sàng cao (High Availability – HA), thì việc hệ thống bị down là không thể chấp nhận được. Hiện có rất nhiều phần mềm, giải pháp để đảm bảo tính HA ch

0 0 28