n8n là một công cụ tự động hóa quy trình làm việc mạnh mẽ cho phép bạn kết nối các dịch vụ khác nhau và tự động hóa các quy trình phức tạp.
Nhưng điều gì sẽ xảy ra khi quy trình làm việc của bạn bắt đầu nhận được quá nhiều yêu cầu? Nếu không có giới hạn tốc độ phù hợp, bạn có thể làm quá tải các API của mình, đạt đến giới hạn dịch vụ bên ngoài hoặc thậm chí làm hỏng quy trình làm việc của mình.
Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách thêm giới hạn tốc độ mạnh mẽ vào quy trình công việc n8n của bạn bằng cách sử dụng Upstash Redis .
Đơn giản, hiệu quả và có thể mở rộng để đáp ứng nhu cầu của bạn.
Thách thức:Bảo vệ quy trình công việc n8n
Khi xây dựng quy trình công việc n8n xử lý các yêu cầu bên ngoài (như webhooks hoặc điểm cuối API), bạn cần xem xét:
- Ngăn chặn lạm dụng API :Ngăn chặn những người dùng độc hại áp đảo quy trình làm việc của bạn
- Bảo vệ dịch vụ bên ngoài :Tôn trọng giới hạn tốc độ của API bên thứ ba
- Quản lý tài nguyên :Ngăn chặn quy trình làm việc của bạn tiêu tốn quá nhiều tài nguyên
- Kiểm soát chi phí :Tránh các khoản phí không mong muốn từ các lệnh gọi API quá mức
Nhờ Upstash Redis và n8n, bạn có thể triển khai hệ thống giới hạn tốc độ chỉ với một vài nút. Bạn cũng sẽ được hưởng lợi từ tất cả lợi ích của Upstash Redis (xem tài liệu).
Bắt đầu với Upstash Redis trong n8n
Trước khi đi sâu vào triển khai, hãy kết nối tài khoản Upstash Redis của bạn với nút Redis trong n8n. Chúng tôi sẽ sử dụng thiết lập này trong suốt hướng dẫn này. (xem n8n với Upstash Redis)
Xây dựng quy trình giới hạn tỷ lệ
Hãy bắt đầu với việc triển khai, đi qua từng nút một.
Vâng, nó đơn giản như vậy thôi:

Bước 1:Kích hoạt webhook
Bắt đầu với Webhook cơ bản nút. Đây sẽ là điểm bắt đầu mô phỏng của chúng tôi cho các yêu cầu gửi đến.
Thiết lập nó với các cài đặt mặc định; chúng tôi sẽ sử dụng nó để thử nghiệm:

Bước 2:Truy cập nút
Bây giờ, hãy tạo Trường chỉnh sửa nút. Nút này lưu tên khóa Redis ở định dạngUSER_IP:REQUEST_MINUTE . Bạn có thể sửa đổi định dạng để đáp ứng nhu cầu của bạn. Trong ví dụ của chúng tôi, chúng tôi đang sử dụng giới hạn tốc độ dựa trên IP và giới hạn tốc độ áp dụng mỗi phút.

Bước 3:Redis Node với hành động tăng dần
Tạo Redis nút được kết nối với Upstash Redis như đã đề cập ở trên. Ở đây chúng tôi sử dụng trường chúng tôi đã đặt ở bước trước làm khóa Redis. Với hành động Tăng dần, khóa này được tạo theo yêu cầu đầu tiên và tăng lên một đơn vị trong các yêu cầu tiếp theo.
Đặt TTL thành 60 để phím biến mất sau một phút, giải phóng dung lượng.

Bước 4:Nếu nút có phản hồi có điều kiện
Thêm NẾU nút để xử lý các yêu cầu được phép và bị chặn. Một lần nữa, hãy sử dụng trường chúng tôi đặt ở Bước 2 dưới dạng tham số JSON để tìm nạp kết quả của Bước 3 . Kết quả đó là số lần người dùng đã gửi yêu cầu đến điểm cuối của chúng tôi. Trong ví dụ của chúng tôi, chúng tôi cho phép tối đa 4 yêu cầu và chặn sau đó cho đến phút tiếp theo.

Bước 5.1:Phản hồi thành công
Nếu không vượt quá giới hạn tốc độ, bạn có thể cho phép người dùng gọi đến điểm cuối của mình. Đặt logic thực tế của bạn đằng sau việc kiểm tra này để nó không bị choáng ngợp hay lạm dụng.
Vì mục đích thử nghiệm, chúng tôi trả về một thông báo thành công đơn giản.

Bước 5.2:Phản hồi thất bại
Khi vượt quá giới hạn, các yêu cầu sẽ bị chặn.
Vì mục đích thử nghiệm, chúng tôi trả về một thông báo lỗi đơn giản.

Kiểm tra quy trình làm việc
Gửi NHẬN yêu cầu tới URL được xác định trong webhook.
Trong vòng một phút, 4 yêu cầu đầu tiên sẽ đi theo đường dẫn vượt qua, trong khi các yêu cầu tiếp theo sẽ bị chặn và đi theo đường dẫn giới hạn.
Vậy là xong — bạn đã triển khai thành công giới hạn tốc độ trong n8n!
Tùy chỉnh và cải tiến
Cách triển khai cơ bản này mang lại cho bạn nền tảng vững chắc, có thể dễ dàng tùy chỉnh và cải thiện dựa trên nhu cầu cụ thể của bạn:
Điều chỉnh khoảng thời gian
- Giới hạn hàng giờ :Thay đổi TTL thành 3600 giây để giới hạn tốc độ hàng giờ
- Giới hạn hàng ngày :Đặt TTL thành 86400 giây cho giới hạn yêu cầu hàng ngày
- Cửa sổ tùy chỉnh :Điều chỉnh TTL theo bất kỳ khoảng thời gian nào phù hợp với trường hợp sử dụng của bạn
Các chiến lược hạn chế khác nhau
- Giới hạn dựa trên người dùng :Sử dụng ID người dùng từ
Authorizationtiêu đề thay vì địa chỉ IP cho các yêu cầu được xác thực - API cụ thể cho điểm cuối :Các giới hạn khác nhau cho các điểm cuối khác nhau dựa trên yêu cầu về tài nguyên.
- Giới hạn về mặt địa lý :Giới hạn tỷ lệ theo quốc gia hoặc khu vực sử dụng
X-Forwarded-ForhoặcCF-IPCountrytiêu đề
Xử lý lỗi
- Thử lại cơ chế :Upstash Redis cung cấp tính năng này theo mặc định.
- Mẫu cầu dao :Tạm thời vô hiệu hóa giới hạn tốc độ nếu Redis không thành công
Giám sát và phân tích
- Trang tổng quan thời gian thực :Giám sát các lần truy cập và vi phạm giới hạn tỷ lệ trong Bảng điều khiển Upstash
- Mẫu sử dụng :Phân tích các mẫu yêu cầu để tối ưu hóa giới hạn
- Hệ thống cảnh báo :Thiết lập thông báo khi lưu lượng truy cập tăng đột biến
- Chỉ số hiệu suất :Theo dõi thời gian phản hồi và tình trạng hệ thống
Kết luận
Cái hay của thuật toán này là tính đơn giản và khả năng mở rộng của nó. Bạn có thể bắt đầu với tính năng giới hạn dựa trên IP cơ bản và dần dần thêm các tính năng phức tạp như xác thực người dùng, giới hạn theo cấp độ và giám sát nâng cao khi nhu cầu của bạn phát triển.
Nền tảng tự động hóa quy trình làm việc n8n kết hợp với khả năng mạnh mẽ của Upstash Redis mang đến cho bạn khả năng không giới hạn để tạo ra các giải pháp giới hạn tốc độ mạnh mẽ, có thể mở rộng phù hợp với yêu cầu cụ thể của bạn.
Đọc thêm
Bạn muốn tìm hiểu sâu hơn về giới hạn tốc độ và n8n? Hãy xem các tài nguyên sau:
- Upstash Redis
- n8n
- Thuật toán