
Laravel Distributed Systems
การสื่อสารแบบ queue-based, events, outbox pattern, idempotency, retries, circuit breaker, สัญญา API, การทำเวอร์ชัน, พื้นฐาน Saga
1outbox pattern ในระบบแบบกระจายของ Laravel คืออะไร?
outbox pattern ในระบบแบบกระจายของ Laravel คืออะไร?
คำตอบ
outbox pattern จะจัดเก็บ messages/events ลงในตาราง database ภายใน transaction เดียวกันกับข้อมูลทางธุรกิจ จากนั้นส่งออกแบบ asynchronous ในกระบวนการที่แยกต่างหาก ซึ่งรับประกันว่า messages จะถูกส่งเสมอแม้ระบบจะ crash หลังจาก commit DB แล้ว ShouldQueueAfterCommit ของ Laravel เป็นการ implement pattern นี้แบบบางส่วน เนื่องจากจะ dispatch job หลังจาก commit transaction เท่านั้น จึงหลีกเลี่ยง race condition ที่ job ทำงานก่อนที่ข้อมูลจะพร้อมใช้งาน
2ความแตกต่างหลักระหว่าง ShouldQueue และ ShouldQueueAfterCommit คืออะไร?
ความแตกต่างหลักระหว่าง ShouldQueue และ ShouldQueueAfterCommit คืออะไร?
คำตอบ
ShouldQueue จะ dispatch job ไปยัง queue ทันที แม้ว่า transaction DB จะยังไม่ถูก commit ซึ่งอาจทำให้เกิด race condition ส่วน ShouldQueueAfterCommit จะรอให้ transaction DB ทั้งหมดถูก commit ก่อนที่จะ dispatch job เพื่อให้แน่ใจว่าข้อมูลพร้อมใช้งานเมื่อ job ทำงาน ใช้ ShouldQueueAfterCommit สำหรับ job ที่ขึ้นอยู่กับข้อมูลที่เพิ่งสร้างหรือแก้ไขใน transaction เช่น job ส่ง email หลังจากสร้างคำสั่งซื้อ
3idempotence ในบริบทของระบบแบบกระจายของ Laravel คืออะไร?
idempotence ในบริบทของระบบแบบกระจายของ Laravel คืออะไร?
คำตอบ
idempotence หมายความว่าการดำเนินการสามารถถูกเรียกใช้ได้หลายครั้งโดยไม่เปลี่ยนผลลัพธ์เกินกว่าการเรียกใช้ครั้งแรก ใน Laravel สิ่งนี้ป้องกันผลข้างเคียงที่ไม่พึงประสงค์ระหว่างการ retries job หรือ messages ที่ซ้ำกัน ตัวอย่างเช่น job สร้างคำสั่งซื้อแบบ idempotent จะตรวจสอบว่าคำสั่งซื้อมีอยู่แล้วหรือไม่ก่อนที่จะสร้าง เพื่อหลีกเลี่ยงการซ้ำซ้อนหาก job ถูก retry หลังจาก timeout ใช้ ShouldBeUnique, WithoutOverlapping หรือ deduplicationId เพื่อรับประกัน idempotence
ข้อได้เปรียบหลักของการใช้ event แทนการ dispatch job โดยตรงสำหรับการสื่อสารระหว่าง service คืออะไร?
ควรใช้ ShouldBeEncrypted สำหรับ queued job ในบริบทใด?
+19 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Laravel อื่นๆ
พื้นฐาน PHP
พื้นฐาน OOP ใน PHP
Composer & Autoloading
พื้นฐาน Laravel
Laravel Routing
Blade Templates
Request & Response
พื้นฐาน Eloquent ORM
Eloquent Relationships
Migrations & Schema Builder
การตรวจสอบและฟอร์ม
การยืนยันตัวตน
การให้สิทธิ์และ Policies
API Resources & Authentication
Middleware
Service Container & DI
Queues & Jobs
Events & Listeners
การแจ้งเตือนและเมล
File Storage
Testing & PHPUnit
Caching
Livewire & Inertia
Eloquent Advanced
Repository Pattern
Laravel Packages
Performance Optimization
Security Best Practices
Laravel Octane
Observability & Monitoring
Deployment & DevOps
เชี่ยวชาญ Laravel สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี