ลองนึกถึงครีเอเตอร์อิสระที่เพิ่งอัปโหลดวิดีโอ เมื่อผู้ชมคนแรกเปิดหน้าเว็บ ยังไม่มีใครแชร์ไฟล์นั้น หนึ่งชั่วโมงต่อมามีคนดูพร้อมกันจำนวนมาก ผ่านไปไม่กี่วันความสนใจลดลงและมีคนเข้าชมเป็นครั้งคราว เนื้อหาเดียวกันจึงผ่านสภาวะการส่งข้อมูลสามแบบ การวัดความเร็วดาวน์โหลดเพียงครั้งเดียวบอกได้น้อยมากว่าระบบเหมาะกับการใช้งานระยะยาวหรือไม่
การออกแบบ P2P และ CDN ต้องครอบคลุมวงจรทั้งหมดนี้ P2P เปิดให้ผู้เข้าร่วมส่งข้อมูลให้กัน ส่วน CDN ให้จุดบริการที่ควบคุมได้มากกว่า บทบาทของแต่ละส่วนควรขึ้นกับการเชื่อมต่อ ความต้องการเนื้อหา และเป้าหมายการเล่นวิดีโอ
ตรวจสอบก่อนว่าผู้ชมเชื่อมต่อได้หรือไม่
เบราว์เซอร์กับแอปเดสก์ท็อปมีความสามารถด้านเครือข่ายต่างกัน FAQ ทางการของ WebTorrent อธิบายว่าไคลเอนต์ในเบราว์เซอร์ต้องใช้เพียร์ที่รองรับ WebRTC การมีทรัพยากรอยู่บนเครือข่าย BitTorrent แบบเดิมไม่ได้แปลว่าเบราว์เซอร์จะดึงข้อมูลโดยตรงจากทุกโหนดได้ FAQ ของ WebTorrent
นักพัฒนาจึงต้องทดสอบไคลเอนต์เว็บ ไคลเอนต์เดสก์ท็อป และสภาพแวดล้อมเครือข่ายต่าง ๆ แยกกัน เครือข่ายสำนักงาน เราเตอร์ที่บ้าน และเครือข่ายมือถืออาจมีเงื่อนไขต่างกัน การทำงานสำเร็จบนเครื่องพัฒนาหนึ่งเครื่องไม่ได้รับประกันจุดเริ่มต้นเดียวกันสำหรับผู้ใช้ทุกคน
การสร้างการเชื่อมต่ออาจต้องพึ่งโครงสร้างพื้นฐานเสริมด้วย คู่มือ WebRTC ของ libp2p กล่าวถึง STUN การส่งสัญญาณ และกลไกรีเลย์ พร้อมระบุว่าทราฟฟิกที่ผ่านรีเลย์มีต้นทุนดำเนินงาน ส่วนประกอบที่ใช้ขึ้นอยู่กับวิธีพัฒนา คู่มือการเชื่อมต่อ libp2p
ในเชิงวิศวกรรม เราแนะนำให้บันทึกความล้มเหลวในการเชื่อมต่อแยกต่างหาก มิฉะนั้นเมื่อเครื่องเล่นว่างเปล่า ทีมอาจเห็นเพียง “ดาวน์โหลดช้า” โดยไม่รู้ว่าปัญหาเกิดตอนค้นหาเพียร์ สร้างการเชื่อมต่อ หรือส่งข้อมูล
แบ่งบทบาทตามวงจรชีวิตเนื้อหา
ตารางนี้เป็นจุดเริ่มต้นสำหรับหารือสถาปัตยกรรม ไม่ใช่คำรับรองประสิทธิภาพของผลิตภัณฑ์ใด:
| สถานการณ์เนื้อหา | ความสามารถที่ควรให้ความสำคัญ | สิ่งที่ P2P ช่วยได้ |
|---|---|---|
| เพิ่งเผยแพร่และมีเพียร์น้อย | ซีดหรือแหล่ง HTTP ที่เชื่อถือได้ | ให้โหนดแรกที่ได้รับเนื้อหาค่อย ๆ เริ่มแชร์ |
| มีผู้ชมพร้อมกันมาก | เวลาถึงภาพแรกและการเล่นต่อเนื่อง | แบ่งภาระส่งข้อมูลซ้ำเมื่อเชื่อมต่อได้ |
| เนื้อหาที่มีผู้ชมประปราย | มีแหล่งที่พร้อมใช้งานต่อเนื่องอย่างน้อยหนึ่งแห่ง | เสริมการส่งด้วยสำเนาที่ออนไลน์เป็นครั้งคราว |
| เครือข่ายผู้ใช้มีข้อจำกัด | แจ้งข้อผิดพลาดและมีทางสำรองชัดเจน | เข้าร่วมเมื่อเชื่อมต่อได้โดยไม่รอไม่สิ้นสุด |
HTTP กับ P2P ใช้ร่วมกันได้ BEP 19 ของ BitTorrent อธิบายการใช้ WebSeed ดาวน์โหลดจาก HTTP/FTP และ WebTorrent มี API สำหรับเพิ่ม WebSeed BEP 19 · API ของ WebTorrent
การมี API เป็นเพียงจุดเริ่มต้น ก่อนนำมาใช้ต้องตรวจว่าไฟล์ต้นทางตรงกัน เซิร์ฟเวอร์รองรับพฤติกรรมคำขอที่ต้องการ และตั้งค่าการเข้าถึงข้ามต้นทางของเบราว์เซอร์ถูกต้อง ควรทดสอบทางสำรองก่อนเผยแพร่ ไม่ใช่รอแก้เฉพาะหน้าเมื่อเพียร์เหลือน้อย
ใส่ลำดับความสำคัญของการเล่นไว้ในการจัดสรรข้อมูล
การดาวน์โหลดให้ครบมุ่งให้ได้ทั้งไฟล์ในที่สุด แต่การดูวิดีโอต้องให้ข้อมูลสำคัญมาทันเวลา สำหรับผู้ชม ภาพแรกที่มาเร็วและการเล่นต่อหลังเลื่อนตำแหน่งมักสำคัญกว่าจำนวนเพียร์ที่แสดงอยู่เบื้องหลัง
กลยุทธ์ผสมที่น่าประเมินคือเริ่มเล่นจากแหล่งที่เชื่อถือได้ แล้วเพิ่มเพียร์ตามคุณภาพการเชื่อมต่อ พร้อมเติมข้อมูลที่ขาดทันทีเมื่อบัฟเฟอร์ใกล้หมด กำหนดเกณฑ์เปลี่ยนไปใช้ทางสำรองจากการทดสอบอุปกรณ์และเครือข่ายจริง แทนการกำหนดจำนวนวินาทีเดียวให้ทุกแอป
ต้องดูแลคำขอซ้ำด้วย หากสองแหล่งกำลังดาวน์โหลดชิ้นเดียวกัน ระบบควรยกเลิกคำขอที่ไม่จำเป็นเมื่อทำได้ และนับไบต์ที่ใช้ไปแต่ไม่ได้ใช้งาน มิฉะนั้นการเร่งความเร็วหลายแหล่งที่เห็นอาจเป็นเพียงการแลกทราฟฟิกมากขึ้นกับความเร็วที่ดีขึ้นบางครั้ง
คิดต้นทุนทั้งระบบ
แยกต้นทุนเป็นการโฮสต์เนื้อหา โหนดซีด รีเลย์ ทราฟฟิกขาออก CDN รวมถึงการอัปโหลดและทรัพยากรอุปกรณ์ของผู้ใช้ ค่าใช้จ่ายเซิร์ฟเวอร์รายการหนึ่งลดลงไม่ได้หมายความว่าต้นทุนของผู้เข้าร่วมรายอื่นหายไป
เราแนะนำให้สร้างค่าฐานของการส่งผ่าน HTTP อย่างเดียว แล้วประเมินแบบผสมด้วยเนื้อหา ภูมิภาค อุปกรณ์ และงานเล่นวิดีโอที่เทียบกันได้ เปรียบเทียบเซสชันที่ดูสำเร็จ ไม่ใช่ดูเพียงทราฟฟิกขาออกช่วงหนึ่ง ผู้ชมที่ออกก่อนจำนวนมากก็ทำให้ทราฟฟิกดูน้อยลงได้
การแชร์บนอุปกรณ์ผู้ใช้ต้องอธิบายชัดเจนด้วย แอปอาจให้ตั้งเพดานอัปโหลด เลือกการใช้เครือข่ายมือถือ และกำหนดการปิดการเชื่อมต่อเมื่อออก เพื่อให้รู้ว่าเมื่อใดตนร่วมส่งข้อมูล การแชร์ของชุมชนต้องอาศัยตัวเลือกที่เข้าใจได้ ไม่ใช่แค่สวิตช์ “เร่งความเร็ว” ที่คลุมเครือ
ทดสอบด้วยตัวชี้วัดที่อธิบายผลได้
การทดลองขนาดเล็กควรตอบอย่างน้อยดังนี้:
- ประสบการณ์ภาพแรก: ผู้ชมรอนานเท่าใดสำหรับเนื้อหาใหม่และเนื้อหายอดนิยม?
- ความต่อเนื่อง: การสะดุดเกิดบ่อยและนานแค่ไหน และกลับมาเล่นหลังเลื่อนตำแหน่งได้ดีเพียงใด?
- สัดส่วนข้อมูลจากแหล่งต่าง ๆ: ข้อมูลที่ใช้ได้จริงจากเพียร์โดยตรง HTTP และรีเลย์มีเท่าใด?
- คุณภาพทางสำรอง: ยังดูต่อได้หรือไม่เมื่อไม่มีเพียร์ เชื่อมต่อไม่สำเร็จ หรือซีดออฟไลน์?
- การใช้ทรัพยากรรวม: รวมการดาวน์โหลดซ้ำ การลองใหม่ที่ล้มเหลว และการอัปโหลดผู้ใช้แล้วหรือยัง?
เก็บผลแยกตามภูมิภาค รุ่นไคลเอนต์ และประเภทเครือข่าย แทนการเผยแพร่แค่ค่าเฉลี่ย แบบหนึ่งอาจเหมาะกับวิดีโอยาวที่ดูพร้อมกัน แต่ไม่เหมาะกับไฟล์เล็กที่เปิดเป็นครั้งคราว การรู้ขอบเขตที่ใช้ได้ดีช่วยจัดสรรทรัพยากรให้เกิดผล
ข้อมูลสถาปัตยกรรมสาธารณะของ AlphaBiz ระบุ WebTorrent สำหรับแอปสื่อประเภทนี้ คำถามที่มีคุณค่าของการส่งแบบผสมคือช่วยให้คนดูจบในสภาพเครือข่ายต่าง ๆ อย่างไร มากกว่าการเพิ่มสัดส่วน P2P เพียงอย่างเดียว ภาพรวมโครงการ AlphaBiz
หากกำลังออกแบบแอปสื่อ เริ่มจากงานเล่นจริงหนึ่งงาน บันทึกข้อผิดพลาดและพฤติกรรมทางสำรองก่อนคุยเรื่องปรับโปรโตคอลกับต้นทุน นำสถานการณ์และวิธีวัดไปแลกเปลี่ยนผลที่ทำซ้ำได้ใน AlphaBiz Discussions