נתוני ליבהממשקי API

הגבלת קצב

הגבלות קצב אטומיות בצד השרת. GCRA בפקודה אחת, או מגבילים בשם עם חלון נע, token bucket או leaky bucket. בלי Lua.

פקודה אטומית לכל בקשה
1
אלגוריתמים
4
סקריפטי Lua
0
צעד 1 מתוך 5
מאושר

10 בקשות בדקה למשתמש 42. התשובה אומרת מאושר, המגבלה וכמה נותרו.

סשן לדוגמהplaying
# מאושר
hotkv> GCRA.LIMIT ratelimit:user:42 60000 10
1) (integer) 0
2) (integer) 10
3) (integer) 9
4) (integer) -1
5) (integer) 6000

הדגמה מונפשת עם פקודות HotKV אמיתיות ותשובות לדוגמה. לחצו על כל שלב כדי לעבור אליו. הפקודות והתשובות נשארות באנגלית, בדיוק כפי שמקלידים ורואים ב-HotKV.

הבעיה

API בלי מגבלות הוא לקוח אחד שמתנהג לא יפה מהשבתה. ביצוע הבדיקה בקוד האפליקציה אומר קריאה, חישוב וכתיבה, ובקשות מקבילות חומקות בין השלבים. צוותים רבים מוצאים את עצמם מתחזקים סקריפט Lua רק כדי להפוך את זה לאטומי.

איך HotKV מטפל בזה

GCRA.LIMIT מחליט ורושם בצעד אחד, כך ששני לקוחות מקבילים לא יכולים לעבור על אותו מצב, והמגבלה מתמלאת בחלקות במקום להתאפס בגבולות חלונות. עבור מגבלות שמנהלים בשם, RATELIMIT.CREATE מגדיר מגביל עם חלון נע, token bucket או leaky bucket עם סטטיסטיקות על מה שאישר ודחה.

צעד אחר צעד

מה קורה, פקודה אחר פקודה

  1. 01

    מאושר

    10 בקשות בדקה למשתמש 42. התשובה אומרת מאושר, המגבלה וכמה נותרו.

    GCRA.LIMIT ratelimit:user:42 60000 10
  2. 02

    פרץ מבוט

    בוט הגרידה מנצל את מכסת ההתפרצות שלו ואז נאמר לו כמה זמן להמתין. בקשה שנדחתה לא משנה דבר.

    GCRA.LIMIT ratelimit:bot:7 60000 10
  3. 03

    מגביל בשם לתוכנית

    לקוחות בתוכנית החינמית מקבלים 100 בקשות בדקה בחלון נע.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    בקשה משוקללת

    נקודת קצה של ייצוא עולה 20 יחידות, ולכן היא מנצלת יותר מהמכסה.

    RATELIMIT.CHECK free_plan customer:881 COST 20
  5. 05

    רואים מה המגביל עשה

    הגדרות, מפתחות במעקב וסך הבקשות שאושרו ונדחו.

    RATELIMIT.STATS free_plan
איפה זה מתאים

תרחישים מהעולם האמיתי

ממשקי API ציבוריים

כל מפתח API מקבל מגבלה לפי תוכנית, עם התפרצויות ללקוחות שמתנהגים יפה ו-Retry-After מדויק לשאר.

טפסי התחברות והרשמה

ניסיונות לכל IP ולכל חשבון מוגבלים כדי להאט credential stuffing.

קריאות יוצאות

קריאות ל-API של שותף או לספק LLM נשמרות מתחת למכסה שלהם בכל העובדים בצי.

מובנה

מה מקבלים

GCRA בפקודה אחת

מילוי חלק עם התפרצויות, בדיקה ועדכון אטומיים, וזמן ניסיון חוזר בדחייה.

GCRA.LIMITGCRA.RESET

מגבילים בשם

חלון נע, token bucket או leaky bucket, שנוצרים פעם אחת ונבדקים לכל מפתח.

RATELIMIT.CREATERATELIMIT.CHECK

בקשות משוקללות

קריאות יקרות יכולות להיחשב כמה בקשות. GCRA.LIMIT לוקח ספירה, RATELIMIT.CHECK לוקח COST.

COST

סטטיסטיקות

סך המאושרות והנדחות לכל מגביל.

RATELIMIT.STATS

שאלות נפוצות

האם אני צריך סקריפט Lua להגבלת קצב?

לא. גם GCRA.LIMIT וגם RATELIMIT.CHECK מבצעים את כל הבדיקה כפקודה אטומית אחת.

במה כדאי להשתמש?

GCRA.LIMIT לא דורש הגדרה ועובד בכל תוכנית. מגבילים בשם מסוג RATELIMIT.* מוסיפים בחירה של אלגוריתם וסטטיסטיקות, והם חלק מתוכניות Performance ו-Scale.

כמה עולה בקשה שנדחתה?

כלום. קריאת GCRA שנדחתה משאירה את המגביל ללא שינוי, כך שלקוח שמנסה שוב לא נענש יותר.

שימושים קשורים

נסו על עומס העבודה שלכם

HotKV מדבר את פרוטוקול Redis, ולכן אפשר להפנות אליו לקוח קיים ולהריץ את אותן פקודות.