- Published on
Messaging Queue คืออะไร ? (ฉบับรวบรัด)
- Authors
- Name
- Panuwat Boonrod
- @nilpanuwat
Overview
ลองจินตนาการดูว่า ถ้าหากเรามีร้านค้าออนไลน์ เมื่อใดก็ตามที่ลูกค้าทำการสั่งซื้อ เช่น
- ดำเนินการชำระเงิน
- อัปเดตสต็อกสินค้า
- ส่งอีเมลยืนยันการสั่งซื้อ
ถ้าหากทุกอย่างนี้ทำพร้อมกันในทันที อาจะไม่มีผลอะไรมาก ถ้าระบบของเรา มีผู้ใช้งานเพียง 10-20 คน แต่ หากระบบของเรามีผู้ใช้งานเป็นจำนวนมาก อาจทำให้ประสบการณ์ใช้งานของ user ไม่ดี
แน่นอนว่าเราก็จะต้องทำการ scale application ของเราให้ใหญ่ขึ้นสิ ทั้ง Horizontal scale, Vertical scale แต่นั่น อาจะไม่ได้แก้ปัญหาทั้งหมดได้ หรือ อาจแก้ปัญหาได้ไม่ตรงจุด
แต่วิธีที่ดีกว่าอาจนำ Messaging Queue เข้ามาช่วยแก้ปัญหาเรื่องนี้ได้
Basic of Messaging Queue
Messaging Queue หรือ เรียกกันตรงๆไป ตรงมาว่า คิว ของข้อความ หรือ ข้อมูลอะไรบางอย่าง ที่เรานำมาเข้าคิว หรือ ส่งไปบอกอีก services นึง ว่า จาก service A -> service B เนี่ย มี action หรือ การกระทำใดเกิดขึ้น หรือ เปลี่ยนแปลงไปอย่างไร
โดยผู้ส่ง เราจะเรียกว่า Producer และ ผู้รับคือ Consumer โดย producer จะ consume message queue ไปให้กับ consumer ที่ subscribe channel นั้นๆไว้
How it solved ?
- ป้องกัน กรณี message queue crash หรือ server down, queue services จะทำการเก็บข้อมูลไว้ที่ Disk ไม่ใช่ Memory
- ลดภาระการทำงานของ services อื่นๆที่ไม่เกี่ยวข้อง
- control flow message เป็นไปอย่างถูกต้อง เพราะรู้แน่ชัดว่า message นี้มาจาก service ไหน
Messaging queue services
- RabbitMQ
- Kafka
- Amazon SQS (Simple queue service)
ref: https://www.geeksforgeeks.org/message-queues-system-design/