Laravel

Laravel Distributed Systems

Giao tiếp dựa trên queue, events, outbox pattern, tính idempotency, retries, circuit breaker, hợp đồng API, versioning, kiến thức cơ bản về Saga

22 câu hỏi phỏng vấn·
Senior
1

Outbox pattern trong các hệ thống phân tán Laravel là gì?

Câu trả lời

outbox pattern lưu trữ messages/events vào một bảng database trong cùng transaction với dữ liệu nghiệp vụ, sau đó gửi chúng một cách bất đồng bộ trong một tiến trình riêng. Điều này đảm bảo messages luôn được gửi ngay cả khi hệ thống crash sau khi commit DB. ShouldQueueAfterCommit của Laravel là một triển khai một phần của pattern này, vì nó chỉ dispatch job sau khi transaction được commit, tránh các race condition khi job thực thi trước khi dữ liệu sẵn sàng.

2

Sự khác biệt chính giữa ShouldQueue và ShouldQueueAfterCommit là gì?

Câu trả lời

ShouldQueue dispatch job ngay lập tức vào queue, ngay cả khi transaction DB chưa được commit, điều này có thể gây ra race condition. ShouldQueueAfterCommit chờ tất cả transaction DB được commit trước khi dispatch job, đảm bảo dữ liệu sẵn sàng khi job thực thi. Sử dụng ShouldQueueAfterCommit cho các job phụ thuộc vào dữ liệu vừa được tạo hoặc sửa đổi trong một transaction, ví dụ job gửi email sau khi tạo đơn hàng.

3

Tính idempotency trong bối cảnh các hệ thống phân tán Laravel là gì?

Câu trả lời

Tính idempotency có nghĩa là một thao tác có thể được thực thi nhiều lần mà không làm thay đổi kết quả ngoài lần thực thi đầu tiên. Trong Laravel, điều này ngăn chặn các tác dụng phụ không mong muốn trong quá trình retries job hoặc messages bị trùng lặp. Ví dụ, một job tạo đơn hàng có tính idempotency sẽ kiểm tra xem đơn hàng đã tồn tại hay chưa trước khi tạo, tránh trùng lặp nếu job được retry sau một timeout. Sử dụng ShouldBeUnique, WithoutOverlapping hoặc deduplicationId để đảm bảo tính idempotency.

4

Ưu điểm chính của việc sử dụng event thay vì dispatch job trực tiếp cho giao tiếp giữa các service là gì?

5

Trong bối cảnh nào nên sử dụng ShouldBeEncrypted cho queued job?

+19 câu hỏi phỏng vấn

Nắm vững Laravel cho lần phỏng vấn tiếp theo

Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.

Bắt đầu miễn phí