Message Queue: ทำไมระบบใหญ่ถึงใช้คิวแทนการเรียกตรง

28 มิถุนายน 2569อ่าน 7 นาที
Message Queue: ทำไมระบบใหญ่ถึงใช้คิวแทนการเรียกตรง

เมื่อระบบ A เรียกระบบ B ตรง ๆ ถ้า B ล่มหรือช้า A ก็พังตาม Message Queue คั่นกลางด้วยคิวงาน ทำให้ระบบทนทานขึ้น รับโหลดพุ่งได้ และแยกส่วนกันทำงานโดยไม่ล้มพร้อมกัน

เมื่อระบบหนึ่งต้องสั่งงานอีกระบบ วิธีที่ตรงที่สุดคือเรียกตรง ๆ แล้วรอผลทันที แต่ถ้าระบบปลายทางล่ม ช้า หรืองานเข้ามาพร้อมกันจำนวนมาก การเรียกตรงจะทำให้ทั้งสองระบบพังพร้อมกัน Message Queue แก้ปัญหานี้ด้วยการวางคิวงานไว้ตรงกลาง ระบบต้นทางหย่อนงานลงคิวแล้วไปทำอย่างอื่นต่อ ระบบปลายทางค่อยหยิบไปทำตามจังหวะที่ไหว

สามประโยชน์ที่ได้จากการคั่นด้วยคิว

  • ทนทาน: ถ้าปลายทางล่มชั่วคราว งานยังค้างในคิว ไม่หาย ทำต่อได้เมื่อฟื้น
  • รับโหลดพุ่ง: คิวซับโหลดช่วงพีคไว้ แล้วทยอยทำ ไม่ล้มทั้งระบบ
  • แยกส่วน: ต้นทางกับปลายทางไม่ต้องออนไลน์พร้อมกัน และพัฒนาแยกกันได้

ตัวอย่างที่เห็นได้ในธุรกิจจริง

เวลาลูกค้าสั่งซื้อ ระบบไม่จำเป็นต้องส่งอีเมล ออกใบเสร็จ และตัดสต็อกให้เสร็จในวินาทีเดียวกัน งานเหล่านี้หย่อนลงคิวได้ แล้วทยอยทำเบื้องหลัง ทำให้หน้าจอลูกค้าตอบเร็ว และถ้าระบบส่งอีเมลล่มชั่วคราว คำสั่งซื้อก็ยังไม่หาย แค่อีเมลออกช้าลงเล็กน้อย

Message Queue ไม่ใช่เครื่องมือสำหรับบริษัทเทคใหญ่เท่านั้น แต่เป็นแนวคิดที่ช่วยให้ระบบของธุรกิจทั่วไปทนทานขึ้นเมื่อโตขึ้น การรู้ว่าเมื่อไรควรหย่อนงานลงคิวแทนการรอผลทันที คือหนึ่งในการตัดสินใจที่แยกระบบที่ขยายได้ ออกจากระบบที่พังเมื่อคนเข้าเยอะ

Message QueueArchitectureResilienceScalability

บริการที่เกี่ยวข้อง

รับพัฒนาเว็บแอปพลิเคชัน

สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้

WhaleScope

ดูโครงสร้างตลาดของทุกหมวดธุรกิจไทย บน WhaleScope

รายชื่อบริษัท ผู้เล่นรายใหญ่ และอัตราคงอยู่ของแต่ละหมวด — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล

อ่านต่อ

Dead Letter Queue: จัดการงานที่ทำไม่สำเร็จ ไม่ให้หายเงียบ

ในระบบที่ใช้คิวงาน บางงานทำไม่สำเร็จซ้ำ ๆ ถ้าปล่อยทิ้ง งานสำคัญอาจหายเงียบ Dead Letter Queue คือที่พักของงานที่พลาด เพื่อให้ตรวจสอบและกู้คืนได้ ไม่ใช่หายไปโดยไม่มีใครรู้

Circuit Breaker: หยุดความล้มเหลวไม่ให้ลามทั้งระบบ

เมื่อบริการหนึ่งช้าหรือล่ม ระบบที่เรียกมันอาจค้างรอจนทรัพยากรหมด แล้วลามพังต่อกันเป็นโดมิโน Circuit Breaker คือกลไกตัดวงจรชั่วคราว เพื่อให้ส่วนที่ดียังทำงานได้ และให้ส่วนที่พังได้ฟื้น

Graceful Degradation: ให้ระบบล้มแบบสวย แทนที่จะล่มทั้งหมด

เมื่อส่วนหนึ่งของระบบมีปัญหา ควรทำให้ทั้งระบบล่ม หรือให้ส่วนที่เหลือทำงานต่อได้ Graceful Degradation คือการออกแบบให้ระบบลดความสามารถลงอย่างมีระเบียบ แทนที่จะดับทั้งหมด

Database Sharding: แบ่งฐานข้อมูลเมื่อใหญ่เกินเครื่องเดียว

เมื่อข้อมูลใหญ่จนเครื่องเดียวรับไม่ไหว การเพิ่มเครื่องให้แรงขึ้นมีเพดาน Sharding คือการแบ่งข้อมูลออกไปหลายเครื่อง ช่วยให้ขยายต่อได้ แต่ก็เพิ่มความซับซ้อนที่ต้องแลก