Laravel

Laravel Distributed Systems

Queue-basierte Kommunikation, Events, Outbox Pattern, Idempotenz, Retries, Circuit Breaker, API-Verträge, Versionierung, Saga-Grundlagen

22 Interview-Fragen·
Senior
1

Was ist das Outbox Pattern in verteilten Laravel-Systemen?

Antwort

Das Outbox Pattern speichert Messages/Events in einer Database-Tabelle innerhalb derselben Transaktion wie die Geschäftsdaten und sendet sie anschließend asynchron in einem separaten Prozess. Dadurch wird sichergestellt, dass Messages immer gesendet werden, selbst wenn das System nach dem DB-Commit abstürzt. Laravels ShouldQueueAfterCommit ist eine teilweise Implementierung dieses Patterns, da es den Job erst nach dem Transaktions-Commit dispatcht und so Race Conditions vermeidet, bei denen der Job ausgeführt wird, bevor die Daten verfügbar sind.

2

Was ist der Hauptunterschied zwischen ShouldQueue und ShouldQueueAfterCommit?

Antwort

ShouldQueue dispatcht den Job sofort in die Queue, selbst wenn die DB-Transaktion noch nicht committet ist, was Race Conditions verursachen kann. ShouldQueueAfterCommit wartet, bis alle DB-Transaktionen committet sind, bevor der Job dispatcht wird, und stellt so sicher, dass die Daten bei der Ausführung des Jobs verfügbar sind. Verwende ShouldQueueAfterCommit für Jobs, die von frisch erstellten oder geänderten Daten in einer Transaktion abhängen, zum Beispiel ein E-Mail-Versand-Job nach der Bestellerstellung.

3

Was ist Idempotenz im Kontext verteilter Laravel-Systeme?

Antwort

Idempotenz bedeutet, dass eine Operation mehrfach ausgeführt werden kann, ohne das Ergebnis über die erste Ausführung hinaus zu verändern. In Laravel verhindert dies unerwünschte Nebenwirkungen bei Job-Retries oder doppelten Messages. Ein idempotenter Job zur Bestellerstellung prüft beispielsweise, ob die Bestellung bereits existiert, bevor er sie erstellt, und vermeidet so Duplikate, wenn der Job nach einem Timeout erneut versucht wird. Verwende ShouldBeUnique, WithoutOverlapping oder deduplicationId, um Idempotenz sicherzustellen.

4

Was ist der Hauptvorteil der Verwendung von Events anstelle des direkten Job-Dispatch für die Kommunikation zwischen Diensten?

5

In welchem Kontext sollte ShouldBeEncrypted für queued Jobs verwendet werden?

+19 Interview-Fragen

Meistere Laravel für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten