Polling ใน System Design

Polling ช่วยให้ Client สามารถรับข้อมูลอัปเดตจาก Server ได้ คุณสามารถเปรียบเทียบสิ่งนี้กับการที่บริกรคอยมาเช็กว่าอาหารของคุณได้หรือยัง

มี 3 วิธีหลักๆ ดังนี้

Short Polling

Client จะส่งคำขออัปเดตข้อมูลตามช่วงเวลาที่กำหนด หากข้อมูลยังไม่พร้อม Server จะส่งการตอบกลับที่ว่างเปล่ากลับไป Client จะทำซ้ำตามวงจรนี้ไปเรื่อยๆ จนกว่าข้อมูลจะมาถึง วิธีนี้ทำให้เกิดการส่ง Request ที่ไม่จำเป็นจำนวนมาก

Long Polling

Client จะส่งคำขอไปและ Server จะถือการเชื่อมต่อค้างไว้ โดย Server จะตอบกลับก็ต่อเมื่อข้อมูลพร้อมแล้วเท่านั้น เมื่อ Client ได้รับการตอบกลับแล้ว ก็จะส่งคำขอใหม่ทันที วิธีนี้ให้ความรู้สึกใกล้เคียงกับแบบ real-time และช่วยลดการตอบกลับที่ว่างเปล่าเมื่อเทียบกับ short polling

Event Stream

Client และ Server จะเปิดการเชื่อมต่อเพียงหนึ่งเดียว ซึ่งการเชื่อมต่อนี้จะคงอยู่จนกว่าฝ่ายใดฝ่ายหนึ่งจะปิดมันลง Server จะทำการ push ข้อมูลไปยัง Client ทุกครั้งที่มี event เกิดขึ้น นี่คือการสื่อสารแบบ real-time อย่างแท้จริง

ข้อเสียคือการใช้ทรัพยากร การเชื่อมต่อจะจอง port เฉพาะไว้ ซึ่ง port นั้นจะไม่สามารถใช้งานสำหรับงานอื่นได้จนกว่าการเชื่อมต่อจะสิ้นสุดลง

การเลือกของคุณขึ้นอยู่กับความต้องการของระบบและข้อแลกเปลี่ยน (trade-offs) ที่คุณยอมรับได้

แหล่งที่มา: https://dev.to/cibani_joe/polling-in-system-design-ph6