ความเร็วเว็บไซต์ Facebook ถือเป็นงานที่สำคัญที่สุดงานหนึ่งของบริษัท ในปี 2009 เราประสบความสำเร็จในการเพิ่มความเร็วของเว็บไซต์ Facebook เป็นสามเท่า และนี่คือนวัตกรรมสำคัญบางประการจากทีมวิศวกรของเราที่ทำให้สิ่งนี้เป็นไปได้ ในบทความนี้ ฉันจะแนะนำให้คุณรู้จักกับหนึ่งในซอสสูตรลับของเรา ซึ่งเป็นเทคโนโลยีพื้นฐานที่ยอดเยี่ยมที่เราเรียกว่า BigPipe
BigPipe เป็นระบบบริการเว็บไดนามิกพื้นฐานที่ออกแบบใหม่ แนวคิดทั่วไปคือการแบ่งหน้าเว็บออกเป็นส่วนเล็กๆ ที่เรียกว่า Pagelets จากนั้นสร้างไปป์ไลน์ผ่านเว็บเซิร์ฟเวอร์และเบราว์เซอร์เพื่อจัดการการดำเนินการในขั้นตอนต่างๆ สิ่งนี้คล้ายกับกระบวนการดำเนินการแบบไปป์ไลน์ของไมโครโปรเซสเซอร์สมัยใหม่ส่วนใหญ่: ไปป์ไลน์คำสั่งหลายคำสั่งผ่านหน่วยประมวลผลที่แตกต่างกันเพื่อให้ได้ประสิทธิภาพสูงสุด แม้ว่า BigPipe จะเป็นการออกแบบใหม่ของกระบวนการโครงสร้างพื้นฐานเครือข่ายบริการที่มีอยู่ แต่ก็ไม่จำเป็นต้องมีการเปลี่ยนแปลงเว็บเบราว์เซอร์หรือเซิร์ฟเวอร์ที่มีอยู่ และดำเนินการทั้งหมดโดยใช้ PHP และ JavaScript
แรงจูงใจ
เพื่อให้เข้าใจ BigPipe ได้ดีขึ้น เราจำเป็นต้องดูระบบบริการเว็บแบบไดนามิกที่มีอยู่ สามารถสืบย้อนไปถึงยุคแรก ๆ ของเวิลด์ไวด์เว็บ แต่ตอนนี้ยังไม่มีการเปลี่ยนแปลงมากนักเมื่อเทียบกับยุคแรก ๆ เว็บไซต์สมัยใหม่มีผลกระทบและการโต้ตอบแบบไดนามิกมากกว่าเมื่อ 10 ปีที่แล้ว แต่ระบบบริการเว็บแบบเดิมไม่สามารถตอบสนองความต้องการความเร็วอินเทอร์เน็ตในปัจจุบันมานานแล้ว ในรูปแบบดั้งเดิม วงจรชีวิตของคำขอของผู้ใช้จะเป็นดังนี้:
โมเดลแบบดั้งเดิมนั้นไม่มีประสิทธิภาพอย่างมากในเว็บไซต์สมัยใหม่ เนื่องจากลำดับการทำงานของหลายระบบไม่สามารถทับซ้อนกันได้ เทคนิคการเพิ่มประสิทธิภาพบางอย่าง เช่น การโหลด JavaScript ล่าช้าและการดาวน์โหลดแบบขนาน ถูกนำมาใช้กันอย่างแพร่หลายในชุมชนออนไลน์ เพื่อเอาชนะข้อจำกัดบางประการ อย่างไรก็ตาม การเพิ่มประสิทธิภาพเหล่านี้แทบจะไม่สามารถแก้ปัญหาคอขวดที่เกิดจากลำดับการดำเนินการของเว็บเซิร์ฟเวอร์และเบราว์เซอร์ได้ ในขณะที่เว็บเซิร์ฟเวอร์กำลังยุ่งอยู่กับการสร้างเพจ เบราว์เซอร์ไม่ได้ใช้งาน ทำให้สิ้นเปลืองวงจรโดยไม่ทำอะไรเลย เมื่อเว็บเซิร์ฟเวอร์สร้างเพจเสร็จและส่งไปยังเบราว์เซอร์ เบราว์เซอร์จะกลายเป็นคอขวดด้านประสิทธิภาพ และเว็บเซิร์ฟเวอร์ก็ช่วยไม่ได้ ด้วยการซ้อนทับเวลาการสร้างของเว็บเซิร์ฟเวอร์และเวลาการเรนเดอร์ของเบราว์เซอร์ เราไม่เพียงแต่ลดการหน่วงเวลาครั้งสุดท้ายเท่านั้น แต่ยังช่วยให้หน้าเว็บแสดงพื้นที่ที่ผู้ใช้มองเห็นให้ผู้ใช้เห็นได้เร็วขึ้น ซึ่งช่วยลดการรับรู้ความล่าช้าของผู้ใช้ได้อย่างมาก
สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับไซต์ที่มีเนื้อหามากมาย เช่น Facebook ซึ่งเวลาวางไข่ของเว็บเซิร์ฟเวอร์ซ้อนทับกับเวลาการเรนเดอร์ของเบราว์เซอร์ หน้าเว็บ Facebook ทั่วไปประกอบด้วยข้อมูลจากแหล่งที่มาต่างๆ มากมาย: รายชื่อเพื่อน ข้อมูลอัปเดตของเพื่อน โฆษณา ฯลฯ ในโหมดการแสดงผลหน้าเว็บแบบดั้งเดิม ผู้ใช้จะต้องรอจนกว่าข้อมูลแบบสอบถามเหล่านี้จะถูกส่งกลับ และไฟล์สุดท้ายจะถูกสร้างขึ้น และส่งไปยังคอมพิวเตอร์ของผู้ใช้ ความล่าช้าในการสืบค้นจะทำให้การสร้างไฟล์ขั้นสุดท้ายทั้งหมดช้าลง
BigPipe ทำงานอย่างไร
เพื่อใช้ประโยชน์จากความขนานระหว่างเว็บเซิร์ฟเวอร์และเบราว์เซอร์ BigPipe จะแบ่งหน้าเว็บออกเป็น Pagelets ที่สามารถเรียกได้หลายรายการ เช่นเดียวกับที่ไมโครโปรเซสเซอร์ไปป์ไลน์แบ่งวงจรชีวิตของคำสั่งออกเป็นหลายขั้นตอน (เช่น "การดึงคำสั่ง", "การถอดรหัสคำสั่ง", "การดำเนินการ", "การเขียนกลับไปลงทะเบียน" ฯลฯ ) กระบวนการสร้างเพจของ BigPipe แบ่งออกเป็น ขั้นตอนต่อไปนี้:
ที่มา: isd