Cloud & IT Cert Prep · Lektion

SQS Standard- vs FIFO-køer

Sammenlign Standard-køer til maksimalt gennemløb med FIFO-køer til ordnet behandling præcis én gang, og vælg den rigtige type.

Lektion 1 af 413 trin

SQS Standard- vs FIFO-køer er en gratis Cloud & IT Cert Prep-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cloud & IT Cert Prep, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvorfor meddelelseskøer er vigtige

Meddelelseskøer afkobler producenter fra forbrugere: En producent sender en meddelelse til køen uden at vente på, at en forbruger behandler den. Forbrugeren behandler meddelelserne i sit eget tempo. Dette mønster forhindrer hurtige producenter i at overbelaste langsomme forbrugere, muliggør uafhængig skalering af hvert lag og giver en holdbar buffer, hvis forbrugeren midlertidigt ikke er tilgængelig. Amazon SQS er AWS's fuldt administrerede meddelelseskøtjeneste med høj tilgængelighed.

Kendetegn ved SQS Standard Queue

Standardkøer tilbyder ubegrænset gennemløb (næsten ubegrænset antal transaktioner pr. sekund). De garanterer levering mindst én gang—en meddelelse kan i sjældne tilfælde blive leveret mere end én gang (på grund af distribueret infrastruktur). Meddelelsesrækkefølgen følger bedst mulig indsats: Meddelelser leveres generelt i den rækkefølge, de blev sendt, men det er ikke garanteret. Standardkøer er ideelle, når gennemløb er afgørende, og din forbruger kan håndtere lejlighedsvise dubletter og levering i forkert rækkefølge.

# Create a Standard queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue'

# Send a message
aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/OrderProcessingQueue' \
  --message-body 'OrderId-12345'

Kendetegn ved SQS FIFO Queue

FIFO-køer (First-In, First-Out) garanterer behandling præcis én gang og streng meddelelsesrækkefølge. Meddelelser leveres i nøjagtig den rækkefølge, de blev sendt i. FIFO-køer understøtter op til 300 transaktioner pr. sekund (3.000 med batching). Navne på FIFO-køer skal slutte med .fifo. Brug FIFO-køer, når rækkefølge og semantik for behandling præcis én gang er afgørende—f.eks. ved finansielle transaktioner, behandling af e-handelsordrer og lageropdateringer.

# Create a FIFO queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue.fifo' \
  --attributes '{
    "FifoQueue": "true",
    "ContentBasedDeduplication": "true"
  }'

Meddelelsesgrupper i FIFO-køer

FIFO-køer bruger meddelelsesgruppe-id'er til at opdele rækkefølgen i køen. Meddelelser med det samme gruppe-id leveres i rækkefølge, mens meddelelser med forskellige gruppe-id'er kan behandles parallelt. Du kan f.eks. bruge customerId som gruppe-id: Hver kundes ordrer behandles sekventielt, mens forskellige kunders ordrer behandles samtidigt. Det giver FIFO-semantik med horisontal skalerbarhed på tværs af forbrugere.

aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/Orders.fifo' \
  --message-body 'Order details here' \
  --message-group-id 'customer-789' \
  --message-deduplication-id 'order-uuid-abc123'

Deduplicering i FIFO-køer

FIFO-køer forhindrer behandling af duplikerede meddelelser ved hjælp af et deduplikerings-id. Hvis to meddelelser sendes med det samme id inden for et deduplikeringsinterval på 5 minutter, kasseres den anden lydløst. Du kan angive et deduplikerings-id eksplicit (MessageDeduplicationId) eller aktivere indholdsbaseret deduplicering, hvor SQS automatisk beregner en SHA-256-hash af meddelelsens brødtekst som deduplikerings-id. Indholdsbaseret deduplicering er enklere, men kræver entydige meddelelsesbrødtekster.

Grænser for opbevaring og størrelse af meddelelser

SQS opbevarer meddelelser i en konfigurerbar periode: mindst 1 minut og højst 14 dage (standardindstillingen er 4 dage). Meddelelser, der ikke er blevet forbrugt inden for opbevaringsperioden, slettes automatisk. Den maksimale meddelelsesstørrelse er 256 KB. Ved større nyttedata kan du bruge SQS Extended Client Library eller gemme nyttedataene i S3 og kun sende S3-objektreferencen i SQS-meddelelsen. Standard- og FIFO-køer har de samme grænser.

Modtagelse og sletning af meddelelser

Forbrugere spørger køen med receive-message. Efter modtagelsen bliver meddelelsen usynlig (skjult for andre forbrugere) i perioden for synlighedstimeout. Forbrugeren skal behandle meddelelsen og derefter udtrykkeligt slette den ved hjælp af kvitteringsreferencen, før timeoutet udløber. Hvis forbrugeren går ned eller ikke sletter meddelelsen i tide, bliver den synlig igen, så en anden forbruger kan behandle den—hvilket muliggør levering mindst én gang i standardkøer.

RECEIPT=$(aws sqs receive-message \
  --queue-url 'https://...' \
  --query 'Messages[0].ReceiptHandle' --output text)

# Process message, then delete it
aws sqs delete-message \
  --queue-url 'https://...' \
  --receipt-handle "$RECEIPT"

Sammenligning af gennemløb i praksis

Standardkøer egner sig til: generering af miniaturebilleder, udsendelse af e-mails med notifikationer og behandling af logge—arbejdsbelastninger, hvor dubletter kan håndteres idempotent, og rækkefølgen er ligegyldig. FIFO-køer er nødvendige til: behandling af bankoverførsler (debet før kredit), opdateringer af indkøbskurve i e-handel (tilføj vare før betaling) og arbejdsgangstrin, hvor trin 2 skal følge efter trin 1. I de fleste arkitekturer med højt gennemløb er standardkøer det naturlige valg; skift kun til FIFO, når rækkefølge eller levering præcis én gang er et ufravigeligt krav.

Batching for gennemløb og omkostninger

SQS opkræver betaling pr. API-anmodning. Brug batchhandlinger til at sende, modtage og slette op til 10 meddelelser pr. API-kald, så du kan reducere omkostningerne med op til 10 gange. FIFO-køer understøtter tilstanden for højt gennemløb (som aktiverer batching), hvilket hæver grænsen til 3.000 meddelelser pr. sekund med batching af 10. Brug altid send-message-batch og delete-message-batch i produktion for at minimere omkostningerne til API-kald.

aws sqs send-message-batch \
  --queue-url 'https://...' \
  --entries '[
    {"Id": "msg1", "MessageBody": "Order-001"},
    {"Id": "msg2", "MessageBody": "Order-002"},
    {"Id": "msg3", "MessageBody": "Order-003"}
  ]'

Adgangspolitikker for køer

SQS-køer sikres med ressourcebaserede politikker (køpolitikker), der styrer, hvem der må sende til eller modtage fra køen. Det er afgørende, når du tillader adgang på tværs af konti, eller når SNS publicerer til en SQS-kø. Lambdas adgang til SQS styres af IAM-politikken for Lambdas udførelsesrolle (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes). Anvend altid princippet om mindst mulige privilegier: Giv ikke en forbruger flere tilladelser end til at modtage og slette.

Valg mellem Standard og FIFO: En beslutningsvejledning

Stil dig selv disse spørgsmål for at vælge: (1) Er rækkefølgen vigtig? Hvis ja → FIFO. (2) Er behandling præcis én gang påkrævet? Hvis ja → FIFO. (3) Er der brug for et gennemløb på over 3.000 TPS? Hvis ja → Standard (FIFO er begrænset til 3.000 TPS med batching). (4) Kan forbrugere håndtere dubletter? Hvis ja → Standard er enklere og billigere. Til SAA-C03-eksamen er nøgleordene for FIFO: 'rækkefølge', 'præcis én gang', 'sekventiel', 'deduplicering'. Nøgleordene for Standard er: 'højt gennemløb', 'bedst mulig indsats', 'mindst én gang'.

Hurtigt tjek

Test din forståelse af begreberne i AWS Solutions Architect (SAA-C03) fra denne lektion.

Opsummering af lektionen

I denne lektion har du lært: Standardkøer tilbyder ubegrænset gennemløb med levering mindst én gang og rækkefølge efter bedste indsats, hvilket egner sig til arbejdsbelastninger med store mængder, der kan tåle dubletter; FIFO-køer garanterer behandling præcis én gang og streng meddelelsesrækkefølge ved hjælp af meddelelsesgruppe-id'er og deduplikerings-id'er, med en grænse på 3.000 TPS med batching; og valget mellem dem afhænger af, om rækkefølge og deduplicering er ufravigelige krav. Næste gang ser vi på synlighedstimeout, køer til fejlslagne meddelelser og long polling.

Gratis at komme i gang

Lær Cloud & IT Cert Prep med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
150
Lektioner
600

Ofte stillede spørgsmål

Er lektionen “SQS Standard- vs FIFO-køer” gratis?

Ja — hele teksten til “SQS Standard- vs FIFO-køer” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cloud & IT Cert Prep-kurset, skal du opgradere til CoddyKit PRO. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “SQS Standard- vs FIFO-køer”?

Sammenlign Standard-køer til maksimalt gennemløb med FIFO-køer til ordnet behandling præcis én gang, og vælg den rigtige type. Du øver dig i Cloud & IT Cert Prep med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cloud & IT Cert Prep?

Der kræves ingen tidligere erfaring. Cloud & IT Cert Prep på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “SQS Standard- vs FIFO-køer”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cloud & IT Cert Prep-lektion?

Ja. Alle Cloud & IT Cert Prep-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. SQS Standard- vs FIFO-køer
  2. Visibility timeout, DLQ og long polling
  3. SNS-topics og fan-out-arkitektur
  4. SQS-meddelelsesfiltrering og SNS + SQS-integration
← Tilbage til Cloud & IT Cert Prep