Mikropalveluiden viestintämallit (Saga, Circuit Breaker) · Oppitunti

Orchestration Saga selitettynä

Tutustukaa orkestrointiin perustuvaan lähestymistapaan, jossa erillinen palvelu koordinoi hajautetun tapahtuman vaiheita.

Oppitunti 3/411 vaihetta

Orchestration Saga selitettynä on ilmainen Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-oppitunti CoddyKitissä. Tämä on oppitunti 3/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 Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-kurssilla on yhteensä 4 oppituntia.

Orchestration Sagan esittely

Tervetuloa tutustumaan Orchestration Sagaan! Hajautetussa järjestelmässä liiketoimintatransaktioon täytyy joskus osallistua useita palveluja.

Orchestration Saga on malli, jossa keskitetty palvelu, jota kutsutaan orchestraattoriksi, ohjaa koko transaktion kulkua.

Orchestraattorin rooli

Ajattele orchestraattoria hajautetun transaktion projektipäällikkönä. Se tuntee kaikki vaiheet ja koordinoi niitä.

  • Se lähettää komentoja osallistuville palveluille.
  • Se odottaa palveluilta vastauksia eli tapahtumia.
  • Se päättää seuraavasta vaiheesta vastausten perusteella.

Näin se toimii: yksinkertainen kulku

Toisin kuin Choreography Sagassa, jossa palvelut reagoivat toistensa tapahtumiin, tässä orchestraattori ohjaa toimintaa:

  1. Orchestraattori lähettää komennon palvelulle A.
  2. Palvelu A suorittaa tehtävänsä ja lähettää valmistumistapahtuman takaisin orchestraattorille.
  3. Orchestraattori vastaanottaa tapahtuman ja lähettää komennon palvelulle B.
  4. Tämä jatkuu, kunnes transaktio on valmis.

Esimerkki: verkkotilausprosessi

Käytetään esimerkkinä verkkotilausta. Tilauksen yhteydessä voidaan joutua:

  • Luomaan tilaus Order Servicessä.
  • Varaamaan tuotteet Inventory Servicessä.
  • Käsittelemään maksu Payment Servicessä.
  • Käynnistämään toimitus Shipping Servicessä.

Orchestraattori hallitsisi tätä vaiheittaista prosessia.

Orchestraattorin tilanhallinta

Orchestraattorin on seurattava Sagan nykyistä tilaa ja kontekstia. Sen on siis tallennettava esimerkiksi seuraavat tiedot:

  • Mitkä vaiheet on suoritettu?
  • Mitä tietoja aiemmat vaiheet palauttivat?
  • Mikä on nykyinen tila (esimerkiksi PAYMENT_PENDING tai INVENTORY_RESERVED)?

Tämä tila on ratkaisevan tärkeä seuraavan toiminnon päättämisessä ja virhetilanteiden käsittelyssä.

Komennot ja tapahtumat

Orchestraattori viestii kahden pääasiallisen viestityypin avulla:

  • Komennot: Orchestraattorilta palvelulle lähetettäviä viestejä, jotka kertovat palvelulle, mitä sen tulee tehdä (esimerkiksi ReserveInventory).
  • Tapahtumat: Palvelulta orchestraattorille lähetettäviä viestejä, jotka ilmoittavat lopputuloksen (esimerkiksi InventoryReserved tai PaymentFailed).

Tämä selkeä erottelu auttaa säilyttämään hallinnan.

Virheiden ja kompensaation käsittely

Mitä tapahtuu, jos jokin vaihe epäonnistuu? Orchestraattori vastaa kompensaatiosta.

Jos Payment Service epäonnistuu, orchestraattori havaitsee tapahtuman PaymentFailed. Tämän jälkeen se tietää lähettää aiemmille palveluille kompensaatiokomennot, kuten komennon ReleaseInventory Inventory Servicelle ja komennon CancelOrder Order Servicelle.

Esittely: orchestraattorin kulku

Tarkastellaan yksinkertaistettua Java-esimerkkiä. Tämä ei ole kokonainen mikropalvelu, mutta se näyttää, miten orchestraattorin logiikka voisi edetä simuloitujen palvelutulosten perusteella.

Huomaa, kuinka se seuraa arvoa sagaState ja käynnistää kompensaation, jos maksu epäonnistuu.

public class OrderSagaOrchestrator {

  public static void main(String[] args) {
    System.out.println("Saga Orchestrator Started: Order 123");
    String sagaState = "ORDER_INITIATED";

    System.out.println("Orchestrator: Sending 'CREATE_ORDER' command.");
    // Simulate Order Service success
    sagaState = "ORDER_CREATED";
    System.out.println("Orchestrator: Received 'ORDER_CREATED' event.");

    if (sagaState.equals("ORDER_CREATED")) {
      System.out.println("Orchestrator: Sending 'RESERVE_INVENTORY' command.");
      // Simulate Inventory Service success
      sagaState = "INVENTORY_RESERVED";
      System.out.println("Orchestrator: Received 'INVENTORY_RESERVED' event.");
    }

    if (sagaState.equals("INVENTORY_RESERVED")) {
      System.out.println("Orchestrator: Sending 'PROCESS_PAYMENT' command.");
      // Simulate Payment Service *failure*
      System.out.println("Orchestrator: Received 'PAYMENT_FAILED' event.");
      sagaState = "PAYMENT_FAILED";
    }

    if (sagaState.equals("PAYMENT_FAILED")) {
      System.out.println("Orchestrator: Initiating compensation!");
      System.out.println("Orchestrator: Sending 'CANCEL_ORDER' command.");
      System.out.println("Orchestrator: Sending 'RELEASE_INVENTORY' command.");
      sagaState = "SAGA_COMPENSATED";
      System.out.println("Orchestrator: Saga completed with compensation.");
    } else {
      System.out.println("Orchestrator: Sending 'CONFIRM_ORDER' command.");
      System.out.println("Orchestrator: Sending 'SHIP_ORDER' command.");
      sagaState = "SAGA_COMPLETED_SUCCESSFULLY";
      System.out.println("Orchestrator: Saga completed successfully.");
    }
  }
}

Orchestration-mallin edut

Orchestration Sagat tarjoavat selkeitä etuja:

  • Keskitetty hallinta: Kokonaiskulku on helpompi ymmärtää.
  • Yksinkertaisemmat osallistujapalvelut: Palvelujen ei tarvitse tuntea koko Sagaa, vaan ne noudattavat orchestraattorin komentoja.
  • Helpompi virheenkorjaus: Orchestraattorin tila helpottaa ongelmien jäljittämistä.
  • Eksplisiittinen kompensaatio: Kompensaatiologiikka on määritelty selkeästi orchestraattorissa.

Testaa ymmärryksesi

Mitkä seuraavista väitteistä kuvaavat oikein Orchestration Sagan keskeisiä ominaisuuksia?

Kertaus: Orchestration Saga

Olette oppineet Orchestration Saga -mallista!

  • Se käyttää keskitettyä orchestraattoripalvelua hajautetun transaktion hallintaan.
  • Orchestraattori lähettää palveluille komentoja ja vastaanottaa niiltä vastauksina tapahtumia.
  • Se ylläpitää Sagan tilaa tietääkseen, missä kohdassa transaktiota ollaan.
  • Se käsittelee kompensaation eksplisiittisesti lähettämällä peruutuskomentoja, jos jokin vaihe epäonnistuu.

Tämä malli tarjoaa selkeän hallinnan ja yksinkertaistaa osallistuvien palvelujen toimintaa.

Aloita maksutta

Opi Mikropalveluiden viestintämallit (Saga, Circuit Breaker) 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 ”Orchestration Saga selitettynä” ilmainen?

Kyllä – oppitunnin ”Orchestration Saga selitettynä” 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 Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-kurssin, päivitä CoddyKit PROhon. Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Orchestration Saga selitettynä”?

Tutustukaa orkestrointiin perustuvaan lähestymistapaan, jossa erillinen palvelu koordinoi hajautetun tapahtuman vaiheita. Harjoittelet Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Orchestration Saga selitettynä”-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ä Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-oppitunnilla?

Kyllä. Jokainen Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-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. Mikä on Saga-malli
  2. Choreography Saga selitettynä
  3. Orchestration Saga selitettynä
  4. Choreographyn ja orchestrationin välillä valitseminen
← Takaisin: Mikropalveluiden viestintämallit (Saga, Circuit Breaker)