Laravel

Laravel Distributed Systems

Комунікація на основі queue, events, outbox pattern, ідемпотентність, retries, circuit breaker, контракти API, версіонування, основи Saga

22 питань зі співбесід·
Senior
1

Що таке outbox pattern у розподілених системах Laravel?

Відповідь

outbox pattern зберігає messages/events у таблиці database в межах тієї самої транзакції, що й бізнес-дані, а потім надсилає їх асинхронно в окремому процесі. Це гарантує, що messages завжди будуть надіслані, навіть якщо система впаде після commit DB. ShouldQueueAfterCommit у Laravel є частковою реалізацією цього pattern, оскільки він dispatch job лише після commit транзакції, уникаючи race condition, коли job виконується до того, як дані стануть доступними.

2

Яка основна різниця між ShouldQueue та ShouldQueueAfterCommit?

Відповідь

ShouldQueue dispatch job одразу в queue, навіть якщо транзакція DB ще не закомічена, що може спричинити race condition. ShouldQueueAfterCommit чекає, поки всі транзакції DB будуть закомічені, перш ніж dispatch job, гарантуючи, що дані доступні під час виконання job. Використовуйте ShouldQueueAfterCommit для job, які залежать від щойно створених або змінених у транзакції даних, наприклад job надсилання email після створення замовлення.

3

Що таке ідемпотентність у контексті розподілених систем Laravel?

Відповідь

Ідемпотентність означає, що операцію можна виконувати кілька разів без зміни результату після першого виконання. У Laravel це запобігає небажаним побічним ефектам під час retries job або дубльованих messages. Наприклад, ідемпотентний job створення замовлення перевіряє, чи замовлення вже існує, перш ніж створити його, уникаючи дублікатів, якщо job повторюється після timeout. Використовуйте ShouldBeUnique, WithoutOverlapping або deduplicationId, щоб забезпечити ідемпотентність.

4

Яка основна перевага використання events замість прямого dispatch jobs для комунікації між сервісами?

5

У якому контексті слід використовувати ShouldBeEncrypted для queued jobs?

+19 питань зі співбесід

Інші теми співбесід Laravel

Опануй Laravel для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно