
Laravel Distributed Systems
Queue-basierte Kommunikation, Events, Outbox Pattern, Idempotenz, Retries, Circuit Breaker, API-Verträge, Versionierung, Saga-Grundlagen
1Was ist das Outbox Pattern in verteilten Laravel-Systemen?
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.
2Was ist der Hauptunterschied zwischen ShouldQueue und ShouldQueueAfterCommit?
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.
3Was ist Idempotenz im Kontext verteilter Laravel-Systeme?
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.
Was ist der Hauptvorteil der Verwendung von Events anstelle des direkten Job-Dispatch für die Kommunikation zwischen Diensten?
In welchem Kontext sollte ShouldBeEncrypted für queued Jobs verwendet werden?
+19 Interview-Fragen
Weitere Laravel-Interviewthemen
PHP-Grundlagen
PHP OOP-Grundlagen
Composer & Autoloading
Laravel-Grundlagen
Laravel Routing
Blade Templates
Request & Response
Eloquent ORM Grundlagen
Eloquent Relationships
Migrations & Schema Builder
Validierung & Formulare
Authentifizierung
Autorisierung & Policies
API Resources & Authentication
Middleware
Service Container & DI
Queues & Jobs
Events & Listeners
Benachrichtigungen & Mail
File Storage
Testing & PHPUnit
Caching
Livewire & Inertia
Eloquent Advanced
Repository Pattern
Laravel Packages
Performance Optimization
Security Best Practices
Laravel Octane
Observability & Monitoring
Deployment & DevOps
Meistere Laravel für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten