Laravel

Laravel Distributed Systems

Queue-based communication, events, outbox pattern, idempotency, retries, circuit breaker, API contracts, versioning, saga basics

22 questions d'entretien·
Senior
1

Qu'est-ce que l'outbox pattern dans les systèmes distribués Laravel ?

Réponse

L'outbox pattern consiste à stocker les messages/events dans une table database lors de la même transaction que les données métier, puis les envoyer de manière asynchrone dans un processus séparé. Cela garantit que les messages sont toujours envoyés même si le système crash après le commit DB. ShouldQueueAfterCommit en Laravel est une implémentation partielle de ce pattern, car il dispatch le job seulement après commit de la transaction, évitant les race conditions où le job s'exécute avant que les données soient disponibles.

2

Quelle est la différence principale entre ShouldQueue et ShouldQueueAfterCommit ?

Réponse

ShouldQueue dispatch le job immédiatement dans la queue, même si la transaction DB n'est pas encore commitée, ce qui peut causer des race conditions. ShouldQueueAfterCommit attend que toutes les transactions DB soient commitées avant de dispatcher le job, garantissant que les données sont disponibles quand le job s'exécute. Utiliser ShouldQueueAfterCommit pour les jobs qui dépendent de données fraîchement créées ou modifiées dans une transaction, par exemple un job d'envoi d'email après création de commande.

3

Qu'est-ce que l'idempotence dans le contexte des systèmes distribués Laravel ?

Réponse

L'idempotence signifie qu'une opération peut être exécutée plusieurs fois sans changer le résultat au-delà de la première exécution. Dans Laravel, cela empêche les effets indésirables lors de retries de jobs ou de messages dupliqués. Par exemple, un job de création de commande idempotent vérifie si la commande existe déjà avant de la créer, évitant les doublons si le job est retraité suite à un timeout. Utiliser ShouldBeUnique, WithoutOverlapping ou deduplicationId pour garantir l'idempotence.

4

Quel est l'avantage principal d'utiliser les events plutôt que le dispatch direct de jobs pour la communication entre services ?

5

Dans quel contexte utiliser ShouldBeEncrypted pour les queued jobs ?

+19 questions d'entretien

Maîtrise Laravel pour ton prochain entretien

Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.

Commencer gratuitement