Cloud & IT Cert Prep · Oppitunti

Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus

Ymmärrätte, miten Lambda skaalautuu samanaikaisesti, määritätte varatun samanaikaisuuden taustapalvelujen suojaamiseksi ja käsittelette rajoitusvirheitä.

Oppitunti 2/413 vaihetta

Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus on ilmainen Cloud & IT Cert Prep-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cloud & IT Cert Prep-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Miten Lambda skaalautuu samanaikaisesti

Lambda skaalautuu suorittamalla funktiosta useita samanaikaisia suorituksia – yhden kutakin yhtäaikaista tapahtumaa kohden. Kun 100 pyyntöä saapuu samanaikaisesti, Lambda suorittaa funktiosta 100 rinnakkaista instanssia. AWS hallinnoi taustalla olevaa infrastruktuuria automaattisesti. Tilikohtainen samanaikaisuusraja on oletusarvoisesti 1 000 samanaikaista suoritusta aluetta kohden (pehmeä raja, jota voidaan nostaa palvelukiintiöpyynnöllä).

Samanaikaisuuden laskeminen

Samanaikaisuus lasketaan seuraavasti: Samanaikaisuus = pyyntöä sekunnissa × keskimääräinen kesto sekunteina. Jos funktio käsittelee 500 pyyntöä sekunnissa ja kunkin käsittely kestää 0,2 sekuntia, tarvitaan 100 samanaikaista suoritusta. Tämän kaavan ymmärtäminen auttaa ennakoimaan, riittävätkö tilinne rajat ja tarvitseeko kiintiöiden korotusta pyytää ennen paljon liikennettä aiheuttavaa tapahtumaa.

# Example concurrency calculation
# RPS = 500, avg_duration = 0.2s
# Concurrency = 500 * 0.2 = 100

# To check current concurrency limits:
aws lambda get-account-settings

Rajoittaminen: mitä tapahtuu rajojen ylittyessä

Kun Lambda vastaanottaa enemmän pyyntöjä kuin sen samanaikaisuusraja sallii, se rajoittaa ylimääräisiä pyyntöjä. Synkronisissa kutsuissa (esimerkiksi API Gateway) rajoitetut pyynnöt saavat heti 429 TooManyRequestsException -virheen, joka kutsujan on käsiteltävä. Asynkronisissa kutsuissa (esimerkiksi S3-tapahtumat) Lambda jonottaa tapahtumat ja yrittää niitä uudelleen enintään 6 tunnin ajan ennen niiden lähettämistä dead-letter-jonoon.

Varattu samanaikaisuus selitettynä

Reserved Concurrency takaa tietyn määrän tietyn funktion samanaikaisia suorituksia varaamalla kyseisen määrän tilin resurssivarannosta. Sillä on kaksi tarkoitusta: (1) se takaa kapasiteetin – funktiolla on aina kyseinen määrä suorituksia käytettävissään, vaikka muut funktiot käyttäisivät tilin kiintiötä; (2) se rajoittaa samanaikaisuutta – funktio ei voi koskaan ylittää varattua määrää, mikä suojaa taustariippuvuuksia ylikuormitukselta.

# Reserve 100 concurrent executions for a critical function
aws lambda put-function-concurrency \
  --function-name 'CriticalProcessor' \
  --reserved-concurrent-executions 100

Taustapalvelujen suojaaminen varatulla samanaikaisuudella

Keskeinen koetilanne: Lambda-funktio kirjoittaa RDS-tietokantaan, jonka yhteysraja on 50. Ilman samanaikaisuuden hallintaa Lambda voisi skaalautua satoihin samanaikaisiin suorituksiin ja kuluttaa kaikki tietokantayhteydet, mikä aiheuttaisi virheitä kaikille funktioille. Kun varatuksi samanaikaisuudeksi asetetaan 40, Lambda ei koskaan ylitä 40:tä yhtäaikaista tietokantayhteyttä, joten RDS-instanssi pysyy suojattuna. Tämä on keskeinen toimintamalli kaikille Lambda-funktioille, jotka kutsuvat yhteyksien määrää rajoittavaa palvelua.

Esilämmitetty samanaikaisuus kylmäkäynnistysten poistamiseen

Provisioned Concurrency alustaa ennalta määritetyn määrän Lambdan suoritusympäristöjä, jotta ne ovat valmiita vastaamaan välittömästi ilman kylmäkäynnistystä. Tämä on tärkeää viiveherkille rajapinnoille, joissa jopa 100 millisekunnin kylmäkäynnistystä ei voida hyväksyä. Esilämmitetystä samanaikaisuudesta veloitetaan tuntihinta, vaikka ympäristöt olisivat käyttämättömiä, joten yhdistäkää se Auto Scalingiin ja säätäkää esilämmitettyä määrää ennakoitujen liikennemallien perusteella.

aws lambda put-provisioned-concurrency-config \
  --function-name 'LatencySensitiveAPI' \
  --qualifier 'prod' \
  --provisioned-concurrent-executions 50

Varattu ja esilämmitetty samanaikaisuus

Nämä käsitteet sekoitetaan usein toisiinsa, mutta niillä on eri tarkoitukset. Reserved Concurrency rajoittaa ja takaa tilin resurssivarannosta allokoidun kapasiteetin – se EI poista kylmäkäynnistyksiä. Provisioned Concurrency esilämmittää suoritusympäristöt kylmäkäynnistysten poistamiseksi – se EI estä muita funktioita käyttämästä samaa resurssivarantoon. Käyttäkää varattua samanaikaisuutta läpimenon rajoittamiseen ja esilämmitettyä samanaikaisuutta viiveen pienentämiseen. Molempia voidaan käyttää samassa funktiossa.

Purskahdusrajat ja alkuskaalaus

Lambda ei skaalaudu täyteen samanaikaisuuteen välittömästi. Tilillä on aluekohtainen purskahdusraja (alkuskaalausnopeus), joka vaihtelee alueittain – tyypillisesti aluksi 3 000 suoritusta ja sen jälkeen 500 lisäsuoritusta minuutissa, kunnes raja saavutetaan. Jos sovellukseen odotetaan äkillisiä valtavia liikennepiikkejä, kuten viraaliksi muuttuvaa liikennettä tai kampanjamyyntiä, käyttäkää Provisioned Concurrency -ominaisuutta riittävän monen ympäristön esilämmittämiseen, jotta purskahdusraja ei aiheuta rajoittamista alkuvaiheen liikennepiikin aikana.

Lambdan samanaikaisuuden mittarit CloudWatchissa

Seuratkaa Lambdan samanaikaisuutta näiden keskeisten CloudWatch-mittareiden avulla:

  • ConcurrentExecutions: käynnissä olevien instanssien määrä
  • Throttles: rajoitettujen kutsujen määrä (terveessä järjestelmässä tämän pitäisi olla nolla)
  • UnreservedConcurrentExecutions: tilikohtainen varaamaton resurssivaranto
  • ProvisionedConcurrencyUtilization: käytössä olevan esilämmitetyn kapasiteetin määrä

Asettakaa hälytykset Throttles-mittarille, jotta saatte ilmoituksen ennen kuin rajoittaminen vaikuttaa loppukäyttäjiin.

aws cloudwatch put-metric-alarm \
  --alarm-name 'LambdaThrottlesAlert' \
  --metric-name Throttles \
  --namespace AWS/Lambda \
  --dimensions Name=FunctionName,Value=MyFunction \
  --statistic Sum \
  --period 60 \
  --threshold 1 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --evaluation-periods 1

Rajoitettujen pyyntöjen käsittely sovelluskoodissa

Kun suunnittelette Lambdaa synkronisesti kutsuvia järjestelmiä (API Gateway, SDK:n suorat kutsut), toteuttakaa kutsujassa eksponentiaalinen uudelleenyritys satunnaisella viiveellä. AWS SDK:issa on sisäänrakennettu uudelleenyrityslogiikka, mutta API Gatewayn kautta kutsuttavaa Lambdaa käytettäessä asiakkaan sovelluksen on käsiteltävä 429-vastaukset. SQS:n käynnistämässä Lambdassa SQS-palvelu hoitaa uudelleenyritykset itse. Asettakaa lähdejonoa varten Maximum Receives asianmukaisesti ja määrittäkää DLQ epäonnistuneiden uudelleenyritysten käsittelyä varten.

Samanaikaisuus ja suoratoistoon perustuvat laukaisimet

Kinesis Data Streams- ja DynamoDB Streams -palveluissa Lambdan samanaikaisuutta rajoittaa shardien (Kinesis) tai osioiden (DynamoDB) määrä. Kukin shard tai osio käsitellään täsmälleen yhdellä samanaikaisella Lambda-suorituksella. Jos Kinesiksessä on 10 shardia, Lambda suorittaa tätä laukaisinta varten enintään 10 samanaikaista suoritusta. Tämä tarkoittaa, että suoratoistoon perustuvien laukaisimien rajoitusongelmat ratkaistaan yleensä kasvattamalla shardien määrää eikä nostamalla samanaikaisuusrajoja.

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteet.

Oppitunnin yhteenveto

Tässä oppitunnissa opitte, että Reserved Concurrency sekä takaa että rajoittaa funktion samanaikaisia suorituksia suojatakseen taustapalveluja ja varmistaakseen saatavuuden; Provisioned Concurrency alustaa ympäristöt ennalta kylmäkäynnistysten poistamiseksi viiveherkissä kuormissa; ja rajoittaminen ilmenee synkronisissa kutsuissa 429-virheinä ja asynkronisissa kutsuissa jonotettuina uudelleenyrityksinä. Rajoittamista voidaan seurata CloudWatchin Throttles-mittarilla. Seuraavaksi tutustumme Lambda Layereihin ja käyttöönottopaketteihin suurten riippuvuuksien hallintaa varten.

Aloita maksutta

Opi Cloud & IT Cert Prep tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
150
Oppitunnit
600

Usein kysytyt kysymykset

Onko oppitunti ”Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus” ilmainen?

Kyllä – oppitunnin ”Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cloud & IT Cert Prep-kurssin, päivitä CoddyKit PROhon. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus”?

Ymmärrätte, miten Lambda skaalautuu samanaikaisesti, määritätte varatun samanaikaisuuden taustapalvelujen suojaamiseksi ja käsittelette rajoitusvirheitä. Harjoittelet Cloud & IT Cert Prep-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cloud & IT Cert Prep-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cloud & IT Cert Prep-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cloud & IT Cert Prep-oppitunnilla?

Kyllä. Jokainen Cloud & IT Cert Prep-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Lambda-funktiot: suoritusympäristöt, triggerit ja käsittelijät
  2. Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus
  3. Lambda Layers ja käyttöönottopaketit
  4. Lambda@Edge ja tapahtumapohjaiset mallit
← Takaisin: Cloud & IT Cert Prep