Skip to main content
KezdőlapBlogA Tracking API skálázhatósága: Hogyan kezeljük a csúcsszezoni forgalmat, a sebességkorlátozásokat és a tömeges regisztrációt

A Tracking API skálázhatósága: Hogyan kezeljük a csúcsszezoni forgalmat, a sebességkorlátozásokat és a tömeges regisztrációt

17TRACK

A nyomonkövetési API csúcsszezonra való méretezéséhez helyezze a szállítmányok regisztrációját tartós sor mögé, kényszerítse ki a szolgáltatói korlátokat az összes worker között, csak a dokumentált korlátokon belül használjon kötegelt feldolgozást, és dolgozza fel aszinkron módon a nyomonkövetési frissítéseket. A regisztráció áteresztőképességét, az újrapróbálkozási forgalmat és a webhookok feldolgozását külön kapacitásproblémaként kezelje. További workerek hozzáadása a kimenő kérések szabályozása nélkül a korlátozást fokozhatja ahelyett, hogy csökkentené a lemaradást.

A nyomonkövetési API skálázhatósága: hogyan kezeljük a csúcsszezoni terhelést

Azoknak a mérnöki csapatoknak, amelyek rendeléskezelő rendszert, raktárplatformot vagy e-kereskedelmi backendet kapcsolnak nyomonkövetési szolgáltatáshoz, nem egyszerűen az a céljuk, hogy több kérést küldjenek. A szállítmányokat meghatározott időablakon belül kell regisztrálni, a forgalmi csúcsok idején meg kell őrizni a frissítéseket, és a hibákból úgy kell helyreállni, hogy ne keletkezzen ismételt munka.

Méretezze a terhelést a szállítmányok, kérések és frissítések alapján

A napi szállítmánymennyiség önmagában nem elegendő egy integráció méretezéséhez. Egy raktár rövid feladási időablakban adhatja ki a nyomonkövetési számok nagy részét, miközben az állapotfrissítések egész nap érkeznek. Ezeket a terheléseket külön modellezze.

  • Regisztrációs beérkezések: A rendszerbe másodpercenként vagy percenként belépő új szállítmányrekordok, beleértve az importokat és a raktári kiadási rohamokat.
  • Kimenő API-forgalom: Regisztrációs kérések, lekérdezések, javítások, egyeztetési hívások és újrapróbálkozások.
  • Bejövő frissítési forgalom: Webhook-kézbesítések és újrakézbesítések, ha a szolgáltató támogatja ezeket.
  • Utófeldolgozás: Adatbázisba írások, ügyfélértesítések, analitikai események és az egyes frissítések által kiváltott rendelésállapot-változások.

Állítson be belső regisztrációs célt, például a nyomonkövetési szám fogadása és a regisztráció megerősítése között elfogadható maximális időt. Ezt tartsa külön a nyomonkövetési adatok frissességétől: a sikeres regisztráció nem jelenti azt, hogy a fuvarozó szkennelése már elérhető.

Számítsa ki a tényleges regisztrációs kapacitást

Kérésekkel korlátozott regisztrációs végpont esetén hasznos tervezési összefüggés:

Regisztrációs kapacitás = engedélyezett kérések másodpercenként × átlagos rekordok kéréseinként × sikeres rekordok aránya

Ez tervezési becslés, nem a szolgáltató garanciája. Feltételezi, hogy a kéréskorlát a meghatározó korlátozás. A rekordalapú kvóták, a hasznos terhelés mérete, a késleltetés és a megosztott fiókkorlátok alacsonyabb felső határt szabhatnak.

Csak szemléltetésként tegyük fel, hogy egy integráció másodpercenként két regisztrációs kérést indíthat, és kéréseinken átlagosan 30 rekordot küld. Névleges kapacitása így 60 rekord másodpercenként, még a hibák és egyéb korlátozások előtt. Ha a beérkező regisztrációk tartós roham során átlagosan 80 rekordot tesznek ki másodpercenként, a sor körülbelül 20 rekorddal nő másodpercenként. Ezek hipotetikus értékek, nem a 17TRACK korlátai.

Számítsa ki a helyreállítási kapacitást is. Ha az új beérkezések λ ütemben folytatódnak, a tényleges feldolgozási kapacitás pedig μ, akkor egy B rekordból álló meglévő lemaradás hozzávetőlegesen B / (μ − λ) másodperc alatt ürül ki, ha μ > λ. Ha a feldolgozási kapacitás nem haladja meg a beérkezések ütemét, a lemaradás ilyen körülmények között nem fog megszűnni.

Erősítse meg, hogy a szolgáltató ténylegesen mit korlátoz

A sebességkorlát és a használati keret eltérő problémákat old meg. A sebességkorlát azt szabályozza, milyen gyorsan lehet kéréseket vagy rekordokat beküldeni. A használati keret azt szabályozhatja, hogy egy fiók mennyi nyomonkövetési tevékenységet használhat fel egy számlázási vagy jogosultsági időszakban. Az egyik alatt maradás nem jelenti a másikkal való megfelelést.

A workerek számának beállítása előtt erősítse meg a következőket a szolgáltató dokumentációja és a fiók feltételei alapján:

  • Hogy a korlátok fiókra, API-kulcsra, végpontra, IP-címre vagy más hatókörre vonatkoznak-e.
  • Hogy a számlált egység kérés, nyomonkövetési rekord vagy más művelet-e.
  • Hogy a végpontok közös korláton osztoznak-e, vagy külön keretekkel rendelkeznek.
  • Az egy kérésben engedélyezett maximális rekordszámot és hasznos terhelésméretet.
  • Hogyan befolyásolják a használatot a duplikált beküldések, az érvénytelen rekordok és az újrapróbálkozások.
  • Hogy a válaszok tartalmaznak-e korlátozási információkat vagy újrapróbálkozási útmutatást.
  • Miben különbözik a kvóta kimerülése az ideiglenes korlátozástól.

Egy 17TRACK-integráció esetén ennek a konfigurációnak a kiindulópontjaként használja a hivatalos Tracking API-oldalt és az API-dokumentációt. Üzembe helyezés előtt erősítse meg az érintett végpont működését és a fiókkorlátokat. Az útmutatóban szereplő kapacitáspéldák architekturális szemléltetések, nem a 17TRACK jogosultságaira, kötegméreteire vagy szolgáltatási garanciáira vonatkozó állítások.

Helyezzen tartós sort a rendelésfeldolgozás és a regisztráció közé

Ne várakoztassa a pénztár vagy a raktári teljesítés a nyomonkövetési szolgáltató regisztráció-elfogadására. Mentse helyben a szállítmányt, tartósan rögzítse a regisztrációs feladatot, és hagyja, hogy háttérben futó workerek kezeljék a beküldést.

Egy praktikus folyamat:

  1. Mentse a szállítmányt és a regisztrációs szándékot. Tranzakciós outboxot vagy azzal egyenértékű megoldást használjon, hogy elkerülje a rendelés mentését a háttérfeladat elvesztése mellett.
  2. Érvényesítse és normalizálja a bemeneteket. A nyomonkövetési számokat karakterláncként őrizze meg, beleértve a kezdő nullákat is. Fuvarozóspecifikus normalizálást csak indokolt esetben alkalmazzon.
  3. Ellenőrizze a meglévő regisztrációt. A szolgáltatóhoz és az adatmodellhez megfelelő stabil identitást használjon.
  4. Tegye sorba a feldolgozható rekordokat. Tárolja a próbálkozások számát, a következő engedélyezett újrapróbálkozás idejét és a diagnosztikához szükséges környezetet.
  5. Közös korlátozón keresztül küldje be. A kapacitást közvetlenül a kimenő kérés előtt foglalja le.
  6. Rögzítse a rekordszintű eredményeket. Különítse el a megerősített sikert, az újrapróbálható hibát, a végleges elutasítást és a bizonytalan eredményeket.

A sor elnyel egy rohamot, de nem hoz létre szolgáltatói kapacitást. Ha a legrégebbi feldolgozható rekord folyamatosan öregszik, a worker-szám egyszerű növelése helyett vizsgálja meg a beérkezési ütem és a feldolgozási kapacitás közötti különbséget.

Hangolja össze a korlátokat a workerek között

A független workerek nem feltételezhetik külön-külön, hogy a teljes fiókkeretet felhasználhatják. Használjon összehangolt sebességkorlátozót vagy diszpécsert, amely közös kéréskeretet oszt ki. Ebbe a keretbe foglalja bele az ütemezett importokat, az üzemeltetési szkripteket és az egyeztetési feladatokat is.

A sebesség és a konkurencia két külön vezérlő. A korlátozó azt szabályozza, milyen gyakran indulnak kérések; a konkurenciakorlát azt, hogy egyszerre hány kérés marad folyamatban. Mindkettő hasznos, amikor nő a szolgáltató késleltetése. A konkurencia növelése segíthet késleltetés által korlátozott terhelésnél, de nem írhatja felül a kimenő sebességkorlátot.

Használjon tömeges regisztrációt a rekordszintű kontroll megőrzésével

Ha egy végpont kérésenként több rekordot támogat, a kötegelés csökkentheti a kérések többletterhelését. Ez nem feltétlenül csökkenti a rekordalapú használatot, és a megengedett legnagyobb köteg nem mindig a legjobb üzemeltetési választás.

Két kiváltó feltétellel építsen kötegeket: maximális rekordszám és maximális várakozási idő. Küldje be a köteget, amikor bármelyik teljesül. Így a forgalmas időszakok hatékonyan megtölthetik a kötegeket, miközben kis forgalomnál nem kell a forgalomnak határozatlan ideig várakoznia.

  • A rekordszám mellett a hasznos terhelés korlátait is tartsa be. Az opcionális metaadatok miatt azonos méretű kötegek bájtban nagyon eltérőek lehetnek.
  • Tartson fenn belső kötegjegyzéket. Rögzítse, mely helyi szállítmányazonosítókat küldte be, és minden visszaküldött eredményt rendeljen helyesen hozzájuk.
  • Vizsgálja az alkalmazásszintű eredményeket. A HTTP-siker önmagában nem bizonyítja, hogy minden rekordot elfogadtak.
  • Csak az újrapróbálást igénylő rekordokat próbálja újra. A sikeres rekordok ismételt küldése szükségtelen forgalmat hoz létre, és használati következményekkel járhat.
  • A végleges érvényesítési hibákat irányítsa javításra. A változatlan érvénytelen hasznos terhelésnek nem szabad újra és újra végighaladnia az újrapróbálási soron.

Különösen fontos az időtúllépés: előfordulhat, hogy a szolgáltató elfogadta a kérést, miközben az ügyfél nem kapta meg a választ. Ezt az eredményt bizonytalanként jelölje. Oldja fel támogatott idempotenciamechanizmussal, dokumentált duplikált-regisztrációs szabállyal vagy – ahol elérhető – egyeztetési lekérdezéssel. Ne feltételezze, hogy egy időtúllépéssel végződő írás sikertelen volt.

Válassza külön az élő forgalmat és a történeti importokat

A visszatöltés nem használhatja fel az újonnan feladott szállítmányokhoz szükséges teljes kapacitást. Használjon külön sorokat súlyozott ütemezéssel vagy kifejezett kapacitásfoglalásokkal. Engedje, hogy az importok a szabad kapacitást használják, miközben minimális keretet tart fenn az élő regisztrációk számára. Alkalmazzon öregedést vagy más méltányossági szabályt, hogy az alacsonyabb prioritású rekordok végül feldolgozásra kerüljenek.

Az újrapróbálkozásokat szabályozottan, késleltetve és korlátozottan kezelje

A HTTP 429 jelentése: „Túl sok kérés”. Az RFC 6585 meghatározza, hogy egy 429-es válasz tartalmazhat Retry-After fejlécet. Az RFC 9110 szerint ennek a fejlécnek az értéke HTTP-dátum vagy másodpercben megadott késleltetés lehet. Az ügyfélnek mindkét formát fel kell dolgoznia, és nem szabad mindig azt feltételeznie, hogy egész szám érkezik.

Érvényes újrapróbálási késleltetés megadása esetén ne próbálkozzon újra annak lejárta előtt. Ha nincs útmutatás az újrapróbáláshoz, használjon korlátozott exponenciális visszalépést véletlenszerűsítéssel: fokozatosan növelje a próbálkozások közötti késleltetést, és adjon hozzá véletlenszerűséget, hogy a workerek ne egyszerre próbálkozzanak újra. Az újrapróbálásoknak ugyanazon a kimenő korlátozón kell áthaladniuk, mint az első próbálkozásoknak.

Az újrapróbálás előtt osztályozza a hibákat:

  • Korlátozás: Késleltesse az érintett munkát, és csökkentse a kiküldési nyomást az érintett korlátozási hatókörön belül.
  • Átmeneti hálózati vagy szerverhibák: Korlátozott szabályzat szerint próbálja újra, figyelembe véve a bizonytalan írási eredményeket.
  • Hitelesítési vagy engedélyezési hibák: Küldjön riasztást, és állítsa le az érintett munkát a hitelesítő adatok vagy jogosultságok javításáig.
  • Érvényesítési hibák: Javítsa vagy különítse el a rekordot a változatlan újraküldés helyett.
  • Kimerült keret: Rövid forgalmi csúcsként való kezelés helyett kövesse a dokumentált fiókszintű megoldást.

Állítson be próbálkozási korlátot és maximális újrapróbálási életkort is. A kimerült elemeket okkal, felelőssel és újrajátszási eljárással együtt helyezze holtbetűs sorba. Ellenkező esetben a régi hibák észrevétlenül felhasználhatják az új szállítmányoknak szánt kapacitást.

Méretezze a webhookok fogadását függetlenül

Ha a szolgáltató megfelelő webhookokat kínál, ezek csökkenthetik az ismételt állapotlekérdezést. Ugyanakkor külön bejövő terhelést hoznak létre, amelynek frissítési rohamok idején is elérhetőnek kell maradnia.

Tartsa a fogadó végpontot célirányosnak: érvényesítse a kérést a szolgáltató dokumentált mechanizmusával, tartósan tárolja az eseményt, és küldje vissza a szükséges visszaigazolást. A rendelésmódosításokat, az analitikát és az ügyfélüzeneteket aszinkron módon dolgozza fel. Ne igazolja vissza a fogadást a tartós elfogadás előtt, ha ez az esemény elvesztésének kockázatával járna.

Úgy tervezze a fogyasztókat, hogy elviseljék a duplikált kézbesítést, kivéve, ha a szolgáltatói szerződés kifejezetten mást rögzít. A deduplikáláshoz előnyben részesítse a dokumentált stabil eseményazonosítót. Ha ilyen nincs, gondosan tervezze meg és tesztelje az összetett identitást: önmagában egy állapotcímke használata különböző eseményeket egyetlen eseménnyé olvaszthat.

Védje ki a sorrenden kívüli frissítéseket is. Az eseménytörténetet a származtatott aktuális szállítmányállapottól külön tárolja. Ahol elérhető, alkalmazza a dokumentált esemény-időbélyegeket és állapotátmeneti szabályokat; ne feltételezze, hogy a fogadási sorrend megegyezik az események sorrendjével, vagy hogy a szállítmányállapotok univerzálisan növekvő sorozatot alkotnak.

Az egyeztetést célzottan és sebességkorlátozva végezze. Vizsgálhatja vele a feltételezett kézbesítési hiányokat vagy a bizonytalan regisztrációkat, de az összes szállítmány agresszív lekérdezése újra létrehozhatja azt a kimenő terhelést, amelyet a webhookoknak kellett volna elkerülniük.

Ne csak a maximális áteresztőképességet, hanem a helyreállítást is tesztelje

Saját komponensein futtasson terhelési teszteket szolgáltatószimulátor használatával. Hangolja össze azokat a teszteket, amelyek jelentős forgalmat küldenek egy éles szolgáltatónak, és maradjon az engedélyezett korlátokon belül. A sikeres tesztnek azt kell bizonyítania, hogy a rendszer zavar után visszatér a normál működéshez, nem csupán azt, hogy nagy rohamot képes elfogadni.

  • Játsszon vissza egy raktári jellegű rohamot, amelyet folyamatos normál forgalom követ.
  • Injektáljon korlátozási válaszokat, megnövekedett késleltetést és átmeneti szerverhibákat.
  • Szimulálja egy köteg részleges elutasítását és az időtúllépést szerveroldali elfogadás után.
  • Kézbesítsen duplikált és sorrenden kívüli webhook-eseményeket.
  • Szakítsa meg az adatbázis-hozzáférést, és ellenőrizze, hogy az el nem fogadott eseményeket nem igazolja vissza tévesen.
  • Futtasson visszatöltést az élő regisztrációk mellett, és ellenőrizze a méltányosságot.
  • Játssza vissza a holtbetűs elemeket a sebességkorlátok megkerülése nélkül.

Figyelje a legrégebbi feldolgozható regisztráció életkorát, az elfogadási késleltetést, a rekordszintű sikerességi arányt, a korlátozás gyakoriságát, az újrapróbálkozások mennyiségét, a webhook-feldolgozás késését és a holtbetűs sor növekedését. Önmagában a sor mélysége nem elegendő: egy nagy sor gyorsan kiürülhet, míg egy kis sor néhány folyamatosan hibázó, üzletileg kritikus szállítmányt tartalmazhat.

A csúcsszezon előtt jelölje ki az üzemeltetési felelősségeket. A mérnöki csapat feleljen a kiküldési vezérlőkért és a helyreállítási eszközökért; az integráció felelőse erősítse meg a szolgáltatói jogosultságokat; az üzemeltetés határozza meg, mely szállítmányok kapnak prioritást. Dokumentálja, mikor kell leállítani az importokat, további kapacitást kérni vagy hiányzó frissítéseket vizsgálni. A legerősebb kialakítás az, amely akkor is kiszámítható marad, amikor a forgalom meghaladja az azonnali feldolgozási kapacitást.

GYIK

Növeli az áteresztőképességet további API-kulcsok hozzáadása?

Nem feltétlenül. Több kulcs is osztozhat fiókszintű kereten. Erősítse meg a korlát hatókörét és az engedélyezett méretezési megközelítést a szolgáltatóval. Ne használjon kulcsváltást a korlátozások megkerülésére.

Minden regisztrációhoz a lehető legnagyobb köteget kell használni?

Nem. A nagyobb kötegek javíthatják a kérés hatékonyságát, de kis forgalomnál a köteg feltöltésére való várakozás növeli a késleltetést. Használjon dokumentált méretkorlátot és ürítési időzítőt, majd a mért elfogadási késleltetés és a hibaviselkedés alapján hangolja a rendszert.

Hogyan előzhetők meg az időtúllépés utáni duplikált regisztrációk?

Használjon tartós helyi szállítmányazonosítót, valamint a szolgáltató dokumentált idempotencia- vagy duplikátumkezelési viselkedését. Ha az eredmény továbbra is bizonytalan, újrajátszás előtt egyeztesse, ahol ez támogatott. A helyi deduplikálás önmagában nem bizonyíthatja, hogy egy távoli kérés sikeres volt-e.

A sikeres regisztráció azt jelenti, hogy a nyomonkövetési információk aktuálisak?

Nem. A regisztráció elfogadása, a fuvarozói esemény elérhetősége, a szolgáltatói feldolgozás és a saját frissítésfeldolgozás különálló szakaszok. Külön mérje őket, hogy a késedelmes fuvarozói szkennelést ne tévessze össze a regisztrációs lemaradással.

Mikor kérjen a csapat további szolgáltatói kapacitást?

Akkor kérje, amikor az előre jelzett beérkezések és a szükséges helyreállítási idő meghaladja az igazoltan használható kapacitást, miután megszüntette az elkerülhető újrapróbálkozásokat, a duplikált beküldéseket és a nem hatékony kötegelést. A nagyobb keret nem old meg egy blokkolt fogyasztót vagy adatbázis-szűk keresztmetszetet, ezért először azonosítsa a meghatározó korlátozást.

Források

Loading