Hogyan valósítsuk meg az API-szabályozást?

Jan 01, 2026

Hagyjon üzenetet

Szia! API-szolgáltatóként már egy ideje benne vagyok a játékban, és egy sikeres API-szolgáltatás futtatásának egyik legfontosabb szempontja az API-szabályozás megvalósítása. Ebben a blogbejegyzésben megosztom veled, hogyan lehet hatékonyan megvalósítani az API-szabályozást.

Mi az API Throttling?

Először is beszéljünk arról, hogy mi az API-szabályozás. Az API-szabályozás egy olyan technika, amellyel szabályozható az ügyfelek API-hoz való hozzáférési sebessége. Korlátozza az ügyfél által adott időkereten belül benyújtható kérések számát. Ez segít megelőzni a visszaéléseket, megvédeni a szerver erőforrásait, és biztosítja a méltányos használatot minden felhasználó számára.

Miért fontos az API-szabályozás?

Számos oka van annak, hogy miért fontos az API-szabályozás. Kezdetben segít megelőzni a szolgáltatásmegtagadási (DoS) támadásokat. A rosszindulatú felhasználók megpróbálhatják elárasztani az API-t a szerverek túlterhelésére és a szolgáltatás megzavarására irányuló kérésekkel. A korlátozás korlátozza az általuk benyújtható kérések számát, megnehezítve számukra az ilyen támadások végrehajtását.

Másodszor, biztosítja a szerver erőforrásainak hatékony felhasználását. Ha sok kliens küld egyszerre túl sok kérést, akkor a szerverek túlterheltté válhatnak, ami lassú válaszidőhöz vagy akár összeomláshoz vezethet. A kérések korlátozásával kezelheti a szerverek terhelését, és az API zökkenőmentesen futhat.

Végül pedig a méltányos használatot segíti elő minden ügyfél között. Folytatás nélkül egyes kliensek monopolizálhatják az API-erőforrásokat, mások gyenge teljesítményt hagyva ezzel. A korlátozás biztosítja, hogy minden ügyfél méltányos részesedést kapjon a rendelkezésre álló erőforrásokból.

Az API-szabályozás megvalósítása

1. Token Bucket algoritmus

Az API-szabályozás egyik legnépszerűbb algoritmusa a token bucket algoritmus. Így működik:

Képzeld el, hogy van egy vödör, amelybe bizonyos számú jelző fér. Minden token egy ügyfél által benyújtható kérést jelent. Rendszeres időközönként új tokeneket adnak a vödörhöz a maximális kapacitásig. Amikor egy ügyfél kérelmet nyújt be, egy tokent kell "költenie" a vödörből. Ha nem maradt token a vödörben, a kérést vagy elutasítja, vagy sorba állítja, amíg egy token elérhetővé nem válik.

Íme egy egyszerű Python - pszeudokód a token vödör algoritmus megvalósításához:

Fenofibrate丨CAS 49562-28-9Hydrocortisone Acetate丨CAS 50-03-3

class TokenBucket: def __init__(self, kapacitás, sebesség): self.capacity = kapacitás self.rate = rate self.tokens = kapacitás self.last_update = time.time() def get_tokens(self): now = time.time() # Számítsa ki a legutóbbi frissítés óta hozzáadott tokenek számát new_tokens) = self.nupraowte self. self.tokens = min(self.capacity, self.tokens + new_tokens) self.last_update = most return self.tokens def eat(self, tokens): if self.get_tokens() >= tokens: self.tokens -= tokens return True return False

Ebben a kódbankapacitása tokenek maximális száma, amelyet a vödör tárolhat, ésarányaz a sebesség, amellyel másodpercenként új tokeneket adnak a vödörhöz.

2. Rögzített ablak algoritmus

A rögzített ablak algoritmus egy másik egyszerű módja az API-szabályozás megvalósításának. Ezzel az algoritmussal az időt rögzített intervallumokra osztja fel (pl. percenként vagy óránként). Minden egyes intervallumnál nyomon követheti az ügyfél által benyújtott kérések számát. Ha a kérelmek száma túllép egy előre meghatározott korlátot ezen az intervallumon belül, a következő kérések elutasításra kerülnek.

Így implementálhatja Pythonban:

időosztály importálása FixedWindowThrottler: def __init__(self, limit, window): self.limit = limit self.window = ablak self.request_count = 0 self.window_start = time.time() def allow_request(self): most = time.time() if most - self.window_start #.request thewindowcount #reque. self.window_start = most if self.request_count < self.limit: self.request_count += 1 return True return False

Ebben a kódbanhatáraz a maximális számú kérelmet, amelyet az ügyfél benyújthat aablakidőkeret.

3. Csúszóablak algoritmusa

A csúszóablak algoritmus a rögzített ablak algoritmus fejlettebb változata. Ahelyett, hogy az időt rögzített intervallumokra osztaná fel, csúszó ablakot használ a kérések nyomon követésére. Ez azt jelenti, hogy az ablak folyamatosan mozog, és figyelembe veszi a közelmúltban érkezett kéréseket.

A csúszóablak algoritmus megvalósításához használhat egy adatstruktúrát, például egy kör alakú puffert az egyes kérések időbélyegeinek tárolására. Ezután ellenőrizze, hogy a csúszóablakon belüli kérések száma meghaladja-e a korlátot.

gyűjteményekből import deque import időosztály SlidingWindowThrottler: def __init__(self, limit, window): self.limit = limit self.window = ablak self.request_timestamps = deque() def allow_request(self): now = time.time() # Távolítsa el a régi kéréseket a deque-ből, miközben self.mpsst és -time most self.request_timestamps[0] > self.window: self.request_timestamps.popleft() if len(self.request_timestamps) < self.limit: self.request_timestamps.append(now) return True return False

Throttling megvalósítása az API-ban

Miután kiválasztott egy algoritmust, integrálnia kell az API-jába. Íme az általános lépések:

1. Azonosítsa az Ügyfelet

Meg kell találnia a módját, hogy azonosítsa az API-jához kérelmező ügyfeleket. Ez történhet API-kulcson, felhasználói azonosítón vagy más egyedi azonosítón keresztül.

2. Tárolja a fojtószelep információit

Minden egyes ügyfél kérési előzményeiről információkat kell tárolnia. Ez lehet egy adatbázisban, egy gyorsítótárban (például a Redisben) vagy egy memóriabeli adatszerkezetben. Ha például a token-gyűjtő-algoritmust használja, akkor tárolnia kell az egyes ügyfelek tárolójában lévő tokenek számát.

3. Ellenőrizze a fojtószelep határértékeit

A kérés feldolgozása előtt ellenőrizze, hogy az ügyfél túllépte-e a fojtószelep-korlátokat. Ha igen, küldjön megfelelő hibaválaszt (pl. 429 Túl sok kérés állapotkód). Ha még nem, dolgozza fel a kérést a szokásos módon, és ennek megfelelően frissítse a fojtószelep-információkat.

Példák az API-szabályozásra a valós világbeli API-kban

Nézzünk néhány példát a való világból. Például a Twitter API szigorú szabályozási korlátokkal rendelkezik. A különböző típusú végpontok eltérő sebességkorlátokkal rendelkeznek. Például a keresési API korlátja 450 kérés 15 perces ablakonként a normál felhasználók számára.

Egy másik példa a Google Maps API. A Google szabályozást használ a térképszolgáltatásai használatának kezelésére. Különböző szintű használati korlátokkal rendelkeznek a szolgáltatás típusától és az Ön által választott díjszabástól függően.

Következtetés

Az API-szabályozás megvalósítása elengedhetetlen minden API-szolgáltató számára. Segít megvédeni a szolgáltatást a visszaélésektől, kezelni a szerver erőforrásait, és biztosítja a méltányos használatot az összes ügyfél között. Akár a jogkivonatgyűjtő-algoritmust, akár a rögzített ablak-algoritmust választja, akár a csúszóablak-algoritmust választja, ügyeljen arra, hogy megfelelően integrálja-e az API-jába.

Ha Ön a gyógyszeriparban dolgozik, és kiváló minőségű API-kat keres, mint plFenofibrát丨CAS 49562-28-9,Finasteride丨CAS 98319 - 26 - 7, vagyHidrokortizon-acetát 丨CAS 50-03-3, és Önt érdeklik API-szolgáltatásaink, szívesen beszélgetnénk Önnel az igényeiről. Nyugodtan forduljon hozzánk, hogy megbeszélést indítsunk az API-követelményekről és arról, hogyan dolgozhatunk együtt.

Hivatkozások

  • Leighton, F. Thomson és Satish Rao. "Csomagútválasztás és feladat – bolti ütemezés O (c log c) párhuzamos időben." Journal of the ACM (JACM) 40.2 (1993): 261-289.
  • Nagle, John. "Túltorlódás vezérlés az IP/TCP hálózatokban." ACM SIGCOMM Computer Communication Review 14.5 (1984): 11-17.
A szálláslekérdezés elküldése
Túl a várakozásokon
A tudománytól az életig a LEAPChem segítségével
lépjen kapcsolatba velünk