Við vorum að takmarka eigin þjónustur
API Mythex leyfir 300 beiðnir á mínútu frá einu netfangi. Þessi takmörk eru til að verja okkur fyrir einni manneskju eða skriftu sem lemur á API-inu. Í framleiðslu fór hún að hafna eigin þjónustum okkar í staðinn, hluta af edge-inu okkar sem þjónar birtum forritum og þjónustunni sem keyrir gervigreindaraðstoðarmanninn, því hvor um sig nær í API-ið frá aðeins handfylli af vistföngum. Beiðnir sem bera innri skilríki okkar eru nú undanþegnar, og allir aðrir eru takmarkaðir nákvæmlega eins og áður.
Einkennið
API-ið fór að svara sumum innri köllum okkar með 429 Too Many Requests. Þrenns konar köll urðu fyrir þessu, og hvert þeirra skiptir máli fyrir einhvern sem notar Mythex:
- Að fletta upp hvaða forrit býr á sérsniðnu léni. Þegar gestur opnar birt forrit á eigin léni spyr edge-ið okkar API-ið hvar sú síða er. 429 þar þýðir gestur sem nær ekki í síðuna.
- Að vista keyrandi umferð aðstoðarmannsins. Meðan aðstoðarmaðurinn vinnur er framvinda hans vistuð jafnóðum, svo svarið lifi af endurhleðslu eða slitna tengingu. 429 þar þýðir framvindu sem var ekki vistuð.
- Að athuga aðgang að forsýningu. Forsýning forrits sem þú ert að smíða er hliðuð, og hliðið spyr API-ið. 429 þar þýðir forsýningu sem opnast ekki.
Engin af þessum voru fólk sem kallaði API-ið. Þetta vorum allt við.
Af hverju þetta gerðist
Takmörkun á hverja vistfang gerir eina forsendu: eitt vistfang er um það bil einn kallandi. Fyrir fólk er það nógu nálægt. Fyrir eigin innviði okkar er það mjög rangt.
- Edge-þjónustan sem þjónar birtum forritum og forsýningum nær í API-ið frá nokkrum sameiginlegum útgangsvistföngum. Hver gestur á hverju birtu forriti, og hver forsýningarathugun, kemur eins og hún hafi komið frá einu af þessum fáu.
- Orchestrator, þjónustan sem keyrir umferð aðstoðarmannsins, nær í API-ið frá einu gámavistfangi. Hver keyrandi umferð, fyrir hvern notanda, deilir því.
Þannig að kvóti sem ætlaður var einni manneskju var skiptur á milli allrar umferðar heillar þjónustu. Þjónusturnar eyddu honum á milli sín, og takmarkarinn gerði það sem honum var sagt: hafnaði þeim.
Lagfæringin
Þjónustur okkar sanna nú þegar hverjar þær eru. Hvert innra kall ber innri tóka, og hver leið undir innri hluta API-sins athugar þann tóka áður en hún gerir nokkuð.
Takmarkarinn notar nú sömu athugun. Beiðni sem ber tóka sem passar við innri tókann er á leyfislista og er ekki talin í kvóta á hvert vistfang. Allt annað er talið nákvæmlega eins og áður: 300 beiðnir á mínútu á hvert vistfang.
Tvö atriði komu í veg fyrir að þetta yrði gat:
- Rangur tóki fær enga undanþágu. Leyfislistinn passar aðeins við raunverulega innri tókann. Beiðni með búinn tóka er talin og takmörkuð eins og hver önnur, og innri leiðirnar hafna henni samt með
401 Unauthorized. - Takmörkin sjálf breyttust ekki. Við hækkuðum ekki töluna til að rýma til. Það hefði falið vandamálið þar til umferðin óx aftur, og veikt vörnina fyrir það tilvik sem takmörkin eru fyrir.
Við færðum stillingar takmarkarans í eina litla falla og skrifuðum próf gegn honum. Eitt sendir 20 beiðnir með innri tókanum á takmarkara sem leyfir 5, og býst við að allar 20 heppnist. Annað sendir venjulegar beiðnir frá einu vistfangi og býst við að fyrstu fimm heppnist og þær sem á eftir koma séu hafnaðar. Það þriðja sendir beiðnir með fölsuðum tóka og býst við að þeim sé hafnað á sama hátt.
Það sem við lærðum
- Takmörk byggja á forsendum. „Eitt vistfang, einn kallandi“ er innbyggt í takmörk á hvert vistfang. Það hættir að vera satt um leið og eigin þjónustur sitja á bak við sameiginleg vistföng, og margar gera það: álagsjafnarar, edge-net, gámar, skrifstofunet.
- Aðgreindu þína eigin umferð eftir auðkenni, ekki vistfangi. Vistföng eru leiðin sem umferð kemur, ekki hver sendi hana. Við höfðum þegar skilríki sem sanna að kall sé okkar; takmarkarinn leit bara ekki á þau.
- Lagaðu þetta ekki með því að hækka töluna. Hærri takmörk hefðu látið 429-villurnar hverfa um hríð, verndað minna og bilað aftur seinna.
- Skoðaðu hverjir eru takmarkaðir. 429 sem lendir á eigin þjónustu er villutilkynning um takmörkin þín, ekki merki um að takmarkarinn virki.
Hvað þetta þýðir ef þú smíðar á Mythex
Ekkert að breyta hjá þér. Birt forrit á sérsniðnum lénum, umferð aðstoðarmanna og forsýningar reiða sig ekki lengur á hversu annasamt annað Mythex er. Umferð forritsins þíns er mál forritsins þíns: takmörkin sem lýst er hér gilda um API-ið okkar, ekki um forritin sem þú birtir.
Ef þú keyrir eigin bakenda gildir sama gildra um hvert hraðatakmörk sem þú bætir við. Leiðarvísarnir okkar um hvað API er og öryggisgátlistann fyrir forrit sem gervigreind smíðar eru góður staður til að byrja. Og fyrir annað dæmi um að innviðir okkar hafi staðið í eigin vegi, sjá hvernig við fengum birtingar niður í núll 502-villur.