عشية برنامج
HighLoad ++ في
سيبيريا ، تحدثنا مع أحد المتحدثين لدينا ، يوري
نصرتدينوف ، وسألناه عما إذا كان يعمل بشكل جيد في فكونتاكتي ، بينما كان يفتح في نفس الوقت حجاب السرية على المطبخ الداخلي للشبكة الاجتماعية.

في إطار المؤتمر ، سيتحدث يوري عن كيفية إدراج شبكة اجتماعية للبيانات في ClickHouse من عشرات الآلاف من الخوادم ، والتي تطرقنا إليها للتو في المحادثة الحالية.
- من فضلك أخبرنا عن عملك.أعمل حاليًا على VK. صحيح ، ليس بفترة طويلة - منذ بداية هذا العام. أنا منخرط في البنية التحتية للفيديو والبنية التحتية للموقع. الموقع مكتوب بشكل أساسي بلغة PHP ، وأقوم بتطوير الخدمات والمرافق في PHP و Go.
- ما الذي دفعك للذهاب إلى العمل في VK؟دعيت للعمل في VK. وفكرت - لماذا لا؟ فكونتاكتي هو أعلى موقع تحميل في روسيا وواحد من أكبر المواقع على الإنترنت بالكامل. لقد كنت مهتمًا دائمًا بالعمل على مثل هذا المشروع الكبير - للمشاركة في تطوير الموقع وتطبيق الهاتف المحمول. ربما تؤثر حتى على تطورها ، تتحسن بطريقة أو بأخرى. ربما هذا هو العامل الأكثر تحفيزًا - فكونتاكتي يعرفه ويستخدمه الجميع. ومن الممتع للغاية العمل على مثل هذا المنتج ، للمساعدة على تحسينه.
- قبل ذلك ، هل كان عليك التعامل مع شيء مماثل في الحجم؟نعم ، عملت لمدة خمس سنوات في Badoo في منصب مماثل - في تطوير البنية التحتية. لكن الحمل في VK هو حجم أكبر.
- هل واجهت أي مشاكل عند التبديل إلى VK؟يقع مكتب فكونتاكتي في سانت بطرسبرغ. وقبل ذلك كنت أعيش في الضواحي ، لذلك كان علي أن أتحرك. كانت الخطوة نفسها سهلة للغاية - تساعد الشركة. لكن في سان بطرسبرغ الجو بارد جداً في الشتاء. ربما كان هذا أصعب شيء يمكن مواجهته.
- لا يوجد شعور بأن الحياة قد بقيت في مكان ما داخل طريق موسكو الدائري؟في البداية ، بدا لي الأمر كذلك حقًا ، على الرغم من أنني زرت مدنًا أخرى في روسيا سابقًا ، بالإضافة إلى موسكو. لكن في الحقيقة ، أنا أحب سانت بطرسبرغ ، ربما أكثر من موسكو. إنه أكثر هدوءًا - عدد أقل من الناس ، ليسوا في عجلة من أمرهم ، وهذا أمر لطيف.
- ومن وجهة نظر التقنيات المستخدمة في العمل - ما الجديد بالنسبة لك؟فكونتاكتي كبير جدًا ، على التوالي ، هناك بالفعل بعض الفروق الدقيقة التي لم أواجهها من قبل. على سبيل المثال ، لا يوجد في Badoo أي ملفات شخصية شائعة جدًا تزورها نسبة كبيرة من الأشخاص. يحتوي VKontakte على ذلك ، حيث يوجد عدد من الأدوات المثيرة للاهتمام التي تسمح لك بتوسيع الحسابات الشائعة جدًا بسرعة.
بالإضافة إلى ذلك ، يختلف فكونتاكتي في ذلك ، لأسباب تاريخية ، كل شيء تقريبًا هنا. على عكس ، على سبيل المثال ، Badoo ، الذي يستخدم بشكل أساسي MySQL و Memcache (بالإضافة إلى خدماته) ، يستخدم VKontakte قواعد البيانات الخاصة به وحتى الإصدار الخاص به من Memcache. يمكن لمطوري VK إنشاء خدمات أكثر كفاءة (على خلفية نفس MySQL) تعمل بشكل جيد على هذا النطاق الضخم. لا يمكن استخدام معظم الأدوات الجاهزة التي لا تحتوي على ملف في بنية تحتية تتضمن عشرات الآلاف من الخوادم ، مثل VK ، وهذا يخلق صعوبات كبيرة.
- هل كان من الصعب اختراق هذه الأدوات "الداخلية" بسرعة؟أنا أعمل في قسم البنية التحتية ، وليس هناك الكثير من الأشياء غير القياسية هنا. بشكل أساسي ، هذه حزمة قياسية أكثر من تلك التي عملت معها من قبل. ولكن إذا كنت قد عملت ، على سبيل المثال ، في قسم يتعامل مع الميزات الخلفية ، فسيكون هناك بالطبع معرفة مفيدة بكيفية بناء نظام Highload بشكل أساسي ، ولكن ليس تفاصيل محددة. في مثل هذه الحالات ، تساعد صفحات الموظفين الجدد ، أو وصف الآليات الداخلية.
من حيث المبدأ ، نشر Pavel Durov جزءًا ملموسًا من البنية التحتية لـ VK في مصدر مفتوح مع الوثائق. يمكن لأي شخص أن يقرأها ، يقرأ كيف يعمل كل شيء. ولكن ، بالطبع ، من الأسهل إدراك ذلك في سياق كيفية استخدامه داخليًا. أنت تأتي وتبدأ في القيام بالمهام ، وتدرس تدريجياً ما هو مطلوب لحلها. انظر كيف يتم ذلك بالفعل ، ونفعل الشيء نفسه. وهذا يكفي. بعد كل شيء ، حتى إذا كنت تتقن قراءة جميع الوثائق الموجودة على البنية التحتية لـ VK ، حتى تبدأ في استخدامها ، فعلى الأرجح لن تفهم كيف يعمل كل ذلك بالتفصيل.
ألاحظ أن كل ما سبق ينطبق على قسمي (في حالات أخرى قد يكون مختلفًا).
- هل لديك أي تخصص داخل VK؟ ما المهام التي تمكنت من المشاركة فيها؟لا يوجد تخصص على هذا النحو. أفعل ما هو مطلوب حاليا.
أنا أعمل في قسم تؤثر أنشطته على أجزاء مختلفة من البنية التحتية للشبكة الاجتماعية ، وهذا مشروع ضخم (يستغرق الكثير من الوقت لفهم جهاز VK بشكل كامل مع الفهم).
على سبيل المثال ، شاركت في ترقية جزئية لـ PHP7. ينطبق هذا ، من حيث المبدأ ، على الموقع بأكمله ، ولكن في نفس الوقت لا ينطبق على أي تفاصيل محددة.
مثال آخر هو مشكلة جمع السجلات ، التي استخدمناها ClickHouse للحل. سأتحدث عن هذا في HighLoad ++.
- دعونا نعطي المفسد الصغير - ما هي سمة هذه المشكلة؟كان المصيد مزيجًا من عاملين: من ناحية ، لدينا الكثير من السجلات المكتوبة ، ومن ناحية أخرى ، نحتاج إلى النظر فيها بسرعة.
في الواقع ، لم يتمكن النظام الحالي من تخزين كميات كبيرة من البيانات ، مما يمنح فقط أحدث المعلومات بسرعة. للحصول على القصة ، كان عليك إجراء استعلامات ثقيلة يدويًا.
- قد يهتم القراء لماذا تم استخدام العمود ClickHouse للحل؟العمود - بسبب تفاصيل العمل. غالبًا عند البحث عن معلومات في السجلات ، نحتاج إلى التصفية حسب الخادم أو المستخدم. عندما يتعلق الأمر بالقراءة من القرص ، تسمح لك قاعدة بيانات الأعمدة بتسريع القراءة عدة مرات (على خلفية السطر) ، ويتم تحقيق ذلك من خلال قراءة الأعمدة الضرورية فقط وضغط بتات أكثر كفاءة. بالإضافة إلى ذلك ، يقوم ClickHouse بموازاة الاستعلامات عبر النواة. على سبيل المثال على عكس قواعد البيانات التقليدية ، يمكنه تنفيذ استعلام واحد حتى على كتلة كاملة ، باستخدام جميع موارد المعالج والقرص تقريبًا. قواعد البيانات هذه ، خاصة المجانية ، ليست كثيرة جدًا ، إن وجدت. جاء ClickHouse بشكل جيد للغاية لمهمة تخزين السجلات.
ألاحظ أيضًا أنه قبل وصولي ، تم استخدام ClickHouse من قبل مسؤولي VK في مهمة متخصصة للغاية - كأداة خلفية لـ Grafana. هذا هو نظام لجمع البيانات والرسوم البيانية للخوادم. صحيح ، تم نشر عدد قليل من الخوادم مع ClickHouse ، وهذا في الواقع لم يكن متاحًا للمبرمجين.
بعد اتخاذ القرار باستخدام ClickHouse لتخزين السجلات ، ساعدت في إنشاء البنية التحتية المناسبة بحيث تكون مريحة ومفهومة للجميع.
- هل تستخدم VK حلولًا تابعة لجهات خارجية بكميات كبيرة (بالإضافة إلى تلك المذكورة أعلاه)؟تستخدم بالطبع. على سبيل المثال ، لينكس ، الذي يدور حوله كل هذا. لا تستهين بنصيب العمل الذي يقوم به نظام التشغيل من أجلنا.
من الغريب أن يتم استخدام PHP. لدينا محرك خاص يسمى KittenPHP ، والذي يترجم PHP إلى C ++ ، ولكن لعدد من المهام ، بما في ذلك الإنتاج ، يتم استخدام PHP العادي أيضًا.
يستخدمه nginx. حتى الآن ، MySQL متورط في بعض الأماكن ، لكننا نرفضها تدريجيًا - نستخدم قاعدة بيانات مكتوبة ذاتيًا.
- وكيف يتم بناء عملية التطوير؟لا أرى اختلافات كبيرة بين العمليات في VK وما هو مقبول في الصناعة. لدينا أداة تتبع الأخطاء ، والإدارات التي تتعامل مع وظائف مختلفة ، مسؤولة عن جزءها من المشروع ؛ هناك العدو المسؤول عن المكونات ، إلخ.
- بدلاً من النتائج ، هل من الممكن الإشارة إلى الاتجاه الذي تتطور فيه الإدارة التي تعمل فيها؟على حد علمي ، قبل القسم الذي أعمل فيه كان يتألف من 1-2 شخص.
وبدأنا في الانخراط في البنية التحتية بالشكل الذي يتم به الآن (ربما يبدو DevOps) منذ وقت ليس ببعيد. لذلك ، من السابق لأوانه الحديث عن الخطط - فنحن نحل المشاكل القائمة ، ولدينا حتى الآن ما يكفي من العمل. ثم سنرى.
سيخبرك يوري بالمزيد عن VK الداخلية ، باستخدام ClickHouse وتفاصيل أخرى في
حديثه في Siberian HighLoad ++ في 25-26 يونيو. سوف تكون مهتمًا بالتأكيد بهذه التقارير: