Laravel

Laravel Distributed Systems

Komunikacja oparta na queue, events, outbox pattern, idempotentność, retries, circuit breaker, kontrakty API, wersjonowanie, podstawy Saga

22 pytań z rozmów·
Senior
1

Czym jest outbox pattern w rozproszonych systemach Laravel?

Odpowiedź

outbox pattern przechowuje messages/events w tabeli database w ramach tej samej transakcji co dane biznesowe, a następnie wysyła je asynchronicznie w osobnym procesie. Gwarantuje to, że messages są zawsze wysyłane, nawet jeśli system ulegnie awarii po commit DB. ShouldQueueAfterCommit w Laravel jest częściową implementacją tego pattern, ponieważ dispatchuje job dopiero po commit transakcji, unikając race condition, w których job wykonuje się zanim dane staną się dostępne.

2

Jaka jest główna różnica między ShouldQueue a ShouldQueueAfterCommit?

Odpowiedź

ShouldQueue dispatchuje job natychmiast do queue, nawet jeśli transakcja DB nie została jeszcze commitnięta, co może powodować race condition. ShouldQueueAfterCommit czeka, aż wszystkie transakcje DB zostaną commitnięte przed dispatchowaniem job, gwarantując, że dane są dostępne, gdy job się wykonuje. Używaj ShouldQueueAfterCommit dla job zależnych od świeżo utworzonych lub zmodyfikowanych danych w transakcji, na przykład dla job wysyłającego email po utworzeniu zamówienia.

3

Czym jest idempotentność w kontekście rozproszonych systemów Laravel?

Odpowiedź

Idempotentność oznacza, że operacja może być wykonywana wielokrotnie bez zmiany wyniku poza pierwszym wykonaniem. W Laravel zapobiega to niepożądanym efektom ubocznym podczas retries job lub zduplikowanych messages. Na przykład idempotentny job tworzenia zamówienia sprawdza, czy zamówienie już istnieje, zanim je utworzy, unikając duplikatów, jeśli job zostanie ponowiony po timeout. Użyj ShouldBeUnique, WithoutOverlapping lub deduplicationId, aby zapewnić idempotentność.

4

Jaka jest główna zaleta używania events zamiast bezpośredniego dispatch jobs do komunikacji między serwisami?

5

W jakim kontekście należy używać ShouldBeEncrypted dla queued jobs?

+19 pytań z rozmów

Opanuj Laravel na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo