[The Mask Singer ] Facebook ทำยังไงถึงรองรับการถ่ายทอดสดที่มีคนดูเป็นล้านคนได้ครับ

คือจะว่าไปการถ่ายทอดสดมันเหมือนการอัพโหลดไฟล์วีดีโอใช่มั้ยครับ?
เช่น สมมติว่า เราต้องการถ่ายทอดสดด้วยอินเตอร์เน็ตความเร็วในการอัพโหลด 1024kb
ซึ่งสมมติว่าการดู Live ของเรา คนดูจะต้องใช้เน็ตประมาณ 500kb ในการดาวน์โหลดวีดีโอถ่ายทอดสด
เท่ากับว่า เราซึ่งเป็นผู้ถ่ายทอดสดจะต้องมีค่าอัพโหลด 500kb ให้กับผู้ชม 1 คน
และถ้าหากว่าเรามีผู้ชม 2 คน เราก็จะสูญเสียค่าอัพโหลดไปเกือบทั้งหมด
แปลว่า คนที่ 3 ที่เข้ามาดูจะทำให้การรับชมทั้งหมดเกิดการกระตุกเนื่องจากค่าอัพโหลดของเราไม่พอ

ทีนี้มาที่ Facebook บ้าง การอัพโหลดระดับ 720P+ มันต้องใช้ค่าอัพโหลดต่อผู้ชม 1 คนเยอะอยู่แล้ว
ฉะนั้นทาง Facebook ใช้วิธีไหนในการถ่ายทอดสดกันครับ ที่จะรองรับคนดูมหาศาลได้
แก้ไขข้อความเมื่อ
สุดยอดความคิดเห็น
ความคิดเห็นที่ 7
คือว่า  จขกท.สงสัยว่า  ทาง FB เอา banwidth มาจากใหน  ที่รองรับผู้ชมที่ดูแบบ 480 - 720P กันหมด

และดูกันมากถึงเกือบล้านคน  ก็ตอบได้ว่า  ทาง FB เค้าใช้เทคนิคที่เรียกว่า Content Delivery Network หรือ CDN
ซึ่งทาง FB เลือกใช้ CDN ของ Akamai (บริษัทยักษ์ใหญ่ทางด้าน CDN)  โดย CDN Server นี้  ในไทยเองก็มี CDN server
ติดตั้งอยู่ตามภูมิภาคต่าง ๆ  เช่น กทม.  ระยอง   เชียงใหม่   ขอนแก่น   ภูเก็ต  รวมแล้วกว่า 1,900 เครื่องครับ
โดย server จำนวนมากนี้ได้ฝากใว้ที่ ISP (Internet Service Provider) เช่น  true  CSLoxinfo  ISSP  CAT (กสท.)
ดังนั้น .... คนไทยเกือบ 1 ล้านคนจึงสามารถดู Live สดรายการหน้ากากนักร้องได้อย่างไม่ติดขัดครับ

ระบบ CDN ใช้กันมานานแล้วครับ  โดยเฉพาะพวก Youtube  Facebook  Tweeter
ที่มีคลิปทั้งหลายให้ดูได้นั่นแหละ  จะต้องใช้บริการ CDN กันทั้งนั้น  และทางบริษัท CDN
ก็จะวาง Server ใว้ตาม ISP ต่าง ๆ ทัวประเทศครับ
ความคิดเห็นที่ 9
ข้อมูลทางเทคนิค เชิงลึกนิดหน่อย เท่าที่ผมรู้
(เหมือน จขกท อยากได้คำตอบเชิงเทคนิคนิดๆ)

คือว่า คนที่ดูพร้อมกันเป็นล้านคนนั้น ไม่ได้ติดต่อกับ Server หลัก ของ Facebook Live โดยตรงทั้งหมดครับ
และมันก็ เป็นเรื่องที่ท้าทายมากๆ กับการจัดการกับข้อมูลมหาศาล ของผู้ใช้งาน เป็นล้านๆคน
โดยเข้ามา พร้อมๆกัน ตลอดเวลา ขนาดนั้น ถ้าปล่อยเข้าหา Server หลัก รับรองเดี้ยงตั้งแต่วินาทีแรกครับ

วิธีที่เค้าใช้คือระบบ Cache มาช่วย
โดย จะมี เค้าเรียกว่า EDGE cache ตั้งเอาไว้ กระจายอยู่ทั่วโลกเยอะมาก
ให้ผู้ใช้ Facebook ในแต่ละพื้นที่โดยเฉพาะ ข้อมูลจะวิ่งเข้าออก EDGE Cache ที่ใกล้ที่สุดกับผู้ใช้งาน
และตรงนี้แหละ เอาไว้รับมือ และเป็นตัวกระจายข้อมูล หลักของ วีดีโอ LIVE

ดังนั้น ทุกคนที่เปิดดู LIVE จะมาออกัน และเข้าแถวกันอยู่ ตรงจุดนี้ เพื่อรอรับข้อมูล
ต้องบอกก่อนว่า วีดีโอตัวจริง จะเก็บไว้ที่ Server หลัก
เวลาส่งมา จะถูกหั่นเป็นชิ้นเล็กๆ ยาวไม่ถึง 1 วินาที จะถูกส่งมา และบันทึกไว้ที่ Cache ก่อน
และก็ส่งต่อมาบันทึกไว้ที่ EDGE Cache ก่อนจะถูกกระจาย ออกไปให้ผู้ใช้ ที่มารอเข้าแถวรับอยู่
               EDGE Cache  <=====>  Cache  <=====>  Server

วิธีการทำงาน : สมมติว่าไฟล์ถูกแบ่งเป็น A, B, C, D, E, F, ...
เมื่อผู้ใช้งาน นาย ก. เข้ามา ถึงที่ EDGE บอกว่าขอส่วนที่ A  
EDGE ก็จะตรวจว่าไฟล์นี้ มีบันทึกอยู่ที่ EDGE ไหม ถ้าไม่มี ก็จะส่งไปถาม Cache ว่ามีไหม
ถ้าไม่มี ก็จะไปเอาที่ Server ส่งมาถึง Cache บันทึกไว้ และส่งกลับมาที่ EDGE บันทึกไว้
และส่งกลับให้ผู้ใช้งาน ที่ต้องการ ก็คือ นาย ก.
ดังนั้น เมื่อมีคนที่ 3 4 5 6 เข้ามาถามหาส่วน A ก็จะได้ไปทันที โดยไม่ต้องไปถามที่ Cache หรือ Server

สมมติส่วนที่ Z ยังไม่มี และมีคนดูสด เข้ามาร้องขอทีเดียว 10,000 พร้อมกัน ก็จะถูกจับกลุ่ม จัดแถวเอาไว้
และคำร้องของคนแรกของแถวเท่านั้น ที่จะถูกส่งไปที่ Cache หรือ Server
เมื่อได้กลับมาแล้ว ทั้ง 10,000 คนในแถวหรือในกลุ่ม ก็จะได้ส่วน Z ไปพร้อมๆกันหมด
เมื่อมีคนที่ 10,001 มาถามหา Z อีก ก็จะได้รับไปทันทีเพราะมีบันทึกไว้แล้วจากรอบก่อนหน้า
ก็จะเป็นเช่นนี้ไปเรื่อยๆ

ถ้าสังเกต จะเห็นว่า มีการ Delay ของสัญญาณอยู่มาก
และแต่ละคนที่เปิดดู ก็จะ Delay ไม่เท่ากันด้วย
เนื่องจากแต่ละคนรับข้อมูลไม่พร้อมกัน ไม่เหมือน TV ที่จะถูกส่งออกมาทีเดียว จึงรับได้พร้อมกันหมด

คร่าวๆก็ประมาณนี้แหละครับ จะเห็นว่า มีเพียงข้อมูลส่วนน้อยมากๆ ที่ได้มาจาก Server โดยตรง



ปล. รูปอาจไม่เกี่ยวกับเนื้อหา เป็นรูป Concept ของ Data Center ที่เก็บ Server
ในอนาคตครับ ดีไซน์ สวยมากๆ ไม่ต้องมีเครื่องทำความเย็นเลย
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่