Cotele de tranzacție și limitele ratei de tranzacții

FedEx primește mii de cereri API în fiecare zi. Utilizăm trei mecanisme de gestionare a acestui volum mare de cereri. Există cote, limite ale numărului de tranzacții și praguri pentru a aloca resursele FedEx în mod eficient.

Cotele sunt definite per organizație și per proiect API.

 

Cote per organizație

Cota de tranzacții reprezintă numărul maxim de cereri API, care pot fi trimise de o organizație într-o zi. Aceasta înseamnă că utilizatorii de API-uri trebuie să ia în considerare numărul total de cereri API, inițiate pentru toate proiectele din cadrul aceleiași organizații. Fiecare cerere contează în mod egal, indiferent de volumul de date returnate în răspunsul API-ului FedEx.

Exemplu: o organizație are o cotă de 500.000 de cereri API pe zi. În cazul în care o organizație ajunge la 500.000 de cereri trimise în primele ore ale zilei, aceasta își va fi atins cota. Pentru restul zilei, un cod de eroare „429 – Prea multe solicitări – Cota zilnică de tranzacții a fost depășită. Reîncercați după ora 12:00 GMT” va fi returnat pentru fiecare cerere trimisă până în ziua următoare.

 

Cote per proiect API

Această cotă se aplică la două niveluri diferite: proiect și module.

Ce înțelegem prin module?

Fiecare API este grupat în funcție de modulele pe care le oferă. Fiecare grup de module include una sau mai multe destinații ale cererilor. De exemplu, modulul API-ului de urmărire are 6 destinații ale cererilor API, în timp ce modulul de validare a adreselor are doar 1 destinație.

Limita implicită a cotei per modul per proiect (PCPP), pentru modulul Urmărire, este de 100.000 de cereri pe zi. Aceasta înseamnă că, atunci când traficul de la oricare dintre proiectele dintr-o organizație către oricare dintre cele 6 destinații ale cererilor, din cadrul modulului Urmărire, depășește această limită, vi se va afișa eroarea „429 – Prea multe solicitări” până la sfârșitul zilei. Acest lucru se aplică tuturor solicitărilor ulterioare de urmărire, pentru oricare dintre cele 6 destinații ale cererilor.

Exemplu: dacă un proiect are o limită de 100.000 de cereri pentru modulul de urmărire (cu 6 destinații ale cererilor), numărul total de tranzacții pentru toate cele 6 destinații ale cererilor va fi luat în calcul ținând cont de limita de 100.000. Dacă proiectul dumneavoastră depășește această limită, atunci, pentru tranzacțiile de urmărire ulterioare, vi se va afișa eroarea „429 – Prea multe solicitări – Cota zilnică de tranzacții a fost depășită” pentru restul zilei, până la 12:00 GMT.

 

Limite de rată

Fiecare proiect are o limită a numărului de tranzacții de 1.400 de tranzacții în decurs de 10 secunde. În cazul în care tranzacțiile depășesc această limită în fiecare interval de 10 secunde, se aplică restricții de limitare.

Dacă această limită este atinsă în primele câteva secunde, atunci orice tranzacție trimisă în celelalte secunde din fereastra de 10 secunde va fi restricționată. În timpul acestei perioade de restricționare, va fi transmis un cod de eroare cu textul „429 – Prea multe solicitări”.

Dacă FedEx primește 1.400 de cereri în primele 2 secunde, atunci toate tranzacțiile pentru următoarele 8 secunde vor fi respinse și vi se va afișa mesajul de eroare, cu textul „429 – Prea multe solicitări – Am primit prea multe solicitări într-un interval scurt. Vă rugăm să așteptați puțin și să încercați din nou.”

După trecerea celor 10 secunde, restricțiile la acces vor fi ridicate și o altă verificare va începe să urmărească numărul de solicitări din următoarele 10 secunde.

 

Praguri

Pragurile se aplică la nivel de adresă IP, pentru a face ca procesul de autorizare a API-urilor FedEx să fie rezilient. Acest mecanism se aplică numai serviciului de generare de tokenuri Auth. Există două tipuri de praguri:

  1. Pragul de rafală: 3 rezultate pozitive pe secundă, în mod continuu, pe parcursul a 5 secunde.
  2. Pragul mediu: 1 rezultat pozitiv pe secundă, în mod continuu, pe parcursul a 2 minute.
  • Odată ce o adresă IP publică încalcă oricare dintre aceste limite, aceasta va fi penalizată timp de 10 minute, iar toate solicitările ulterioare, în acest interval de 10 minute, vor primi un cod de stare „403 – Interzis”.
  • În cazul în care utilizatorii de API-uri continuă să încalce orice limită în timpul acestei perioade de penalizare, perioada de penalizare va fi prelungită. Utilizatorii de API-uri își pot încheia perioada de penalizare dacă nu încalcă limita în următoarele 10 minute.
  • Mecanismele de prag se bazează pe adresa IP publică a unui utilizator. Dacă un utilizator configurează 10 instanțieri de mașini virtuale în spatele unui IP public, atunci toate solicitările de la acea adresă IP vor fi luate în considerare pentru limita de prag.

 

Gestionarea traficului

Fiecare dintre aceste trei mecanisme abordează un aspect distinct al gestionării traficului:

  • Cote aplicate la nivel de organizație: traficul combinat, generat de toate API-urile dintr-o organizație, va fi supus acestei cote de tranzacții.

  • Cote aplicate la nivel de proiect: traficul combinat, generat pentru un singur modul API, în cadrul unui proiect, este supus acestei cote de tranzacții.

  • Limite ale numărului de tranzacții, aplicate la nivel de proiect: traficul combinat, generat de toate API-urile din cadrul unui proiect, va fi supus acestor limite.

  • Pragurile se aplică la nivel de adresă IP.

Notă: FedEx poate reduce limita (limitele) oricăruia dintre mecanismele de limitare a accesului, menționate mai sus, pentru a preveni utilizarea necorespunzătoare, utilizarea excesivă și abuzul. FedEx își rezervă dreptul de a modifica alocarea fără notificare prealabilă, pentru a menține un acces echitabil în rândul utilizatorilor de API-uri și pentru a aloca resursele FedEx în mod eficient și eficace.


Întrebări frecvente

Toate tranzacțiile de API-uri, de la diferite proiecte ale unei organizații, sunt luate în considerare pentru calcularea cotei?
Cota se aplică la nivel de organizație. În cadrul unei organizații, puteți avea unul sau mai multe proiecte, iar în cadrul fiecărui proiect, puteți avea unul sau mai multe API-uri. Ca urmare, traficul combinat, generat de toate API-urile din diferite proiecte (toate proiectele fiind în cadrul aceleiași organizații), este luat în calcul pentru o cotă zilnică.

Dacă aceeași eroare 429 este returnată atât pentru o încălcare a cotelor, cât și pentru o încălcare a limitei de rată, cum pot identifica ce fel de încălcare am comis?
Puteți identifica încălcarea prin citirea mesajului de eroare.

 

ÎNCĂLCARE MESAJ DE EROARE
Cote per organizație Prea multe solicitări – Cota zilnică de tranzacții a fost depășită. Reîncercați după ora 12:00 GMT.
Cote per proiect API Prea multe solicitări: cota zilnică per proiect a fost depășită. Reîncercați după ora 12:00 GMT.
Limită de rată Prea multe solicitări: pragul limitei numărului de tranzacții a fost depășit. Reîncercați după 10 secunde.
   

Care este soluția pentru o încălcare a limitei de praguri?
Un token OAuth este valabil timp de o oră. Sugerăm ca utilizatorii de API-uri să folosească acest token timp de o oră întreagă, apoi să solicite un nou token doar atunci când expiră cel anterior.

Care este un exemplu de depășire a limitei de prag?
Atât 5 secunde, cât și 2 minute sunt ferestre de observare pentru pragul de rafală și, respectiv, pragul mediu. În timpul oricăreia dintre aceste ferestre, în cazul în care oricare dintre limitele de prag este încălcată de la o adresă IP, atunci se impune penalizarea pragului.

Exemplu: dacă o adresă IP are 3 rezultate valide pe secundă, timp de 2 secunde, dar apoi rata de rezultate valide scade sub 3 rezultate valide pe secundă, atunci pragul nu a fost încălcat. Cu toate acestea, în cazul în care o adresă IP are 3 rezultate valide pe secundă în mod continuu, timp de 5 secunde, apoi 15 rezultate valide în 5 secunde, atunci pragul de 14 rezultate valide în 5 secunde a fost încălcat.