Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

ขยายระบบได้อย่างมีประสิทธิภาพ: Process Splitting และ Redis สำหรับ Messaging

ปัญหา: ข้อความใหญ่เกินไป

ระบบมี Service A และ Service B ติดต่อผ่าน Pub/Sub broker เมื่อข้อความใหญ่เกินขีดจำกัดของ Pub/Sub จะส่งไม่สำเร็จ การเพิ่มขีดจำกัดไม่ใช่ทางแก้ไขยาวนาน (scalability issues)

วิธีแก้: แยกข้อความ (Message Splitting)

แบ่งข้อความใหญ่เป็นหลายข้อความเล็ก (เช่น รายการ items → ส่งทีละ item) ผล: 1 publish → หลาย publishes → หลาย processes ระหว่างกัน (concurrent processes)

จัดการกระบวนการสิ้นสุดด้วย Redis

ปัญหา: ระบบไม่รู้ว่า process ทั้งหมดเสร็จแล้วหรือยัง

แก้: ใช้ Redis เป็น counter

  1. ตั้งค่า initial counter = จำนวน items (หรือจำนวน process ที่แยก)
  2. แต่ละ process เสร็จ → decrement counter ใน Redis
  3. เมื่อ counter = 0 → ทุก process เสร็จแล้ว ทำการ mark complete

Redis เหมาะเพราะ: เร็ว (in-memory), รองรับ atomic operations (INCR/DECR), ทนทาน

สรุป

Pattern: Split large message → concurrent processes → Redis counter จัดการ synchronization ไม่ใช่วิธีเดียว (อาจใช้ streaming) แต่แก้ปัญหาข้อความใหญ่ได้ดี