تُصنف سرعة موقع Facebook على أنها واحدة من أهم مهام الشركة. في عام 2009، نجحنا في مضاعفة سرعة موقع فيسبوك ثلاث مرات. وهناك بعض الابتكارات الرئيسية التي قدمها فريق المهندسين لدينا والتي تجعل ذلك ممكنًا. في هذه المقالة، سأقدم لك إحدى صلصاتنا السرية، وهي التكنولوجيا الأساسية الرائعة التي نطلق عليها اسم BigPipe .
BigPipe هو نظام خدمة ويب ديناميكي أساسي مُعاد تصميمه. الفكرة العامة هي تقسيم صفحات الويب إلى أجزاء صغيرة تسمى Pagelets، ثم إنشاء خطوط أنابيب عبر خوادم الويب والمتصفحات لإدارة تنفيذها في مراحل مختلفة. يشبه هذا عملية التنفيذ عبر الأنابيب لمعظم المعالجات الدقيقة الحديثة: تمر خطوط أنابيب التعليمات المتعددة عبر وحدات تنفيذ المعالج المختلفة لتحقيق الأداء الأمثل. على الرغم من أن BigPipe عبارة عن إعادة تصميم لعملية البنية التحتية لشبكة الخدمة الحالية، إلا أنها لا تتطلب إجراء تغييرات على متصفحات الويب أو الخوادم الموجودة، ويتم تنفيذها بالكامل باستخدام PHP وJavaScript.
تحفيز
من أجل فهم BigPipe بشكل أفضل، نحتاج إلى إلقاء نظرة على نظام خدمة الويب الديناميكي الحالي، ويمكن إرجاع تاريخه إلى الأيام الأولى لشبكة الويب العالمية، ولكنه الآن لم يتغير كثيرًا مقارنة بالأيام الأولى. تتمتع مواقع الويب الحديثة بتأثيرات ديناميكية وتفاعلية أكثر بكثير مما كانت عليه قبل 10 سنوات، لكن أنظمة خدمة الويب التقليدية ظلت منذ فترة طويلة غير قادرة على مواكبة متطلبات سرعة الإنترنت الحالية. في النموذج التقليدي، تكون دورة حياة طلب المستخدم كما يلي:
النموذج التقليدي غير فعال للغاية في مواقع الويب الحديثة لأن تسلسلات تشغيل العديد من الأنظمة لا يمكن أن تتداخل مع بعضها البعض. لقد تم اعتماد بعض تقنيات التحسين مثل التحميل المؤجل لجافا سكريبت والتنزيل الموازي على نطاق واسع من قبل مجتمع الإنترنت للتغلب على بعض القيود. ومع ذلك، نادرًا ما تعالج هذه التحسينات الاختناق الناتج عن أمر تنفيذ خادم الويب والمتصفح. بينما يكون خادم الويب مشغولاً بإنشاء صفحة، يكون المتصفح خاملاً، ويضيع دوراته في عدم القيام بأي شيء. عندما ينتهي خادم الويب من إنشاء الصفحة وإرسالها إلى المتصفح، يصبح المتصفح بمثابة عنق الزجاجة في الأداء ولا يستطيع خادم الويب المساعدة. من خلال تداخل وقت إنشاء خادم الويب ووقت عرض المتصفح، لا يمكننا تقليل تأخير الوقت النهائي فحسب، بل يمكننا أيضًا تمكين صفحة الويب من عرض المنطقة المرئية للمستخدم في وقت سابق، وبالتالي تقليل تصور المستخدم للتأخير بشكل كبير.
يعد هذا مفيدًا بشكل خاص للمواقع الغنية بالمحتوى مثل Facebook، حيث يتداخل وقت نشر خادم الويب مع وقت عرض المتصفح. تحتوي صفحة الويب النموذجية على Facebook على بيانات من العديد من المصادر المختلفة: قائمة الأصدقاء، وتحديثات الأصدقاء، والإعلانات، وما إلى ذلك. في وضع عرض صفحة الويب التقليدية، سيتعين على المستخدم الانتظار حتى يتم إرجاع بيانات الاستعلام هذه وإنشاء الملف النهائي ثم إرساله إلى كمبيوتر المستخدم. سيؤدي أي تأخير في الاستعلام إلى إبطاء عملية إنشاء الملف النهائي بالكامل.
كيف يعمل بيج بايب
لاستغلال التوازي بين خادم الويب والمتصفح، تقوم BigPipe أولاً بتقسيم صفحة الويب إلى صفحات متعددة قابلة للاستدعاء. مثلما يقسم المعالج الدقيق لخط الأنابيب دورة حياة التعليمات إلى مراحل متعددة (مثل "جلب التعليمات"، "فك تشفير التعليمات"، "التنفيذ"، "إعادة الكتابة للتسجيل"، وما إلى ذلك)، تنقسم عملية إنشاء الصفحة في BigPipe إلى المراحل التالية :
المصدر: ايسد