Spring Boot 4-mikrotjenester og REST API-er · leksjon

Oversikt over hendelsesdrevne arkitekturer

Få en introduksjon til asynkron kommunikasjon ved hjelp av hendelser i et mikrotjenestemiljø.

Leksjon 3 av 311 trinn

Oversikt over hendelsesdrevne arkitekturer er en gratis leksjon i Spring Boot 4-mikrotjenester og REST API-er på CoddyKit. Dette er leksjon 3 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Spring Boot 4-mikrotjenester og REST API-er, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Spring Boot 4-mikrotjenester og REST API-er inneholder totalt 3 leksjoner.

Velkommen til hendelsesdrevet arkitektur

I mikrotjenester trenger tjenestene ofte å kommunisere med hverandre. Vi har sett synkron kommunikasjon, for eksempel REST-kall.

I dag skal vi se nærmere på hendelsesdrevne arkitekturer (EDA), en kraftig måte for tjenester å kommunisere asynkront på.

Hva er hendelsesdrevet arkitektur?

En hendelsesdrevet arkitektur (EDA) er et programvaredesignmønster der tjenester kommuniserer ved å produsere og konsumere hendelser.

  • I stedet for direkte forespørsler reagerer tjenester på ting som skjer.
  • Det kan sammenlignes med nyheter: Et nyhetsbyrå publiserer en sak (en hendelse), og mange lesere (konsumenter) kan abonnere på den for å lese den.

Hva er en hendelse?

En hendelse er en betydningsfull forekomst eller tilstandsendring i et system. Den er en registrering av noe som har skjedd.

  • Den er uforanderlig: Når en hendelse først har oppstått, kan den ikke endres.
  • Hendelser er vanligvis små meldinger som inneholder data om forekomsten.
  • Eksempler: OrderCreated, PaymentProcessed, UserLoggedIn.

Viktig komponent: Hendelsesprodusenter

En hendelsesprodusent (eller utgiver) er en tjeneste som oppdager en hendelse og sender den videre.

  • Når en ordre legges inn, kan Order Service være produsenten som oppretter en OrderCreated-hendelse.
  • Produsenter bryr seg ikke om hvem som mottar hendelsen, bare at den publiseres. Dette er avgjørende for løs kobling!

Viktig komponent: Hendelseskonsumenter

En hendelseskonsument (eller abonnent) er en tjeneste som lytter etter bestemte hendelser og reagerer på dem.

  • Når en OrderCreated-hendelse publiseres, kan Inventory Service konsumere den for å oppdatere lagerbeholdningen.
  • Notification Service kan også konsumere den for å sende en e-post til kunden.
  • Flere konsumenter kan lytte etter den samme hendelsen.

Viktig komponent: Meldingsmegler

En meldingsmegler (eller hendelsesbuss) er et sentralt knutepunkt som legger til rette for kommunikasjon mellom produsenter og konsumenter.

  • Produsenter sender hendelser til megleren.
  • Konsumenter leser hendelser fra megleren.
  • Den sørger for pålitelig levering og kobler tjenestene fra hverandre. Populære eksempler er Kafka og RabbitMQ.

Hendelsesflyt: Fra produsent til konsument

Slik flyter hendelser vanligvis:

  1. En produsent utfører en handling (for eksempel oppretter en ordre).
  2. Produsenten oppretter en hendelse (for eksempel OrderCreated) og sender den til meldingsmegleren.
  3. Meldingsmegleren lagrer hendelsen og gjør den tilgjengelig.
  4. Én eller flere konsumenttjenester abonnerer på bestemte hendelsestyper.
  5. Konsumentene mottar hendelsen fra megleren og behandler den uavhengig av hverandre.

Fordeler med EDA

EDA gir betydelige fordeler for mikrotjenester:

  • Løs kobling: Tjenestene trenger ikke å kjenne direkte til hverandre.
  • Skalerbarhet: Du kan enkelt legge til flere konsumenter for å håndtere økt hendelsesvolum.
  • Robusthet: Hvis en konsument er nede, holder megleren på hendelsene til konsumenten er tilgjengelig igjen.
  • Sanntidsbehandling: Reager på endringer idet de skjer, slik at du kan bygge dynamiske systemer.

Konseptuell hendelseskode

Denne enkle Java-koden illustrerer ideen om at én tjeneste «publiserer» en hendelse og en annen «konsumerer» den, uten et fullstendig oppsett med meldingsmegler. Tenk deg at OrderService er en produsent og InventoryService er en konsument.

public class EventDrivenDemo {

  // Represents an event
  static class OrderCreatedEvent {
    String orderId;
    OrderCreatedEvent(String id) { this.orderId = id; }
  }

  // Simulates an Event Producer
  static class OrderService {
    public void createOrder(String orderId) {
      System.out.println("OrderService: Creating order " + orderId);
      OrderCreatedEvent event = new OrderCreatedEvent(orderId);
      // In real life, send to a message broker
      EventBus.publish(event);
    }
  }

  // Simulates an Event Consumer
  static class InventoryService {
    public void handleOrderCreated(OrderCreatedEvent event) {
      System.out.println("InventoryService: Consumed OrderCreatedEvent for order " + event.orderId);
      System.out.println("InventoryService: Updating stock for order " + event.orderId);
    }
  }

  // A very basic 'Event Bus' for demonstration
  static class EventBus {
    static InventoryService inventoryConsumer = new InventoryService();

    public static void publish(Object event) {
      if (event instanceof OrderCreatedEvent) {
        inventoryConsumer.handleOrderCreated((OrderCreatedEvent) event);
      }
      // Add other event types and consumers here
    }
  }

  public static void main(String[] args) {
    OrderService orderService = new OrderService();
    orderService.createOrder("ORD-001");
    orderService.createOrder("ORD-002");
  }
}

Kort kontroll: Grunnleggende EDA

Hvilket av alternativene nedenfor er en viktig fordel ved å bruke en hendelsesdrevet arkitektur i mikrotjenester?

Oppsummering: Hendelsesdrevne arkitekturer

Godt jobbet! Du har lært det grunnleggende om hendelsesdrevne arkitekturer.

  • EDA innebærer at tjenester kommuniserer asynkront ved hjelp av hendelser.
  • De viktigste komponentene er produsenter, konsumenter og en meldingsmegler.
  • Fordelene omfatter løs kobling, skalerbarhet og robusthet.
  • Dette mønsteret er avgjørende for å bygge robuste og fleksible mikrotjenestesystemer.
Gratis å komme i gang

Lær deg Java med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
24
Leksjoner
93

Ofte stilte spørsmål

Er leksjonen «Oversikt over hendelsesdrevne arkitekturer» gratis?

Ja – hele teksten i «Oversikt over hendelsesdrevne arkitekturer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Spring Boot 4-mikrotjenester og REST API-er-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Spring Boot 4-mikrotjenester og REST API-er inneholder totalt 3 leksjoner.

Hva lærer jeg i «Oversikt over hendelsesdrevne arkitekturer»?

Få en introduksjon til asynkron kommunikasjon ved hjelp av hendelser i et mikrotjenestemiljø. Du øver på Spring Boot 4-mikrotjenester og REST API-er med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Spring Boot 4-mikrotjenester og REST API-er?

Ingen tidligere erfaring er nødvendig. Spring Boot 4-mikrotjenester og REST API-er på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 3.

Hvor lang tid tar leksjonen «Oversikt over hendelsesdrevne arkitekturer»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Spring Boot 4-mikrotjenester og REST API-er-leksjonen?

Ja. Alle Spring Boot 4-mikrotjenester og REST API-er-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Dele opp monolitter i mikrotjenester
  2. Grunnleggende kommunikasjon mellom tjenester
  3. Oversikt over hendelsesdrevne arkitekturer
← Tilbake til Spring Boot 4-mikrotjenester og REST API-er