شعار زيفيرنت

بناء rsync أسرع من Scratch In Go

التاريخ:

صورة

لنقل الملفات بسرعة بين جهازي كمبيوتر ، يعد SCP برنامجًا جيدًا للاستخدام. بالنسبة للنسخ الاحتياطية الأكثر تعقيدًا أو كبيرة أو منتظمة ، فإن أداة go-to هي rsync. إنه أسرع وأكثر كفاءة ويمكن استخدامه في مجموعة واسعة من الظروف. على الرغم من جميع مزاياها ، شعر [Michael Stapelberg] أن لديها نقطة ضعف رئيسية واحدة: إنها أداة مكتوبة بلغة C. [مايكل] تعارض فلسفيًا البرامج المكتوبة بلغة C ، لذلك شرع في تنفيذ rsync من البداية في Go بدلاً من ذلك.

إن طريق [مايكل] لاتخاذ قرار بالتعامل مع هذا المشروع معقد. قام مزود خدمة الإنترنت الخاص به بترقية اتصاله بالإنترنت إلى 25 جيجابت / ثانية مؤخرًا ، مما يعني أن جهاز التوجيه المخصص له كان عنق الزجاجة في شبكته. لحل هذه المشكلة ، قام بترحيل جهاز التوجيه الخاص به إلى جهاز كمبيوتر مزود بعدة بطاقات شبكة بسرعة 25 جيجابت / ثانية. للاستفادة الكاملة من السرعة المتاحة الآن من الناحية النظرية ، بدأ في استخدام أداة تسمى gokrazy ، والتي تحول التطبيقات المكتوبة في Go إلى أجهزتهم الخاصة. هذا يعني أنه بدلاً من تثبيت توزيعة Linux كاملة للتعامل مع مهام محددة (مثل جهاز التوجيه ، على سبيل المثال) ، فإن الشيء الوحيد الذي يتم تحميله على الكمبيوتر هو أساسًا Linux kernel ، والمترجم والمكتبات Go ، ثم تطبيق Go نفسه.

مع جهاز توجيه جديد به أجهزة قادرة على دعم هذه السرعات العالية وتشغيل البرامج المكتوبة في Go فقط ، كانت الخطوة الأخيرة هي إنشاء rsync لدعم مهامه على شبكته. هذا يعني أن rsync نفسه بحاجة إلى أن يتم بناؤه من البداية في Go. بمجرد أن أكمل [مايكل] هذه المهمة النهائية ، وجد أن تنفيذه لـ rsync هو في الواقع أسرع بكثير من الإصدار المدمج في لغة C ، وذلك بفضل التحديث الموجود في لغة Go وحقيقة أن جهاز التوجيه الخاص به لا يعمل بشكل كامل. مرتبط بتوزيع Linux قياسي.

بالنسبة لمشروع برمجي بهذا النطاق ، نجد أن عملية [مايكل] خطوة بخطوة تستحق الانتباه لأي مشكلة يحاول أي منا معالجتها. ليس ذلك فحسب ، فإن إعادة بناء أداة تأسيسية مثل rsync هي مهمة متضمنة بحد ذاتها ، ناهيك عن إنشائها لمجرد زيادة سرعات الشبكة بما يتجاوز ما يعتبره معظمنا بالفعل سريعًا للغاية. نترك الكثير من التفاصيل حول هذا الإصدار ، لذا نوصي بالتأكيد بمراجعة حديثه في الفيديو أدناه.

بفضل [sarinkhan] لأجل الطرف!

[المحتوى جزءا لا يتجزأ]

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة