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

Tilakoneet orkestrointia varten

Soveltakaa tilakoneiden käsitteitä vankkojen ja ennakoitavien Saga-orkestroijien rakentamiseen ja tapahtuman etenemisen seuraamiseen.

Oppitunti 2/411 vaihetta

Tilakoneet orkestrointia varten on ilmainen Mikropalveluiden viestintämallit (Saga, Circuit Breaker)-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 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.

Tilakoneet sagoja varten

Tervetuloa oppitunnille, jossa opetellaan käyttämään tilakoneita vankkojen sagan orkestroijien rakentamiseen!

Orkestrointisagat hallitsevat monimutkaisia hajautettuja tapahtumia seuraamalla koko prosessin etenemistä. Tilakoneet ovat tehokas työkalu tähän.

Miksi tilakoneita käytetään

Sagan orkestroijan on tiedettävä liiketoimintaprosessin täsmällinen tila millä hetkellä tahansa. Näin se voi:

  • päättää seuraavasta suoritettavasta toiminnosta
  • käsitellä virheitä ja käynnistää kompensaation
  • varmistaa yhdenmukaisuuden useiden palveluiden välillä

Tilakoneet tarjoavat selkeän ja jäsennellyn tavan mallintaa tätä monimutkaista logiikkaa.

Tilakoneen perusteet

Perusmuodossaan tilakone koostuu kolmesta pääkäsitteestä:

  • Tilat: Kuvaavat sagan eri vaiheita tai tilanteita (esimerkiksi OrderCreated, PaymentPending).
  • Tapahtumat: Tapahtumia, jotka käynnistävät sagan muutoksia (esimerkiksi PaymentSuccessful, ShipmentFailed).
  • Siirtymät: Säännöt, jotka määrittävät, miten tapahtuma siirtää sagan tilasta toiseen.

Esimerkki: tilauksen käsittelyn saga

Tarkastellaan yleistä tilannetta: verkossa tehdyn tilauksen käsittelyn sagaa.

Tähän sagaan voi liittyä useita palveluita:

  • Tilauspalvelu
  • Maksupalvelu
  • Toimituspalvelu

Orkestroijan on koordinoitava nämä vaiheet.

Sagan tilojen määrittäminen

Tilauksen käsittelyn sagalle voidaan määrittää esimerkiksi seuraavat tilat:

  • ORDER_CREATED: Alkutila.
  • PAYMENT_PENDING: Maksuvahvistusta odotetaan.
  • PAID: Maksu onnistui.
  • SHIPPING_PENDING: Toimituksen aloittamista odotetaan.
  • SHIPPED: Tuote on lähetetty.
  • CANCELLED: Tilaus on peruutettu (virheen tai käyttäjän toiminnan vuoksi).

Sagan tapahtumien määrittäminen

Myös seuraavat tapahtumat voivat esiintyä:

  • ORDER_PLACED: Asiakas tekee tilauksen.
  • PAYMENT_SUCCESS: Maksupalvelu vahvistaa maksun.
  • PAYMENT_FAILED: Maksupalvelu ilmoittaa epäonnistumisesta.
  • SHIPMENT_SUCCESS: Toimituspalvelu vahvistaa lähetyksen.
  • SHIPMENT_FAILED: Toimituspalvelu ilmoittaa ongelmasta.
  • ORDER_CANCELLED_REQUEST: Käyttäjä pyytää peruutusta.

Tilasiirtymien logiikka

Tilakoneen ydin on sen siirtymälogiikka: Nykyinen tila + tapahtuma = uusi tila (ja mahdollisesti toiminto).

Esimerkiksi:

  • Jos tila on ORDER_CREATED ja tapahtuu ORDER_PLACED, siirrytään tilaan PAYMENT_PENDING.
  • Jos tila on PAYMENT_PENDING ja tapahtuu PAYMENT_SUCCESS, siirrytään tilaan PAID.

Näin sagan kulku määritellään ennakoitavalla tavalla.

Koodi: yksinkertainen tilasiirtymä

Tässä on yksinkertaistettu Java-esimerkki, joka havainnollistaa, miten tilat ja tapahtumat voivat ohjata orkestroijan siirtymiä.

Kokeilkaa suorittaa ohjelma nähdäksenne tilojen muutokset!

public class SimpleSagaState {

    public enum SagaStepState {
        STARTED,
        PROCESSING_PAYMENT,
        PAYMENT_COMPLETE,
        FAILED
    }

    private SagaStepState currentState;

    public SimpleSagaState() {
        this.currentState = SagaStepState.STARTED;
    }

    public SagaStepState getCurrentState() {
        return currentState;
    }

    public void processEvent(String event) {
        System.out.println("Event: " + event);
        switch (currentState) {
            case STARTED:
                if ("OrderCreated".equals(event)) {
                    currentState = SagaStepState.PROCESSING_PAYMENT;
                }
                break;
            case PROCESSING_PAYMENT:
                if ("PaymentSuccess".equals(event)) {
                    currentState = SagaStepState.PAYMENT_COMPLETE;
                } else if ("PaymentFailed".equals(event)) {
                    currentState = SagaStepState.FAILED;
                }
                break;
            case PAYMENT_COMPLETE:
                // After payment, might go to shipping, etc.
                break;
            case FAILED:
                System.out.println("Saga already failed.");
                break;
        }
        System.out.println("New State: " + currentState);
    }

    public static void main(String[] args) {
        SimpleSagaState saga = new SimpleSagaState();
        System.out.println("Initial State: " + saga.getCurrentState());

        saga.processEvent("OrderCreated");
        saga.processEvent("PaymentSuccess");
        saga.processEvent("ShipmentInitiated"); // This event won't change state in this simplified example

        System.out.println("Final State: " + saga.getCurrentState());
    }
}

Kompensaatio tilojen avulla

Yksi sagojen tilakoneiden käytön suurimmista eduista on se, että ne yksinkertaistavat kompensaatiologiikkaa.

Jos palvelu epäonnistuu, orkestroija vastaanottaa epäonnistumisesta kertovan tapahtuman. Nykyisen tilan perusteella tilakone voi määrittää, mitkä kompensaatiotoimet on käynnistettävä aiemmin onnistuneiden vaiheiden kumoamiseksi.

Jos esimerkiksi tila on PAID ja tapahtuu SHIPMENT_FAILED, tilakone voi siirtyä tilaan CANCELLED ja käynnistää hyvityksen.

Tilasiirtymää koskeva kysymys

Tarkastellaan tilakonetta käyttävää tilaussagaa. Tilauksen nykyinen tila on PAYMENT_PENDING.

Jos orkestroija vastaanottaa PAYMENT_FAILED-tapahtuman, mikä on sagan sopivin seuraava tila, joka yleensä ilmaisee kompensaation käynnistämisen?

Kertaus: tilat orkestrointia varten

Tässä oppitunnissa tarkastelimme, miksi tilakoneet ovat keskeisiä vankkojen sagan orkestroijien rakentamisessa.

  • Ne tarjoavat selkeän mallin sagan etenemisen seuraamiseen.
  • Tilat, tapahtumat ja siirtymät määrittävät sagan kulun.
  • Ne helpottavat monimutkaisen logiikan, erityisesti kompensaation, käsittelyä.

Määrittämällä tilat ja siirtymät yksiselitteisesti luotte ennakoitavia ja vikasietoisia hajautettuja tapahtumia.

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 ”Tilakoneet orkestrointia varten” ilmainen?

Kyllä – oppitunnin ”Tilakoneet orkestrointia varten” 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 ”Tilakoneet orkestrointia varten”?

Soveltakaa tilakoneiden käsitteitä vankkojen ja ennakoitavien Saga-orkestroijien rakentamiseen ja tapahtuman etenemisen seuraamiseen. 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 2/4.

Kuinka kauan ”Tilakoneet orkestrointia varten”-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. Saga-orkestroijien suunnittelu
  2. Tilakoneet orkestrointia varten
  3. Toteutus työnkulkujärjestelmällä
  4. Orkestroitujen sagojen testaaminen
← Takaisin: Mikropalveluiden viestintämallit (Saga, Circuit Breaker)