Zum Inhalt springen
serdjukow.eu

Interaktives Labor

Die Pipeline herausfordern

Ein lebendes Modell eines Queue-basierten, eventgetriebenen Systems: Producer, eine API, eine Queue, ein begrenzter Worker-Pool, ein idempotenter Store und eine Dead-Letter-Queue. An den Reglern drehen, Störungen auslösen und zusehen, wie es sich erholt.

pausiertt = 0,0 sStabil

Animiertes Diagramm: Events fließen von drei Producern über eine API in eine Queue, werden von einem Worker-Pool abgeholt und in einen Store geschrieben. Fehlgeschlagene Versuche laufen mit Backoff zurück, dauerhaft fehlschlagende Nachrichten landen in der Dead-Letter-Queue, Duplikate werden am Store abgefangen. Die Kennzahlen und der Ereignis-Feed darunter beschreiben denselben Zustand als Text.

Szenarien

Last deutlich unter der Kapazität. Die Queue bleibt fast leer, vereinzelte Fehler werden still wiederholt.

Steuerung

6 Lanes

Parallel arbeitende Worker. Mehr Lanes, mehr Kapazität.

4 /s

Events pro Sekunde, die die Producer senden.

700 ms

Mittlere Dauer eines Versuchs im Worker.

2 %

Wahrscheinlichkeit, dass ein Versuch scheitert und wiederholt wird.

0 %

Wahrscheinlichkeit, dass ein Event nie erfolgreich sein kann.

1 %

At-least-once: Wahrscheinlichkeit, dass eine Zustellung doppelt ankommt.

3×

Versuche, bevor eine Nachricht in die DLQ wandert.

900 ms

Wartezeit vor dem ersten Retry; verdoppelt sich pro Versuch.

Live-Kennzahlen

Durchsatz
–/s
Queue-Tiefe
–
In Bearbeitung
–
Älteste Nachricht
–s
Retries
–
Dead Letters
–
Abgefangene Duplikate
–

Ankünfte vs. Durchsatz

  • Ankünfte
  • Durchsatz
  • Kapazität
Letzte 60 Sekunden simulierter Zeit, Events pro Sekunde.y: Events/s · x: Sekunden zurück

Was gerade passiert

  1. Bisher ruhig. Ein Szenario wählen oder einen Burst senden.

Zum Ausprobieren

  1. „Lastspitze“ starten, den Rückstau abwarten, dann die Nebenläufigkeit erhöhen und messen, wie lange der Abbau dauert.
  2. Transiente Fehler auf 40 % und maxReceiveCount auf 1 stellen: Jeder Fehler geht direkt in die DLQ. Danach 5 Versuche erlauben.
  3. Eine Poison Message einschleusen und verfolgen: drei Versuche, längere Backoffs, dann die DLQ, während alles andere weiterfließt.
  4. Duplikate auf 20 % drehen und auf den Store achten: „verarbeitet“ zählt kein Event doppelt.

Ein Lehrmodell, kein Benchmark: Zeiten und Raten sind vereinfacht und beschreiben kein reales Produktivsystem.

Gebaut mit Next.js 16, Tailwind CSS und CanvasGehostet auf VercelGitHub (öffnet in einem neuen Tab)Stand