n8n เป็นเครื่องมืออัตโนมัติเวิร์กโฟลว์ที่ทรงพลังที่ช่วยให้คุณเชื่อมต่อบริการต่างๆ และทำให้กระบวนการที่ซับซ้อนเป็นอัตโนมัติ
แต่จะเกิดอะไรขึ้นเมื่อเวิร์กโฟลว์ของคุณเริ่มได้รับคำขอมากเกินไป หากไม่มีการจำกัดอัตราที่เหมาะสม คุณอาจใช้งาน API มากเกินไป ใช้บริการเกินขีดจำกัดภายนอก หรือแม้แต่เวิร์กโฟลว์ของคุณขัดข้องได้
ในโพสต์นี้ เราจะแสดงวิธีเพิ่มอัตราที่มีประสิทธิภาพซึ่งจำกัดให้กับเวิร์กโฟลว์ n8n ของคุณโดยใช้ Upstash Redis .
เรียบง่าย มีประสิทธิภาพ และขยายได้เพื่อตอบสนองความต้องการของคุณ
ความท้าทาย:การปกป้องเวิร์กโฟลว์ n8n
เมื่อสร้างเวิร์กโฟลว์ n8n ที่จัดการคำขอภายนอก (เช่น webhooks หรือจุดสิ้นสุด API) คุณต้องพิจารณา:
- การป้องกันการใช้ API ในทางที่ผิด :หยุดผู้ใช้ที่เป็นอันตรายไม่ให้ล้นขั้นตอนการทำงานของคุณ
- การคุ้มครองบริการภายนอก :เคารพขีดจำกัดอัตราของ API บุคคลที่สาม
- การจัดการทรัพยากร :ป้องกันไม่ให้เวิร์กโฟลว์ของคุณใช้ทรัพยากรมากเกินไป
- การควบคุมต้นทุน :หลีกเลี่ยงค่าใช้จ่ายที่ไม่คาดคิดจากการเรียก API มากเกินไป
ด้วย Upstash Redis และ n8n คุณสามารถใช้งานระบบจำกัดอัตราด้วยโหนดเพียงไม่กี่โหนดได้ นอกจากนี้คุณยังจะได้รับประโยชน์จากข้อดีทั้งหมดของ Upstash Redis (ดูเอกสาร)
เริ่มต้นใช้งาน Upstash Redis ใน n8n
ก่อนที่เราจะเจาะลึกถึงการใช้งาน ให้เชื่อมต่อบัญชี Upstash Redis ของคุณกับโหนด Redis ใน n8n เราจะใช้การตั้งค่านี้ตลอดทั้งคู่มือนี้ (ดู n8n พร้อม Upstash Redis)
การสร้างขั้นตอนการทำงานที่จำกัดอัตรา
มาเริ่มกันที่การใช้งาน โดยศึกษาโหนดทีละรายการ
ใช่ มันง่ายอย่างนั้น:

ขั้นตอนที่ 1:ทริกเกอร์ Webhook
เริ่มต้นด้วย Webhook พื้นฐาน โหนด นี่จะเป็นจุดเริ่มต้นจำลองของเราสำหรับคำขอที่เข้ามา
ตั้งค่าด้วยการตั้งค่าเริ่มต้น เราจะใช้สำหรับการทดสอบ:

ขั้นตอนที่ 2:ไปที่โหนด
ตอนนี้ ให้สร้าง ช่องแก้ไข โหนด โหนดนี้จัดเก็บชื่อคีย์ Redis ในรูปแบบUSER_IP:REQUEST_MINUTE . คุณสามารถแก้ไขรูปแบบให้ตรงตามความต้องการของคุณได้ ในตัวอย่างของเรา เรากำลังใช้การจำกัดอัตราตาม IP และใช้การจำกัดอัตราต่อนาที

ขั้นตอนที่ 3:โหนด Redis พร้อมการดำเนินการแบบเพิ่ม
สร้าง Redis โหนดเชื่อมต่อกับ Upstash Redis ตามที่กล่าวไว้ข้างต้น ที่นี่เราใช้ฟิลด์ที่เราตั้งค่าไว้ในขั้นตอนก่อนหน้าเป็นคีย์ Redis ด้วยการดำเนินการที่เพิ่มขึ้น คีย์นี้จะถูกสร้างขึ้นในคำขอแรกและเพิ่มขึ้นทีละหนึ่งคำขอในครั้งต่อๆ ไป
ตั้งค่า TTL เป็น 60 เพื่อให้คีย์หายไปในหนึ่งนาที เพื่อเพิ่มพื้นที่ว่าง

ขั้นตอนที่ 4:หากโหนดมีการตอบสนองแบบมีเงื่อนไข
เพิ่ม IF โหนดเพื่อจัดการคำขอที่ได้รับอนุญาตเทียบกับคำขอที่ถูกบล็อก อีกครั้ง ให้ใช้ฟิลด์ที่เราตั้งค่าไว้ที่ ขั้นตอนที่ 2 เป็นพารามิเตอร์ JSON เพื่อดึงผลลัพธ์ของ ขั้นตอนที่ 3 . ผลลัพธ์นั้นคือการนับจำนวนครั้งที่ผู้ใช้ส่งคำขอไปยังตำแหน่งข้อมูลของเรา ในตัวอย่างของเรา เราอนุญาตคำขอได้สูงสุด 4 รายการและบล็อกหลังจากนั้นจนถึงนาทีถัดไป

ขั้นตอนที่ 5.1:การตอบสนองความสำเร็จ
หากไม่เกินขีดจำกัดอัตรา คุณสามารถอนุญาตให้ผู้ใช้โทรหาตำแหน่งข้อมูลของคุณได้ ใส่ตรรกะที่แท้จริงของคุณไว้เบื้องหลังการตรวจสอบนี้ เพื่อที่จะไม่ถูกครอบงำหรือถูกละเมิด
เพื่อวัตถุประสงค์ในการทดสอบ เราจะส่งคืนข้อความแสดงความสำเร็จที่เรียบง่าย

ขั้นตอน 5.2:การตอบสนองล้มเหลว
เมื่อเกินขีดจำกัด คำขอจะถูกบล็อก
เพื่อวัตถุประสงค์ในการทดสอบ เราจะส่งคืนข้อความแสดงข้อผิดพลาดแบบง่าย

ทดสอบขั้นตอนการทำงาน
ส่ง รับ ร้องขอไปยัง URL ที่กำหนดไว้ใน webhook
ภายในหนึ่งนาที คำขอ 4 คำขอแรกจะติดตามเส้นทางการส่งผ่าน ในขณะที่คำขอที่ตามมาจะถูกบล็อกและติดตามเส้นทางที่จำกัด
เพียงเท่านี้ — คุณใช้งานการจำกัดอัตราใน n8n สำเร็จแล้ว! ป>
การปรับแต่งและการปรับปรุง
การใช้งานขั้นพื้นฐานนี้ให้รากฐานที่มั่นคงแก่คุณ ซึ่งสามารถปรับแต่งและปรับปรุงได้อย่างง่ายดายตามความต้องการเฉพาะของคุณ:
การปรับกรอบเวลา
- ขีดจำกัดรายชั่วโมง :เปลี่ยน TTL เป็น 3600 วินาทีสำหรับการจำกัดอัตรารายชั่วโมง
- ขีดจำกัดรายวัน :ตั้งค่า TTL เป็น 86400 วินาทีสำหรับขีดจำกัดคำขอรายวัน
- หน้าต่างแบบกำหนดเอง :ปรับ TTL ตามระยะเวลาที่เหมาะกับกรณีการใช้งานของคุณ
กลยุทธ์การจำกัดที่แตกต่างกัน
- การจำกัดตามผู้ใช้ :ใช้ ID ผู้ใช้จาก
05ส่วนหัวแทนที่อยู่ IP สำหรับคำขอตรวจสอบสิทธิ์ - จุดสิ้นสุด API เฉพาะ :ขีดจำกัดที่แตกต่างกันสำหรับปลายทางที่แตกต่างกันตามความต้องการทรัพยากร
- ข้อจำกัดทางภูมิศาสตร์ :ขีดจำกัดอัตราตามประเทศหรือภูมิภาคโดยใช้
14หรือ22รหัส> ส่วนหัว
การจัดการข้อผิดพลาด
- กลไกการลองอีกครั้ง :Upstash Redis จัดเตรียมสิ่งนี้ไว้ตามค่าเริ่มต้น
- รูปแบบเซอร์กิตเบรกเกอร์ :ปิดใช้งานการจำกัดอัตราชั่วคราวหาก Redis ล้มเหลว
การตรวจสอบและการวิเคราะห์
- แดชบอร์ดแบบเรียลไทม์ :ตรวจสอบการเข้าถึงขีดจำกัดอัตราและการละเมิดใน Upstash Console
- รูปแบบการใช้งาน :วิเคราะห์รูปแบบคำขอเพื่อเพิ่มประสิทธิภาพขีดจำกัด
- ระบบแจ้งเตือน :ตั้งค่าการแจ้งเตือนเมื่อมีการเข้าชมเพิ่มขึ้นผิดปกติ
- ตัวชี้วัดประสิทธิภาพ :ติดตามเวลาตอบสนองและความสมบูรณ์ของระบบ
บทสรุป
ความงดงามของอัลกอริธึมนี้คือความเรียบง่ายและความสามารถในการขยายได้ คุณสามารถเริ่มต้นด้วยการจำกัดตาม IP พื้นฐานและค่อยๆ เพิ่มคุณสมบัติที่ซับซ้อน เช่น การตรวจสอบสิทธิ์ผู้ใช้ ขีดจำกัดระดับชั้น และการตรวจสอบขั้นสูงตามความต้องการของคุณที่เปลี่ยนแปลงไป
แพลตฟอร์มอัตโนมัติของเวิร์กโฟลว์ n8n รวมกับความสามารถอันทรงพลังของ Upstash Redis มอบความเป็นไปได้ไม่จำกัดในการสร้างโซลูชันการจำกัดอัตราที่แข็งแกร่งและปรับขนาดได้ ซึ่งปรับให้เหมาะกับความต้องการเฉพาะของคุณ
การอ่านเพิ่มเติม
ต้องการเจาะลึกเกี่ยวกับการจำกัดอัตราและ n8n หรือไม่? ตรวจสอบแหล่งข้อมูลเหล่านี้:
- สุดยอด Redis
- n8n
- อัลกอริทึม