تحولت Cloudflare إلى Pingora ، وكيلها الخاص المكتوب بلغة Rust

تهاجر Cloudflare من NGINX إلى Pingora

Pingora ، هو وكيل HTTP جديد تم إنشاؤه بواسطة cloudflare باستخدام Rust

كشف النقاب عن Cloudflare مؤخرا من يهاجر شبكة توصيل المحتوى الخاصة بك لاستخدام الوكيل «بينجورا» ، التي تبرز لكونها مكتوبة بلغة Rust. ال تم استبدال الوكيل الجديد التكوين القائم على الخادم NGINX مع البرامج النصية Lua ويتعامل مع أكثر من مليار طلب في اليوم.

وتجدر الإشارة إلى أن الانتقال إلى الوكيل المتخصص «Pingora» لم يسمح فقط بتنفيذ وظائف جديدة وزيادة الأمان بسبب العمل الآمن مع الذاكرة ، بل أدى أيضًا إلى زيادة كبيرة في الأداء وتوفير الموارد.

لا يتطلب الحل القائم على Pingora استخدام Lua ويستخدم بنية Cloudflare المحسّنة للحمل ، حيث يستهلك 70٪ أقل من موارد وحدة المعالجة المركزية وذاكرة أقل بنسبة 67٪ أثناء معالجة نفس مقدار حركة المرور.

لوقت طويل، نظام وكيل حركة المرور بين المستخدمين والخوادم النهائية على أساس البرامج النصية NGINX ولوا تلبية احتياجات Cloudflare، ولكن مع نمو الشبكة وازدياد تعقيدها ، لم يكن الحل الشامل كافياً، من حيث الأداء والقيود في القابلية للتوسعة وتنفيذ الفرص الجديدة للعملاء.

على وجه الخصوص ، كانت هناك صعوبات في إضافة وظائف تتجاوز بوابة بسيطة وموازن التحميل. على سبيل المثال ، في حالة عدم تمكن الخادم من معالجة الطلب ، كان من الضروري إعادة توجيه الطلب إلى خادم آخر ، وتزويده بمجموعة مختلفة من رؤوس HTTP.

بدلا من الهندسة المعمارية مع طلبات مقسمة إلى عمليات عمل منفصلة (عمال) ، يستخدم Pingora نموذجًا متعدد الخيوط، والتي أظهرت في سيناريوهات استخدام Cloudflare (التركيز العالي لحركة المرور من مواقع مختلفة مع تحول إحصائي كبير) توزيعًا أكثر كفاءة للموارد بين مراكز وحدة المعالجة المركزية.

على وجه الخصوص ، أدى ربط الطلبات غير المتوازنة بالعمليات في nginx إلى تحميل غير متوازن على نوى وحدة المعالجة المركزية ، ونتيجة لذلك أدت الطلبات كثيفة الاستخدام للموارد وحظر الإدخال / الإخراج إلى إبطاء معالجة الطلبات الأخرى.

أيضًا ، لم يسمح ربط تجمع الاتصال بعمليات التحكم بإعادة استخدام الاتصالات القائمة بالفعل من عمليات التحكم الأخرى ، مما يقلل من الكفاءة عند وجود عدد كبير من عمليات التحكم.

أتاح إدخال Pingora تقليل عدد العمليات بمقدار 160 مرة إقامة اتصالات جديدة وزيادة نسبة الطلبات المعاد استخدامها من 87,1٪ إلى 99,92٪. بالإضافة إلى تقليل عمليات إعادة الاتصال والاستخدام الأكثر كفاءة لنواة وحدة المعالجة المركزية ، كان تحسين أداء الوكيل الجديد يرجع أساسًا إلى إزالة برامج تشغيل Lua البطيئة المستخدمة مع nginx.

تم اختيار لغة Rust لأنها تتيح الأداء العالي جنبًا إلى جنب مع توفر أدوات الذاكرة الآمنة. يذكر أنه على الرغم من مهندسي Cloudflare المؤهلين تأهيلا عاليا ومراجعة الكود ، فإن البرامج المكتوبة بلغة C لا يمكنها تجنب الأخطاء التي تؤدي إلى مشاكل في الذاكرة (على سبيل المثال ، ثغرة أمنية في محلل HTML).

بالنسبة للكود الجديد ، تحدثنا عن حالات تحليل الأعطال في Pingora ، والتي تبين أنها ليست بسبب مشاكل في التطبيق ، ولكن بسبب خطأ في Linux kernel وتعطل الأجهزة.

بالإضافة إلى ذلك ، يمكن ملاحظة أن Linus Torvalds علق على إدراج دعم لغة Rust في Linux kernel ، والذي تم التعبير عنه في مؤتمر Open-Source Summit Europe الذي يعقد هذه الأيام. لم يتضمن Kernel 6.0 تصحيحات لتطوير برامج تشغيل الأجهزة بلغة Rust ، ولكن وفقًا لـ Linus ، من المحتمل أن يتم قبولهم في kernel 6.1 ، فلن تستفيد من التكامل.

كسبب لإضافة دعم لـ Rust ، بالإضافة إلى التأثير الأمني ​​الإيجابي ، ينتهز Linus أيضًا الفرصة لزيادة الاهتمام بالعمل على النواة من الوافدين الجدد ، وهو أمر مهم في سياق قدامى المحاربين.

أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.