Saga-malli hajautetuille transaktioille
Opettele koordinoimaan tietomuutoksia useiden palveluiden välillä ilman hajautettuja transaktioita saga-mallin ja kompensoivien toimintojen avulla.
Saga-malli hajautetuille transaktioille on ilmainen Serverless-kehitys AWS Lambdalla-oppitunti CoddyKitissä. Tämä on oppitunti 4/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 Serverless-kehitys AWS Lambdalla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Serverless-kehitys AWS Lambdalla-kurssilla on yhteensä 4 oppituntia.
Hajautetun datan ongelma
Tapahtumavetoisissa järjestelmissä kukin palvelu omistaa omat tietonsa. Yksi liiketoimintatoiminto voi ulottua useisiin palveluihin, mutta niiden kaikkien palauttamiseen ei ole yhteistä transaktiota.
Mikä on saga?
Saga jakaa yhden suuren transaktion peräkkäisiksi paikallisiksi transaktioiksi. Jos vaihe epäonnistuu, aiemmat vaiheet perutaan kompensoivilla toiminnoilla.
Esimerkki käytännössä
Tilauksen tekeminen: varaa varasto, veloita maksu ja luo toimitus. Jos maksu epäonnistuu, varattu varasto on vapautettava.
Kompensoivat toiminnot
Jokaisella etenemisvaiheella on oltava vastaava peruutustoiminto. Varauksella on vapautus ja veloituksella hyvitys. Kompensaatiot tekevät järjestelmästä lopulta yhdenmukaisen.
steps = [
('reserveInventory', 'releaseInventory'),
('chargePayment', 'refundPayment'),
('createShipment', 'cancelShipment')
]Koreografiatyyli
Koreografiassa kukin palvelu reagoi tapahtumiin ja tuottaa seuraavan tapahtuman. Keskitettyä koordinaattoria ei ole, mutta kulku on implisiittinen ja vaikeammin seurattava.
Orkestrointityyli
Orkestroinnissa koordinaattori (usein AWS Step Functions) ohjaa jokaista vaihetta eksplisiittisesti ja käynnistää kompensaatiot virheen sattuessa. Kulku on keskitetty ja näkyvä.
Step Functions sopii sagoihin
Step Functions tukee Catch-käsittelyä jokaisessa tehtävässä kompensaation kutsumista varten, joten se sopii luontevasti orkestroitujen sagojen toteutukseen.
{
"ChargePayment": {
"Type": "Task",
"Resource": "arn:...:chargePayment",
"Catch": [{"ErrorEquals": ["States.ALL"], "Next": "ReleaseInventory"}],
"Next": "CreateShipment"
}
}Idempotenssi on välttämätöntä
Sagan vaiheita ja kompensaatioita voidaan yrittää uudelleen, joten jokaisen on oltava idempotentti. Käyttäkää yksilöllistä transaktiotunnistetta duplikaattien havaitsemiseen ja ohittamiseen.
Lopullinen yhdenmukaisuus
Sagan aikana järjestelmä on tilapäisesti epäjohdonmukainen. Suunnitelkaa käyttöliittymä ja downstream-kuluttajat kestämään esimerkiksi tila "maksu odottaa".
Semanttiset lukot
Konfliktien välttämiseksi sagan aikana merkitkää tietueet odottavalla tilalla (semanttinen lukko), jotta muut toiminnot tietävät datan olevan käsiteltävänä.
Milloin sagaa kannattaa käyttää
Käyttäkää sagoja, kun työnkulku todella ulottuu useisiin palveluihin. Jos kaikki sijaitsee yhdessä palvelussa tai tietokannassa, tavallinen paikallinen transaktio on yksinkertaisempi ja turvallisempi.
Pikatarkistus
Testatkaa sagoja koskevat tietonne.
Kertaus
Opitte sagamallin: hajautettu operaatio jaetaan paikallisiin vaiheisiin, joilla on kumoavat kompensaatiotoimet, valitaan choreografia tai orkestrointi ja pidetään vaiheet idempotentteina.
Opi Serverless-kehitys AWS Lambdalla 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
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Saga-malli hajautetuille transaktioille” ilmainen?
Kyllä – oppitunnin ”Saga-malli hajautetuille transaktioille” 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 Serverless-kehitys AWS Lambdalla-kurssin, päivitä CoddyKit PROhon. Serverless-kehitys AWS Lambdalla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Saga-malli hajautetuille transaktioille”?
Opettele koordinoimaan tietomuutoksia useiden palveluiden välillä ilman hajautettuja transaktioita saga-mallin ja kompensoivien toimintojen avulla. Harjoittelet Serverless-kehitys AWS Lambdalla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Serverless-kehitys AWS Lambdalla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Serverless-kehitys AWS Lambdalla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Saga-malli hajautetuille transaktioille”-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ä Serverless-kehitys AWS Lambdalla-oppitunnilla?
Kyllä. Jokainen Serverless-kehitys AWS Lambdalla-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
- Tapahtumaohjattujen mikropalvelujen rakentaminen
- Amazon EventBridgen integrointi
- Reaaliaikainen käsittely Kinesiksellä
- Saga-malli hajautetuille transaktioille