Grunnleggende om hendelsesdrevet arkitektur
Forstå prinsippene i hendelsesdrevne arkitekturer og hvordan Lambda-funksjoner reagerer på hendelser som genereres av andre tjenester
Grunnleggende om hendelsesdrevet arkitektur er en gratis leksjon i Serverløs utvikling med AWS Lambda på CoddyKit. Dette er leksjon 1 av 4. 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 Serverløs utvikling med AWS Lambda, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Serverløs utvikling med AWS Lambda inneholder totalt 4 leksjoner.
Hva betyr hendelsesdrevet?
Se for deg en restaurant der bestillinger tas imot, mat lages og regninger betales. I et tradisjonelt oppsett må hvert trinn kanskje vente på at det forrige skal bli ferdig.
Event-Driven Architecture (EDA) er annerledes. Det kan sammenlignes med mange uavhengige stasjoner som reagerer på det som skjer rundt dem, uten direkte instrukser.
Forstå hendelser
I sin enkleste form er en event ganske enkelt et signal om at «noe har skjedd». Det er en registrering av en tilstandsendring eller en handling som har funnet sted i et system.
- En bruker klikker på en knapp
- En fil lastes opp
- En ny bestilling legges inn
- En sensor registrerer bevegelse
Dette er alle eksempler på hendelser!
Viktige deler av EDA
Event-Driven Architecture består av tre hovedkomponenter:
- Event Source: Systemet eller tjenesten som genererer en hendelse (for eksempel et brukergrensesnitt eller en databaseendring).
- Event: Datapakken som beskriver hva som skjedde.
- Event Consumer/Processor: En tjeneste som lytter etter og reagerer på bestemte hendelser (for eksempel en AWS Lambda-funksjon).
Hendelser sendes ofte gjennom en Event Bus eller Queue, som hjelper med å rute dem til de riktige konsumentene.
Fordeler med hendelsesdrevet arkitektur
EDA gir moderne apper flere kraftige fordeler:
- Loose Coupling: Komponentene «kjenner» ikke hverandre direkte, men forholder seg bare til hendelsene. Det gjør systemene enklere å oppdatere og vedlikeholde.
- Scalability: Hendelseskonsumenter kan skaleres uavhengig basert på belastningen fra hendelsene.
- Responsiveness: Systemer kan reagere på endringer i sanntid, noe som gir en mer dynamisk brukeropplevelse.
- Resilience: Hvis én komponent svikter, kan de andre ofte fortsette å behandle hendelser.
Lambda og hendelsesbehandlere
AWS Lambda passer perfekt til Event-Driven Architecture. Den fungerer som en event consumer eller event processor.
Tenk på Lambda-funksjoner som små, spesialiserte arbeidere som «sover» til en hendelse vekker dem. Når hendelsen er behandlet, sovner de igjen.
Starte Lambda med hendelser
Et viktig Lambda-konsept er at du ikke starter funksjonen manuelt på tradisjonelt vis. I stedet publiserer andre AWS-tjenester eller egendefinerte apper hendelser.
Når det oppstår en hendelse som samsvarer med konfigurasjonen til en Lambda-funksjon, starter Lambda automatisk denne funksjonen. Det hele skjer automatisk!
Inne i en hendelse (JSON)
Hendelser er vanligvis strukturerte data, ofte i JSON-format. De inneholder informasjon om hva som skjedde, når det skjedde og hvor det skjedde.
Her er et forenklet eksempel på hvordan en hendelse kan se ut:
{
"version": "0",
"id": "abc-123-def-456",
"detail-type": "MyCustomEvent",
"source": "my.application",
"time": "2023-10-27T12:34:56Z",
"detail": {
"userId": "user123",
"action": "itemAddedToCart",
"itemId": "product789"
}
}Hendelsesflyt i praksis
La oss følge en enkel hendelsesflyt:
- En bruker legger en vare i handlekurven i appen din (Event Source).
- Appen din publiserer en "
itemAddedToCart"-Event. - En AWS Lambda-funksjon (Event Consumer) er konfigurert til å lytte etter denne bestemte hendelsen.
- Lambda-funksjonen kjører automatisk, kanskje for å oppdatere lagerbeholdningen eller sende en personlig anbefaling.
Appen trenger ikke å vite hvordan lagerbeholdningen oppdateres; den publiserer bare hendelsen.
Lambda-hendelsesbehandler
Når Lambda startes, sender den hendelsesdataene til funksjonen din. I Java kommer disse dataene ofte som en Map eller et egendefinert objekt.
Prøv å kjøre denne enkle Java-Lambda-funksjonen. Den skriver ut de innkommende hendelsesdataene:
import java.util.HashMap;
import java.util.Map;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class MyEventHandler implements RequestHandler<Map<String, Object>, String> {
@Override
public String handleRequest(Map<String, Object> event, Context context) {
// Lambda receives the event as input
System.out.println("Received event:");
event.forEach((key, value) -> System.out.println(" " + key + ": " + value));
// You can access specific event data, e.g., from a "detail" field
if (event.containsKey("detail") && event.get("detail") instanceof Map) {
Map<String, Object> detail = (Map<String, Object>) event.get("detail");
System.out.println("Detail action: " + detail.get("action"));
}
return "Event processed successfully!";
}
// Main method for local testing (not executed by Lambda runtime)
public static void main(String[] args) {
Map<String, Object> testEvent = new HashMap<>();
testEvent.put("version", "0");
testEvent.put("id", "test-id-123");
testEvent.put("detail-type", "UserAction");
testEvent.put("source", "my.test.app");
Map<String, Object> detailMap = new HashMap<>();
detailMap.put("userId", "testUser");
detailMap.put("action", "login");
testEvent.put("detail", detailMap);
MyEventHandler handler = new MyEventHandler();
String result = handler.handleRequest(testEvent, null);
System.out.println("--- Local Test Result ---");
System.out.println(result);
}
}Quiz om hendelsesdrevet arkitektur
Hvilket av følgende beskriver best rollen til en AWS Lambda-funksjon i en Event-Driven Architecture?
Oppsummering og neste steg
Godt jobbet! Du har lært det grunnleggende om Event-Driven Architecture og hvordan AWS Lambda passer inn i dette kraftige paradigmet.
- Events er signaler om at noe har skjedd.
- EDA bruker hendelser til å bygge løst koblede og skalerbare systemer.
- Lambda-funksjoner er perfekte event consumers og startes automatisk av hendelser.
Deretter skal vi se nærmere på bestemte AWS-tjenester som kan utløse Lambda-funksjonene dine!
Lær deg Serverløs utvikling med AWS Lambda 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
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Grunnleggende om hendelsesdrevet arkitektur» gratis?
Ja – hele teksten i «Grunnleggende om hendelsesdrevet arkitektur» 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 Serverløs utvikling med AWS Lambda-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Serverløs utvikling med AWS Lambda inneholder totalt 4 leksjoner.
Hva lærer jeg i «Grunnleggende om hendelsesdrevet arkitektur»?
Forstå prinsippene i hendelsesdrevne arkitekturer og hvordan Lambda-funksjoner reagerer på hendelser som genereres av andre tjenester Du øver på Serverløs utvikling med AWS Lambda 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 Serverløs utvikling med AWS Lambda?
Ingen tidligere erfaring er nødvendig. Serverløs utvikling med AWS Lambda 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 1 av 4.
Hvor lang tid tar leksjonen «Grunnleggende om hendelsesdrevet arkitektur»?
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 Serverløs utvikling med AWS Lambda-leksjonen?
Ja. Alle Serverløs utvikling med AWS Lambda-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
- Grunnleggende om hendelsesdrevet arkitektur
- Kall opp Lambda med API Gateway
- Hendelsesutløsere for S3 og SQS
- Planlagte kjøringer med EventBridge