مقدمة: أسباب زمن استجابة نظام أسماء النطاقات وتخفيفه
نظرًا لتزايد تعقيد صفحات الويب وزيادة مستوى الرجوع إلى الموارد من نطاقات عديدة، يمكن أن تصبح عمليات بحث نظام أسماء النطاقات بمثابة عقبة كبيرة في تجربة التصفح. كلما احتاج العميل إلى الاستعلام عن محلل نظام أسماء النطاقات عبر الشبكة، يمكن أن يكون وقت الاستجابة المُدخل كبيرًا، بناءً على القرب وعدد خوادم الأسماء التي يجب على المحلل الاستعلام عنها (نادر الحدوث أكثر من 2، لكن يمكن أن يحدث ذلك). على سبيل المثال، تعرض لقطة الشاشة التالية التوقيتات التي تم الإبلاغ عنها بواسطة أداة قياس أداء الويب سرعة الصفحة. ويمثل كل شريط موردًا تتم الإشارة إليه من الصفحة، وتشير المقاطع السوداء إلى عمليات بحث نظام أسماء النطاقات. في هذه الصفحة، يتم إجراء 13 عملية بحث خلال أول 11 ثانية يتم فيها تحميل الصفحة. على الرغم من أنّ العديد من عمليات البحث يتم إجراؤها بالتوازي، إلا أنّ لقطة الشاشة تُظهر أنّه يجب 5 مرات بحث تسلسلي، وهو ما يمثّل عدة ثوانٍ من إجمالي وقت تحميل الصفحة الذي يبلغ 11 ثانية.
هناك مكونان لوقت استجابة نظام أسماء النطاقات:
- وقت الاستجابة بين العميل (المستخدم) وخادم تحليل نظام أسماء النطاقات (DNS). وفي معظم الحالات، ترجع أسباب ذلك إلى القيود المعتادة لوقت إرسال البيانات واستقبالها في الأنظمة المتصلة بالشبكة، ومنها: المسافة الجغرافية بين أجهزة العميل والخادم، وازدحام الشبكة، وفقدان الحزم، وتأخيرات إعادة الإرسال الطويلة (ثانية واحدة في المتوسط)، والخوادم المحملة بشكل زائد، وهجمات الحرمان من الخدمة، وما إلى ذلك.
- وقت الاستجابة بين تحليل الخوادم وخوادم الأسماء الأخرى.
ويرجع مصدر وقت الاستجابة هذا في المقام الأول إلى العوامل التالية:
- ذاكرة التخزين المؤقت مفقودة. إذا تعذّر عرض استجابة من ذاكرة التخزين المؤقت لبرنامج حل، ولكن يتطلب إرسال طلبات بحث متكررة عن خوادم أسماء أخرى، سيكون وقت استجابة الشبكة المضافة مهمًا، لا سيما إذا كانت الخوادم الموثوقة بعيدة عن المواقع الجغرافية.
- يتم توفير المتطلبات اللازمة. في حال تحميل برامج تعيين نظام أسماء النطاقات بشكلٍ زائد، يجب أن تضع هذه البرامج في قائمة انتظار طلبات واستجابات تحليل نظام أسماء النطاقات، وقد تبدأ في إسقاط الحزم وإعادة إرسالها.
- الزيارات الضارة: حتى إذا كانت خدمة نظام أسماء النطاقات محدودة الإدارة، يمكن أن تتسبب حركة بيانات الحرمان من الخدمات في وضع حمل غير مبرر على الخوادم. وبالمثل، قد تتضمن الهجمات المصممة بأسلوب Kaminsky ملء برامج التعيين بطلبات بحث مضمونة لتجاوز ذاكرة التخزين المؤقت وتتطلب طلبات صادرة لحل المشكلة.
نعتقد أنّ عامل اختفاء ذاكرة التخزين المؤقت هو السبب الأكثر شيوعًا لوقت استجابة نظام أسماء النطاقات، ونناقشه بمزيد من التفصيل أدناه.
ذاكرة التخزين المؤقت مفقودة
وحتى إذا كان برنامج التعيين يحتوي على موارد محلية وفيرة، يصعب تجنُّب حالات التأخير الأساسية المرتبطة بالتحدّث إلى خوادم الأسماء البعيدة. بعبارة أخرى، على افتراض توفير برنامج التعيين بشكل جيد بما يكفي بحيث لا تستغرق نتائج ذاكرة التخزين المؤقت أي وقت من جهة الخادم، تظل ذاكرة التخزين المؤقت المفقودة مكلفة للغاية من حيث وقت الاستجابة. للتعامل مع الخطأ، يجب أن يتحدث برنامج التعيين إلى خادم واحد على الأقل، ولكن في الغالب إلى خادمين أو أكثر من خوادم الأسماء الخارجية. عند تشغيل زاحف الويب Googlebot، لاحظنا أنّ متوسط وقت الدقة يبلغ 130 ملي ثانية لخوادم الأسماء التي تستجيب. ومع ذلك، تنتهي مهلة 4-6% كاملة من الطلبات بسبب فقدان حزمة بروتوكول مخطط بيانات المستخدم (UDP) وعدم إمكانية الوصول إلى الخوادم. إذا أخذنا في الاعتبار حالات الفشل مثل فقدان الحزم، وخوادم الأسماء المعطلة، وأخطاء إعداد نظام أسماء النطاقات، وما إلى ذلك، فإن متوسط الوقت الفعلي للحل الشامل بين الأطراف هو 300-400 ملي ثانية. ومع ذلك، هناك تباين كبير ونطاق طويل.
على الرغم من أنّ معدّل الخطأ في ذاكرة التخزين المؤقت قد يختلف من خوادم إلى نظام أسماء النطاقات، إلا أنّه من الصعب جدًا تجنّب حدوث أخطاء في ذاكرة التخزين المؤقت، وذلك للأسباب التالية:
- حجم الإنترنت ونموه. فببساطة، مع نمو الإنترنت، سواء من خلال إضافة مستخدمين جدد أو إضافة مواقع جديدة، يحظى معظم المحتوى باهتمام هامشي. وفي حين أنّ بعض المواقع الإلكترونية (وبالتالي أسماء نظام أسماء النطاقات) تحظى بشعبية كبيرة، فإنّ معظمها يحظى باهتمام عدد قليل من المستخدمين فقط ولا يتم الوصول إليها إلا نادرًا، لذلك ينتج عن معظم الطلبات عدم توفّر ذاكرة التخزين المؤقت.
- قيم مدة البقاء (TTL) منخفضة. يعني الاتجاه نحو قيم أقل لمدة DNS TTL أن الحلول تحتاج إلى عمليات بحث أكثر تكرارًا.
- عزل ذاكرة التخزين المؤقت. عادةً ما يتم نشر خوادم نظام أسماء النطاقات خلف أجهزة موازنة الحمل التي تخصص استعلامات إلى أجهزة مختلفة عشوائيًا. ينتج عن ذلك احتفاظ كل خادم فردي بذاكرة تخزين مؤقت منفصلة بدلاً من القدرة على إعادة استخدام درجات الدقة المخزَّنة مؤقتًا من وحدة تخزين مجمّعة مشتركة.
إجراءات الحدّ
لقد طبّقنا العديد من الطرق في نظام أسماء النطاقات العامة من Google لتسريع أوقات البحث في نظام أسماء النطاقات. بعض هذه الأساليب قياسية إلى حد ما، والبعض الآخر تجريبي:
- توفير الخوادم بشكل كافٍ للتعامل مع التحميل من زيارات العميل، بما في ذلك حركة المرور الضارة.
- منع هجمات الحرمان من الخدمات وهجمات التضخيم. على الرغم من أنّ هذه مشكلة أمان في الغالب، وتؤثّر في برامج التعيين المغلقة أقل من تلك المفتوحة، إلّا أنّ منع هجمات الحرمان من الخدمات يكون له فائدة أيضًا في الأداء من خلال التخلص من عبء الزيارات الإضافي الواقع على خوادم نظام أسماء النطاقات. للحصول على معلومات عن الأساليب التي نستخدمها لتقليل احتمالات حدوث هجمات، يُرجى الاطّلاع على صفحة مزايا الأمان.
- موازنة التحميل للتخزين المؤقت المشترك، لتحسين معدل نتائج ذاكرة التخزين المؤقت المجمّعة عبر مجموعة العرض.
- توفير تغطية عالمية للقرب من جميع المستخدمين.
توفير مجموعات عرض بشكل كافٍ
ويجب أن تؤدي برامج تعيين نظام أسماء النطاقات في التخزين المؤقت إلى إجراء عمليات أكثر تكلفة من خوادم الأسماء الموثوقة، وذلك لأن العديد من الاستجابات لا يمكن عرضها من الذاكرة، وبدلاً من ذلك، فإنها تتطلب الاتصال بخوادم أسماء أخرى وبالتالي تتطلب الكثير من إدخال/إخراج الشبكة. بالإضافة إلى ذلك، تكون برامج التعيين المفتوحة عرضة بشكل كبير لمحاولات خداع ذاكرة التخزين المؤقت، مما يؤدي إلى زيادة معدل فقدان ذاكرة التخزين المؤقت (مثل هذه الهجمات ترسل على وجه التحديد طلبات لأسماء مزيّفة لا يمكن حلها من ذاكرة التخزين المؤقت)، ولهجمات الحرمان من الخدمات التي تضيف إلى الحمل على حركة المرور. إذا لم يتم توفير برامج التعيين بشكل كافٍ ويتعذّر عليها مواكبة التحميل، قد يكون لذلك تأثير سلبي للغاية على الأداء. حيث يتم إسقاط الحزم ويجب إعادة إرسالها، ويجب وضع طلبات خادم الأسماء في قائمة الانتظار، وما إلى ذلك. كل هذه العوامل تضيف إلى التأخيرات.
لذلك، من المهم أن يتم تزويد برامج تعيين نظام أسماء النطاقات بالإدخالات والإخراج الكبير. وهذا يشمل التعامل مع هجمات الحرمان من الخدمات الموزعة المحتملة، التي يكون الحل الوحيد لها هو التوفير الزائد في العديد من الأجهزة. في الوقت نفسه، من المهم عدم خفض معدل نتائج ذاكرة التخزين المؤقت عند إضافة أجهزة، فهذا يتطلب تطبيق سياسة فعالة لموازنة التحميل، وهي سياسة نناقشها أدناه.
توزيع الحمل للتخزين المؤقت المشترك
في الواقع، يمكن أن يؤدي توسيع نطاق البنية الأساسية لبرنامج التعيين من خلال إضافة أجهزة إلى نتائج عكسية وتقليل معدّل نتائج ذاكرة التخزين المؤقت إذا لم تتم موازنة التحميل بشكل صحيح. في عملية النشر النموذجية، يتم وضع أجهزة متعددة وراء جهاز لموازنة الحمل يوزِّع حركة البيانات على كل جهاز بالتساوي، وذلك باستخدام خوارزمية بسيطة مثل Round robin. وينتج عن ذلك أن كل جهاز يحتفظ بذاكرة التخزين المؤقت المستقلة الخاصة به، بحيث يتم عزل المحتوى المخزَّن مؤقتًا على جميع الأجهزة. إذا تم توزيع كل طلب بحث وارد على جهاز عشوائي، وبناءً على طبيعة عدد الزيارات، يمكن زيادة معدّل فقدان ذاكرة التخزين المؤقت الفعّال بشكل متناسب. على سبيل المثال، بالنسبة إلى الأسماء ذات قيم TTL الطويلة التي يتم الاستعلام عنها بشكل متكرر، يمكن زيادة معدل فقدان ذاكرة التخزين المؤقت من خلال عدد الأجهزة في المجموعة. (بالنسبة إلى الأسماء التي تحتوي على قيم مدة البقاء (TTL) قصيرة جدًا أو التي يتم الاستعلام عنها بشكل غير متكرر أو التي تؤدي إلى استجابات غير قابلة للتخزين المؤقت (0 مدة البقاء وأخطاء)، لا يتأثر معدل الخطأ في ذاكرة التخزين المؤقت بإضافة الأجهزة).
لزيادة معدل النتائج للأسماء القابلة للتخزين المؤقت، من المهم تحميل خوادم موازنة التحميل بحيث لا تكون ذاكرة التخزين المؤقت مجزأة. في نظام أسماء النطاقات العام من Google، لدينا مستويان من التخزين المؤقت. تحتوي ذاكرة التخزين المؤقت الصغيرة لكل جهاز على الأسماء الأكثر شيوعًا، وذلك في إحدى مجموعات الأجهزة القريبة جدًا من المستخدم. إذا لم تتمكن من تنفيذ طلب بحث من ذاكرة التخزين المؤقت هذه، سيتم إرساله إلى مجموعة أخرى من الأجهزة التي تقسّم ذاكرة التخزين المؤقت حسب الأسماء. بالنسبة إلى ذاكرة التخزين المؤقت من المستوى الثاني هذه، يتم إرسال جميع طلبات البحث التي تحمل الاسم نفسه إلى الجهاز نفسه، حيث يتم تخزين الاسم مؤقتًا أو ليس كذلك.
توزيع مجموعات عرض الإعلانات على مستوى التغطية الجغرافية الواسعة
بالنسبة إلى برامج التعيين المغلقة، لا يمثل هذا في الواقع مشكلة. بالنسبة إلى برامج التعيين المفتوحة، كلما اقتربت الخوادم من المستخدمين، قلّ وقت الاستجابة الذي سيظهر لهم عند نهاية البرنامج. بالإضافة إلى ذلك، قد يؤدي توفّر تغطية جغرافية كافية إلى تحسين وقت الاستجابة التام بين الأطراف بشكل غير مباشر، لأنّ خوادم الأسماء عادةً ما تعرض نتائج محسَّنة للموقع الجغرافي الخاص ببرنامج محلل نظام أسماء النطاقات. وهذا يعني أنه إذا استضاف موفر المحتوى مواقع إلكترونية مكررة في جميع أنحاء العالم، ستعرض خوادم أسماء مقدّم المحتوى عنوان IP في مكان قريب من برنامج تعيين نظام أسماء النطاقات.
تتم استضافة "نظام أسماء النطاقات العام من Google" في مراكز البيانات حول العالم، ويستخدم توجيه أي بث لإرسال المستخدمين إلى أقرب مركز بيانات جغرافيًا.
بالإضافة إلى ذلك، يدعم "نظام أسماء النطاقات العام من Google" الشبكة الفرعية لعميل EDNS (ECS)، وهي امتداد لبروتوكول نظام أسماء النطاقات لبرامج التعيين لإعادة توجيه موقع العميل إلى خوادم الأسماء، التي يمكنها عرض استجابات حسّاسة للموقع الجغرافي تم تحسينها لعنوان IP للعميل الفعلي، بدلاً من عنوان IP للمحلل. يُرجى قراءة هذه الأسئلة الشائعة للاطّلاع على التفاصيل. نظام أسماء النطاقات العام من Google يرصد تلقائيًا خوادم الأسماء التي تتوافق مع الشبكة الفرعية لعميل EDNS.